#
dd0a320c |
| 27-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: Always persist at least single extent table desc
Following changes are done in this patch: 1) _spdk_blob_serialize_extent_table now persists at least single extent page. When num_extent_pa
lib/blob: Always persist at least single extent table desc
Following changes are done in this patch: 1) _spdk_blob_serialize_extent_table now persists at least single extent page. When num_extent_pages == 0. 2) Minimum valid size of ET descriptor is even without extent_pages. This is a case when there are no EP, but we still want to persist num_clusters in ET. 3) Taking above points, redone the loop for serializing extent pages. 4) Make sure to mark blob dirty if any new extent pages were allocted.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I81dc6cf2de2722bb49927ed42f4b9f31292f78c5 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482847 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com>
show more ...
|
#
c177a3c8 |
| 27-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: remove assumption of empty cluster array with multiple EP
Changed assert checking if cluster array is allocated when loading extent pages. This is true only for the first extent page being
lib/blob: remove assumption of empty cluster array with multiple EP
Changed assert checking if cluster array is allocated when loading extent pages. This is true only for the first extent page being loaded, of course after that the cluster array can be already allocated.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I0f96294ede5a12ffd6bca73cbeadba8d94a35bac Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482857 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com>
show more ...
|
#
42109157 |
| 24-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add starting cluster index to extent page
Size of a blob (thus size of clusters array in mutable data) is known from extent table descriptor. Extent pages were read sequentially in order t
lib/blob: add starting cluster index to extent page
Size of a blob (thus size of clusters array in mutable data) is known from extent table descriptor. Extent pages were read sequentially in order they were placed in extent table. This meant that cluster array could have been filled up from beginning to end. Yet reading extent pages in any other order, would result in incorrect placement of clusters.
This patch adds first cluster index that is contained within each extent page. This will allow to read/write multiple extent pages in parallel, since we will know where in clusters array to put the cluster idxs.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ib6b9332111cd93f990d057dc60624152907dd87f Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482701 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
78257ab6 |
| 23-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: rename num_clusters_in_et to remaining_clusters_in_et
This is more adequate name, since this value if first read from Extent Table descriptor. Then decreased when iterating over entries in
lib/blob: rename num_clusters_in_et to remaining_clusters_in_et
This is more adequate name, since this value if first read from Extent Table descriptor. Then decreased when iterating over entries in extent table and extent pages are read.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ib188c524b8488b38d4de063a9970dcfdf49c9acd Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482600 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
#
b5380c37 |
| 22-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: replay the clusters from Extent Pages
When replaying md chain for a blob, extent table descriptor can be read. When it is present, all allocated pages it points to are now being put into e
lib/blob: replay the clusters from Extent Pages
When replaying md chain for a blob, extent table descriptor can be read. When it is present, all allocated pages it points to are now being put into extent_pages array in ctx. If multiple extent table descriptors are in single md chain, the array is expanded accordingly.
After replaying single md chain is done, replay extent pages starting from last one. Replaying extent pages, is similar to extent_rle in that each allocated cluster is claimed and number of free clusters in blobstore decreased.
When all extent pages are read, return to _spdk_bs_load_replay_md_cpl() for continuing replaying next valid md chain.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I4573226aff7d7b1bcdfd188518235c8d4b68a4c3 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/481621 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
#
5dc88c6c |
| 22-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: _spdk_bs_load_replay_md_parse_page() now takes only load ctx
_spdk_bs_load_replay_md_parse_page() is only used in replay path during blobstore load.
Next patch will expand the load ctx wi
lib/blob: _spdk_bs_load_replay_md_parse_page() now takes only load ctx
_spdk_bs_load_replay_md_parse_page() is only used in replay path during blobstore load.
Next patch will expand the load ctx with array of extent pages to be read. It is filled out when reading in-chain metadata of extent table descriptors.
Passing the load ctx here will make it simpler to fill out the array when processing extent table.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: If96e6670560c8c4a3610f33ece14c354d7d5da39 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482412 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
#
b5e99348 |
| 23-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: read extents during blob load
When EXTENT_TABLE descriptor is found when parsing metadata that means there can be extent pages to read.
If extent page was not allocated, number of cluster
lib/blob: read extents during blob load
When EXTENT_TABLE descriptor is found when parsing metadata that means there can be extent pages to read.
If extent page was not allocated, number of clusters can be increased depending on the num_clusters_in_et. Unallocated extent page contains either SPDK_EXTENTS_PER_EP or remainder of num_clusters_in_et worth of clusters. Depending which is less.
Added decreasing fo num_clusters_in_et to parsing extent pages as well.
While here, remove ctx->seq = seq assignment as that is done at beginning of blob load.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I57f54634b908ffb406f3e91e15841b7f36fd6de6 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/476429 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
#
d1f863ca |
| 21-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: write out extent pages before persisting metadata
Add new serialization of changed extent pages before persisting md.
Iterate over active extent pages (not array !). When they are allocat
lib/blob: write out extent pages before persisting metadata
Add new serialization of changed extent pages before persisting md.
Iterate over active extent pages (not array !). When they are allocated but not yet present on disk - write them out. All extent pages in clean mutable data are assumed to be written out already.
So there are two cases here: 1) Active mutable array is larger than clean All allocated extent pages should be written out. 2) Cluster allocation created new extent page Blob has to be thin provisioned and persist was called as part of cluster allocation. New extent page needs to be written out and EXTENT_TABLE allocated.
Iteration is done over num_extent_pages instead of extent_pages_array_size, to prevent writting out too many extent pages when size of blob was made smaller. The two values come back in sync at the end of persist either way.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I780819fd7f3c44e4cf5d71c188c642536d3cc320 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479851 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com>
show more ...
|
#
2bccb7c9 |
| 23-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: use use_extent_table instead of NULL from extent_page
Right now output from _spdk_bs_cluster_to_extent_page() is used to determine whether the exten_table is used at all. If NULL pointer w
lib/blob: use use_extent_table instead of NULL from extent_page
Right now output from _spdk_bs_cluster_to_extent_page() is used to determine whether the exten_table is used at all. If NULL pointer was returned this meant that extent table was not allocated, even if the code might suggest just checking if we overran the array.
To make it more obvious, the _spdk_bs_cluster_to_extent_page() now only asserts the extent_table_id.
blob->use_extent_table is now always used to determine the serialization path.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I9d2630645213539bae5cd1d72e5f9b878f53c2bc Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482599 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
#
95b478cc |
| 21-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: update single EXTENT_PAGE in place
This patch add single EXTENT_PAGE updates on cluster allocations.
There are three possible outcomes after inserting a cluster: 1) blob uses EXTENT_RLE
lib/blob: update single EXTENT_PAGE in place
This patch add single EXTENT_PAGE updates on cluster allocations.
There are three possible outcomes after inserting a cluster: 1) blob uses EXTENT_RLE Proceed to usual sync_md.
2) blob uses EXTENT_TABLE and extent page was not yet written out Update the active mutable data to contain the claimed md page, write out the EXTENT_PAGE and sync_md to update EXTENT_TABLE.
3) blob uses EXTENT_TABLE and extent page was previously written out Only serialize that single EXTENT_PAGE and write out the updated cluster map for it.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ia057b074ad1466c0e1eb9c186d09d6e944d93d03 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470015 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
Revision tags: v19.10.1, v19.10, v19.10-rc1 |
|
#
f4e58993 |
| 22-Oct-2019 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add EXTENT descriptor to blobs
Similar to EXTENT_RLE, this descriptor holds LBA of clusters. Difference is that EXTENT is kept in separate md pages, and only single EXTENT will be updated
lib/blob: add EXTENT descriptor to blobs
Similar to EXTENT_RLE, this descriptor holds LBA of clusters. Difference is that EXTENT is kept in separate md pages, and only single EXTENT will be updated on cluster allocation.
This patch adds the EXTENT processing, which is not used until following patch.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ifbac23db7ca3e7c8c91cee01018f20071f0d5160 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470014 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com>
show more ...
|
#
0dfe80c8 |
| 17-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: claim and insert extent pages
Added claiming the extent page. Which is then followed by updates in updates of mutable data on md thread.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@in
lib/blob: claim and insert extent pages
Added claiming the extent page. Which is then followed by updates in updates of mutable data on md thread.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: If511564f812685381c48924310105a4cb6f63cd1 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479850 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
cb44fa06 |
| 17-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add _spdk_bs_claim/release_md_page()
Functions to claim and release md pages were added.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I1c8ddc13c8a5806fb874e5c34da
lib/blob: add _spdk_bs_claim/release_md_page()
Functions to claim and release md pages were added.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I1c8ddc13c8a5806fb874e5c34dae2a327e1ff248 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482011 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
59f7f3f7 |
| 14-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: change extent pages array size on blob resize
With this patch extent pages array will change it size accordingly to size of the blob. Similar to clusters, only resizing up is done on blob
lib/blob: change extent pages array size on blob resize
With this patch extent pages array will change it size accordingly to size of the blob. Similar to clusters, only resizing up is done on blob resize. Shrinking is done on persisting the blob.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Id7f7c81efbd96af414fce9fc4045cbb476cc93a6 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479962 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com>
show more ...
|
#
eebbd951 |
| 03-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: pass Extent Page offset on cluster allocation
Extent Pages claim and insertion can be asynchronous when cluster allocation happens due to writing to a new cluster.
In such case lowest fre
lib/blob: pass Extent Page offset on cluster allocation
Extent Pages claim and insertion can be asynchronous when cluster allocation happens due to writing to a new cluster.
In such case lowest free cluster and lowest free md page is claimed, and message is passed to md_thread. Where inserting both into the arrays and md_sycn happens.
This patch adds parameters to pass the Extent Page offset in such case.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I46d8ace9cd5abc0bfe48174c2f2ec218145b9c75 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479849 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
f60b4a7e |
| 22-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add EXTENT_TABLE descriptor to blobs
Added new descriptor SPDK_MD_DESCRIPTOR_TYPE_EXTENT_TABLE.
Extent Table will hold md page offsets for new Extent Page descriptor. Entries in Extent Ta
lib/blob: add EXTENT_TABLE descriptor to blobs
Added new descriptor SPDK_MD_DESCRIPTOR_TYPE_EXTENT_TABLE.
Extent Table will hold md page offsets for new Extent Page descriptor. Entries in Extent Table are run-length encoded 0's as unallocated Extent Page descriptors.
Additionally total number of clusters is persisted in each Extent Table descriptor. This is because there is no guarantee that last Extent Page of a blob will be allocated. Even if number of Extents per Extent Page is always the same, Extent Page can hold less Extents than that.
This patch does not add more metadata on disk right now. Only added descriptor parsing/serialization and applicable fields to store it in run time.
Following patches are going to implement TODO's added in this patch.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Iac5d8f00ddfc655c507bc26d69d7adf8495074e9 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466920 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
#
2f8bdb3c |
| 17-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: remove _spdk_blob_serialize_extent_rle() goto
Lets get it removed ! :)
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I91b994a883a642d87ecc8c152c801b8a7676f33a Revi
lib/blob: remove _spdk_blob_serialize_extent_rle() goto
Lets get it removed ! :)
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I91b994a883a642d87ecc8c152c801b8a7676f33a Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482010 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
c33840b7 |
| 21-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add option to enable extent pages
This is an additional option that can be passed when creating a blob.
When opts->enable_extent_pages is set to false (current default), only EXTENT_RLE s
lib/blob: add option to enable extent pages
This is an additional option that can be passed when creating a blob.
When opts->enable_extent_pages is set to false (current default), only EXTENT_RLE should be persisted on sync. During blob load, when EXTENT_RLE is present in md, blob->extent_rle_found is set to true.
When opts->enable_extent_pages is set to true, only EXTENT_TABLE and EXTENT_PAGES should be persisted on sync. During blob load, when EXTENT_TABLE is present in md, blob->extent_table_found is set to true.
It is possible to find neither EXTENT_* descriptor when loading a blob. This means that blob length is 0 and EXTENT_RLE was supposed to be used. Yet none were persisted due to lack of clusters. In such case blob->use_extent_table is set to true after finishing blob load.
When parsing metadata ends, if extent_table_found is set - then support for extent_table is enabled. All other cases disable it.
At this time path for Extent Pages is not implemented, so it should not be used. Later in the series, it will become the default path for serialization.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I2146da6130a0645e686ab02a3b5d2d86a7d35a1f Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479853 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
#
1fdee03c |
| 16-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: split loading next md_chain to separate function
Replaying md through _spdk_bs_load_replay_md_cpl() starts with md page 0 in search of first valid md page starting a chain for particular b
lib/blob: split loading next md_chain to separate function
Replaying md through _spdk_bs_load_replay_md_cpl() starts with md page 0 in search of first valid md page starting a chain for particular blob. When it is found, next pages read are from the current pages `next` page - next in chain. After whole chain is read, it goes back to first page in chain and starts search for next valid chain from there.
This patch adds separation between reading particular chain, and moving to the next one. Moving on to the next one happens in _spdk_bs_load_replay_md_chain_cpl().
Further in the series, extent pages will be added in the metadata. Those are not within any particular blobs chain of metadata, but spread out over the md region.
It is not enough to read all md and read extent pages. In case of power failure, only extent pages known to be valid are the ones which are pointed to by some valid md chain.
In futher patches, a step will be added after reading particular valid md chain to go read extent pages pointed by it.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I6e7cd64af66ce5db0abd2ad5962d604ac2b30994 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/481900 Community-CI: SPDK CI Jenkins <sys_sgci@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
#
bb25821c |
| 17-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: move finishing unload to _spdk_bs_unload_finish()
Moved finishing of unloading to separate function, which is now called on every failure and success when unloading the blobstore.
Signed-
lib/blob: move finishing unload to _spdk_bs_unload_finish()
Moved finishing of unloading to separate function, which is now called on every failure and success when unloading the blobstore.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I34539b78c5cc63a6fe5891014cba89b9eb62d4df Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482009 Community-CI: SPDK CI Jenkins <sys_sgci@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
#
f7bd1e1e |
| 17-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: check bserrno on each step of bs_load
Before this change it was possible to fail at writing out some of used md pages. bserrno output of those was not verified.
This patch adds it at ever
lib/blob: check bserrno on each step of bs_load
Before this change it was possible to fail at writing out some of used md pages. bserrno output of those was not verified.
This patch adds it at every step.
With that two function don't need (and never needed) to pass the bserrno: _spdk_bs_load_write_used_md() spdk_bs_load_complete()
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I1a61763f03665ba1b00e5949ef0cf37eefaaf08f Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482008 Community-CI: SPDK CI Jenkins <sys_sgci@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
#
cf5df9b4 |
| 17-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: remove seq argument from _spdk_bs_load_ctx_fail()
This is simplification of load path. seq is save in ctx already, no need to pass it to the function.
Signed-off-by: Tomasz Zawadzki <toma
lib/blob: remove seq argument from _spdk_bs_load_ctx_fail()
This is simplification of load path. seq is save in ctx already, no need to pass it to the function.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ief0ddc1826c461adbad71ba1a3897c510ec2a971 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482007 Community-CI: SPDK CI Jenkins <sys_sgci@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
7167f8d3 |
| 17-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: save sequence immidietly on bs_load/unload
Assigning seq to ctx was done very late in the process. To keep future functions lean and without the seq, it is assigned immidietly after starti
lib/blob: save sequence immidietly on bs_load/unload
Assigning seq to ctx was done very late in the process. To keep future functions lean and without the seq, it is assigned immidietly after starting.
Only functions in load path that require separate seq argument are those passed directly to read/write device operations. Rest of them can just use spdk_bs_load_ctx.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I2bd610dc4c7b4a7b0c3de92391922475c514326a Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/481899 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
#
bbbe586b |
| 16-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: make passing ctx more explicit
No functional change is done in this patch.
Most of the functions already translate cb_arg to ctx and use it, but then just pass cb_arg. This will make it c
lib/blob: make passing ctx more explicit
No functional change is done in this patch.
Most of the functions already translate cb_arg to ctx and use it, but then just pass cb_arg. This will make it clear that it is ctx that is passed around.
Along with simplifying some of changes in next patch, where arguments of functions will be cut down just to the ctx.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: If7d8ed38dc92175d867a2231ab2ebd4f2499efcd Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482006 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
#
994d4c38 |
| 08-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: move generation of metadata into separate function
This patch creates new _spdk_blob_persist_generate_new_md() function that is responsible for generation of new metadata from current stat
lib/blob: move generation of metadata into separate function
This patch creates new _spdk_blob_persist_generate_new_md() function that is responsible for generation of new metadata from current state of blob.
Functionality so far is unchanged.
This is preparation for later in the series where new extent pages will be written out to disk before metadata pages.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I84158cb8316a881a6170ac37e151a60aaa9d7369 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479848 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|