Revision tags: v20.04 |
|
#
887531f6 |
| 27-Apr-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: provide better log on blob_load failures
Added blobid and metadata page number to the log. Previously only number within particular blobs md chain was displayed.
Signed-off-by: Tomasz Zaw
lib/blob: provide better log on blob_load failures
Added blobid and metadata page number to the log. Previously only number within particular blobs md chain was displayed.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I8e881c5824c9d2eadca9f3ac8ee2ac9ffc0e5cae Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2058 Community-CI: Mellanox Build Bot 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>
show more ...
|
#
7f007b44 |
| 27-Apr-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: clear blobid and md_page on blob_create failure
Blobid and md_page is claimed as first step of blob creation. If blob creation failed, both should returned to be used by other blobs.
This
lib/blob: clear blobid and md_page on blob_create failure
Blobid and md_page is claimed as first step of blob creation. If blob creation failed, both should returned to be used by other blobs.
This caused multiple reports of: "Metadata page 1 crc mismatch" when loading blobstore due to md_pages not actually containing the written out md pages.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I495452c578d879f749281cebf8975eb2c1c7f79a Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2057 Community-CI: Mellanox Build Bot 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>
show more ...
|
Revision tags: v20.04-rc1 |
|
#
b3348624 |
| 06-Apr-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
blob: add pages_per_cluster_shift
Operation of locating right lba from cluster map is done on I/O path. Instead of division and multiplication, perform bit shift operation.
Bit shift is only used w
blob: add pages_per_cluster_shift
Operation of locating right lba from cluster map is done on I/O path. Instead of division and multiplication, perform bit shift operation.
Bit shift is only used when pages per cluster is power of 2.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ic3ed7ec0a82867a8a4bc6391785b9d40c800aacb Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1724 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
#
a6587c7e |
| 07-Apr-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
blob: inline _spdk_blob_calculate_lba_and_lba_count()
This is called on hot path for I/O, inline it.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Iec40033eac19f2c66c2984623
blob: inline _spdk_blob_calculate_lba_and_lba_count()
This is called on hot path for I/O, inline it.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Iec40033eac19f2c66c2984623acb5e157a5ffe05 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1723 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
#
ad7fdd12 |
| 07-Apr-2020 |
Seth Howell <seth.howell@intel.com> |
lib/blob: remove spdk_ from non-public APIs
We have an unofficial naming convention that the spdk_ namespace is reserved for public API functions only. This patch is attempting to bring the blob lib
lib/blob: remove spdk_ from non-public APIs
We have an unofficial naming convention that the spdk_ namespace is reserved for public API functions only. This patch is attempting to bring the blob library into compliance with that naming convention.
Signed-off-by: Seth Howell <seth.howell@intel.com> Change-Id: Ie298e41d1b741dae01744826c208378ee60f9d0a Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1700 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@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> Community-CI: Broadcom CI
show more ...
|
#
c7325e3f |
| 02-Apr-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: assert that md_page is not extent page
Contidion previous to this should already verify that md page is not an extent page.
All extent pages are not part of the chain (sequence_num == 0),
lib/blob: assert that md_page is not extent page
Contidion previous to this should already verify that md page is not an extent page.
All extent pages are not part of the chain (sequence_num == 0), and their location (ctx->cur_page) cannot be the root of md chain (page->id).
Yet during development it could appen, so adding assert to verify further that the md page is not extent page.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I6d5dc2ae965f8f9a388cd1c8e186145f8ca91db4 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1667 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>
show more ...
|
#
955c58fa |
| 27-Mar-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: change replay of extent pages to batching
Before this patch reading out the extent pages during blobstore replay was serialized. Only issuing reads for next extent page when previous opera
lib/blob: change replay of extent pages to batching
Before this patch reading out the extent pages during blobstore replay was serialized. Only issuing reads for next extent page when previous operation finished.
This was done by continously calling _spdk_bs_load_replay_extent_page_cpl() and decreasing ctx->num_extent_pages.
This patch changes spdk_bs_sequence_* to spdk_bs_batch_*. All the reads are submitted at once, and only when all of them finish we proceed to next valid md chain.
Goal of this change is improving efficiency and readability.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I807cdb98166e04706fedb494363f5776e3151827 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1540 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>
show more ...
|
#
22dc6254 |
| 27-Mar-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add extent_pages to load ctx
This variable currently holds single extent page.
Further patch will utilize it to use multiple.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> C
lib/blob: add extent_pages to load ctx
This variable currently holds single extent page.
Further patch will utilize it to use multiple.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: If86ffd57cecf5d3bfd0812a767c784d7bf503fb6 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1538 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>
show more ...
|
#
f03586b2 |
| 27-Mar-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: rename extent_pages to extent_page_num in load ctx
This field does not hold actual pages, but just md page numbers which hold the extent pages.
Rename as prepartation to adding new one th
lib/blob: rename extent_pages to extent_page_num in load ctx
This field does not hold actual pages, but just md page numbers which hold the extent pages.
Rename as prepartation to adding new one that will hold actual extent pages.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I1fb85a58c92a93b968e1fad22e421252399e9281 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1537 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>
show more ...
|
Revision tags: v20.01.1 |
|
#
e0fb369c |
| 13-Mar-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add more error paths on blob_persist
This patch adds more ways to back off when parts of blob persist fails. Otherwise the process would proceed as if nothing happened.
Signed-off-by: Tom
lib/blob: add more error paths on blob_persist
This patch adds more ways to back off when parts of blob persist fails. Otherwise the process would proceed as if nothing happened.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I7cff73e1dc3066d0c822d1e3dac4bd35e27cd54a Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1263 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
597c91ab |
| 20-Mar-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: always add back the snapshot if delete fails
After opening the blob for deletion, in _spdk_bs_delete_open_cpl(), the blob is removed from list of blobs in blobstore. This is to prevent fut
lib/blob: always add back the snapshot if delete fails
After opening the blob for deletion, in _spdk_bs_delete_open_cpl(), the blob is removed from list of blobs in blobstore. This is to prevent future _spdk_blob_lookup()s from referencing blob while it is deleted.
In usual blob deletion path, next step is proceeding with deletion of the blob by reducing its size to 0 and syncing the blob. Changes from this point forward are persisted.
Meanwhile in special case of deleting snapshot which has single clone on it, before above occurs additional steps are performed. Each of the blobs are opened and their attributes changed. Failures on those steps are fully recoverable on any errors, and in such case blob should be added back to the bs list of blobs.
Original code had condition on how many references there were to blob being deleted, which is incorrect. Any error on that path should clean up after itself (revert attributes and close blobs) and re-add the blob.
This change is tested with blob_delete_snapshot_power_failure() UT, by adding error path in persist - which triggers error in aforementioned blob delete code path.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I926e7cbf3cb86170c69f31231399535859f290dd Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/985 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>
show more ...
|
#
9dd7c9f1 |
| 21-Feb-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: Set thin_provision back when sync fails on snapshot creation
When creating snapshot, 'original' blob will end up being a thin provisioned clone. Before that first thin_provisioned 'newblob
lib/blob: Set thin_provision back when sync fails on snapshot creation
When creating snapshot, 'original' blob will end up being a thin provisioned clone. Before that first thin_provisioned 'newblob' is created during this process.
If the first md sync for 'newblob' fails, it means that only valid references to clusters are still only present in 'original' blob. The 'newblob' can be safely cleaned up.
Unfortunetly 'newblob' inherited some of 'original' blob properties before sync. Cluster maps were already swaped in current cleanup code. But during blob close of 'newblob' - persist blob code expects clusters to be 0 only for thin_provisioned blobs. If original blob was thick, then it triggers an assert within persist code.
This patch makes sure to set thin_provision to 'newblob', to align with its creation.
Added asserts to verify that clusters maps are 0's, which should be the case as I/O to origblob is frozen.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I5420617792aefe8a3ef4e5989b2056504cdd1850 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1394 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>
show more ...
|
#
c65b591b |
| 21-Feb-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: move sequential extent page write to the caller
This will help with making the _spdk_blob_persist_write_extent_pages() batch all writes of extent pages.
No functional change occurs with t
lib/blob: move sequential extent page write to the caller
This will help with making the _spdk_blob_persist_write_extent_pages() batch all writes of extent pages.
No functional change occurs with this patch, this is just refactor for future change.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I8c93b1d6473db660f7ad5e04c8ec9f3331b2055c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/986 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 ...
|
#
28a44891 |
| 04-Mar-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add error path on persisting dirty bs
super->clean value signifies if blobstore was unloaded cleanly. If it was not, then during bs_load the _spdk_bs_recover() procedure if called.
Meanwh
lib/blob: add error path on persisting dirty bs
super->clean value signifies if blobstore was unloaded cleanly. If it was not, then during bs_load the _spdk_bs_recover() procedure if called.
Meanwhile bs->clean is always set to 1 after load, causing very first blob_persist to also re-write super block with the super->clean set to 0. To signify that md has changed and possibly trigger the recovery if clean bs unload does not occur. When the re-write of super block succeeds the bs->clean is set to 0, because further re-writes of super block are not needed on next blob persist.
This patch resolves issue when: 1) reading super block fails - execution should backoff, to prevent writing an empty buffer as super block ! 2) writing super->clean = 0 to the super block fails - execution again should fail, and bs->clean should not be set to 0. It will cause next persist to attempt re-write again.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ia07cc5c6c107310059b50886edb7283c176b9169 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1164 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>
show more ...
|
#
0f515737 |
| 05-Mar-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: merge EP of a clone when deleting a snapshot
In general it is not possible to delete snapshot when there are clones on top of it. There is special case when there is just a single clone on
lib/blob: merge EP of a clone when deleting a snapshot
In general it is not possible to delete snapshot when there are clones on top of it. There is special case when there is just a single clone on top that snapshot.
In such case the clone is 'merged' with snapshot. Unallocated clusters in clone, are filled with the ones in snapshot (if allocated there).
Similar behavior should have occurred for extent pages.
This patch adds the implementation for moving EP from snapshot to clone along with UT.
The UT exposes the issue by allowing delete_blob to proceed beyond just unrecoverable snapshot blob.
Fixes #1291
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ib2824c5737021f8e8d9b533a4cd245c12e6fe9fa Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1163 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>
show more ...
|
#
2731f526 |
| 20-Feb-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add md page parameter to _spdk_bs_load_replay_md_parse_page()
Further part of the series will hold array of md pages in the ctx. Callers of _spdk_bs_load_replay_md_parse_page() will make s
lib/blob: add md page parameter to _spdk_bs_load_replay_md_parse_page()
Further part of the series will hold array of md pages in the ctx. Callers of _spdk_bs_load_replay_md_parse_page() will make select which page to parse.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I3fb70660672ba74bdb338eb1233409103903b215 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/983 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
show more ...
|
#
2a51c755 |
| 20-Feb-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: use common pointer to md page in load replay path
This is refactoring change for future patches. struct spdk_bs_load_ctx will contain array of pages instead of single one. Having to change
lib/blob: use common pointer to md page in load replay path
This is refactoring change for future patches. struct spdk_bs_load_ctx will contain array of pages instead of single one. Having to change just single line for selection of page will make it easier to read next patches in series.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: If3dc1e7da7e61c7b4866307d859e55131a32d38b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/982 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
show more ...
|
#
030be573 |
| 10-Feb-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: queue up blob persists when one already is ongoing
It is possible for multiple blob persists to affect one another. Either by blob->state changes or blob mutable data. Safe way to prevent
lib/blob: queue up blob persists when one already is ongoing
It is possible for multiple blob persists to affect one another. Either by blob->state changes or blob mutable data. Safe way to prevent that is to queue up the persists.
Next persist will be executed only after previous one completes.
Fixes #1170 Fixes #960
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Iaf95d9238510100b629050bc0d5c2c96c982a60c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/776 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
show more ...
|
#
dd80edb2 |
| 12-Feb-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: move starting persist to separate function
_spdk_blob_persist_check_dirty() function will be called in subsequent patch at the end of persist in _spdk_blob_persist_complete() to proceed wi
lib/blob: move starting persist to separate function
_spdk_blob_persist_check_dirty() function will be called in subsequent patch at the end of persist in _spdk_blob_persist_complete() to proceed with any queued up persists. Please see following patch for this.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ieeb334e23cde329743647f728e70dd60333c224a Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/872 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
show more ...
|
Revision tags: v20.01 |
|
#
29bd5020 |
| 29-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: add invalid flag for extent table
With recent changes to extent on-disk metadata format, new format (Extent Pages) is not backwards compatible. Meanwhile old format (Extent RLE) is backwar
lib/blob: add invalid flag for extent table
With recent changes to extent on-disk metadata format, new format (Extent Pages) is not backwards compatible. Meanwhile old format (Extent RLE) is backwards compatible with older SPDK applications.
Summing up: Blobstore created pre SPDK 20.01 can only use Extent RLE. Blobstore created starting with SPDK 20.01 can use both, Extent Pages and Extent RLE specified by use_extent_table opts.
When use_extent_table is set to true, invalid flag for it is set. SPDK application pre 20.01, will not load such blob.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: If14ebd03f19eb581d71dcb46191e099336655189 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/483220 Community-CI: SPDK CI Jenkins <sys_sgci@intel.com> 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: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
show more ...
|
Revision tags: v20.01-rc1 |
|
#
bba0f040 |
| 27-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: fix uninitialized variable for non-debug builds
This was observed after running nighly tests on previous patch. As part of it, autopackage.sh compiles SPDK without debug flag set. Exposing
lib/blob: fix uninitialized variable for non-debug builds
This was observed after running nighly tests on previous patch. As part of it, autopackage.sh compiles SPDK without debug flag set. Exposing the uninitialized var here.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Iedb1641f3c0d4a21f293c81cd4fcf35c6d1c7ae5 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482893 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 ...
|
#
12d14041 |
| 23-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: set default use_extent_table to true
Extent table and extent page descriptors are now set to be default way clusters are serialized on disk.
With this patch UT are ran with and without ex
lib/blob: set default use_extent_table to true
Extent table and extent page descriptors are now set to be default way clusters are serialized on disk.
With this patch UT are ran with and without extent table.
Changed two asserts in test, since amount is dependent on which type of serialization is used.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ica58fce6a4effd014d7dd40ee26edd0fa3196d0f Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/481901 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 ...
|
#
5d505337 |
| 27-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: fix inserting extent pages
ctx->extent_page signifies if page was allocated for insertion.
1) It is possible for a thread to claim extent page on its own thread, and put it in ctx->extent
lib/blob: fix inserting extent pages
ctx->extent_page signifies if page was allocated for insertion.
1) It is possible for a thread to claim extent page on its own thread, and put it in ctx->extent_page. If conflicting thread allocates another ctx->extent_page, then it should be freed. This does not mean failure to insert cluster. As different threads could have been trying to allocate different clusters, so condition on line 6716 does not cover it. If so then it shouldn't be an issue to release the claimed ctx->extent_page and proceed with updating the extent page which originally won the race. NOTE: if clusters were conflicting, then extent_page is freed in _spdk_blob_insert_cluster_cpl().
2) At this point of _spdk_blob_insert_cluster_msg() we already verified that there already is extent page allocated at "*extent_page". In such case ctx->extent_page will be 0, and should not be used.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Id5b57c88248890eee60d2e7dbecbd984c98b561b Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482867 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
#
1dd8c57a |
| 27-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: fix clearing cluser array on EP load
sz is set to number of clusters that should be have been in particular unallocated EP (remaining_clusters_in_et up to SPDK_EXTENTS_PER_EP).
The cluste
lib/blob: fix clearing cluser array on EP load
sz is set to number of clusters that should be have been in particular unallocated EP (remaining_clusters_in_et up to SPDK_EXTENTS_PER_EP).
The cluster array should be set to 0 only in region between original size (cluster_array_size) and new total size (active.num_clusters). It was incorrectly using sz in the memset.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ic43e89c17d53e9529e3ed0349aeb4fb7dc6593f2 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482858 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 ...
|
#
8b6df6fb |
| 27-Jan-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
lib/blob: count clusters starting from 0 when parsing EP
Previously part of function assumed that cluster count 1)means number of clusters in EP and another 2) that it is following the active.num_cl
lib/blob: count clusters starting from 0 when parsing EP
Previously part of function assumed that cluster count 1)means number of clusters in EP and another 2) that it is following the active.num_clusters (akin to extent_rle).
This was incosistent and showed when using multiple extent pages to serialize metadata. This patch changes it to only go with 1), so it is clear that it means number clusters within particular EP.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I155104cabc127ed47df04434032fb01e08948e13 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482848 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 ...
|