numam-spdk/lib
Tomasz Zawadzki 7f139e549b lib/blob: extent_page shall never occupy md page 0
Search for md_page to be used as extent page started
from 0, which is completely valid md_page.

This page can be free when for example blob with id 0
was deleted and some other requested a new page for extent.

There are already existing blobs that have extents
pointing to 0, which means unallocated.
Unfortunetly it means 0 can never mean md page 0.
If that already occured for someone, this extent page was already
lost during blob/bs reload and nothing can be done.

With this in mind following assumptions are made for extent pages:
- 0 means unallocated extent page
- UINT32_MAX means we ran out of md pages, and should not be persisted
- [NEW] extent page can never occupy md page 0

That last one is new addition in this patch.
bs_allocate_cluster will now always try to find md page from 1 or higher.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: Ia17ce5bbca2fab4fb4487e4e263f3a0aa120bf17
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4314
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-10-16 08:15:16 +00:00
..
accel lib/accel: change task alloc from global mempool->per chan list 2020-08-21 08:25:04 +00:00
bdev bdev/part: Add spdk_bdev_part_base_construct_ext() to pass bdev_name 2020-10-16 08:14:34 +00:00
blob lib/blob: extent_page shall never occupy md page 0 2020-10-16 08:15:16 +00:00
blobfs log: remove internal log.h header 2020-10-15 08:23:39 +00:00
conf lib/conf: allow multiple sections with same name 2020-07-22 12:24:08 +00:00
env_dpdk env: spdk_vtophys buffer argument is now const 2020-10-13 07:48:05 +00:00
env_ocf log: remove internal log.h header 2020-10-15 08:23:39 +00:00
event log: remove internal log.h header 2020-10-15 08:23:39 +00:00
ftl log: remove internal log.h header 2020-10-15 08:23:39 +00:00
idxd log: remove internal log.h header 2020-10-15 08:23:39 +00:00
ioat log: remove internal log.h header 2020-10-15 08:23:39 +00:00
iscsi lib/log: do not use spdk_log_get_flag() in macro for log flags 2020-10-16 08:14:59 +00:00
json log: remove internal log.h header 2020-10-15 08:23:39 +00:00
jsonrpc log: remove internal log.h header 2020-10-15 08:23:39 +00:00
log log: remove internal log.h header 2020-10-15 08:23:39 +00:00
lvol log: remove internal log.h header 2020-10-15 08:23:39 +00:00
nbd log: remove internal log.h header 2020-10-15 08:23:39 +00:00
net log: remove internal log.h header 2020-10-15 08:23:39 +00:00
notify log: remove internal log.h header 2020-10-15 08:23:39 +00:00
nvme lib/nvme: Hold ctrlr->ctrlr_lock before calling nvme_ctrlr_fail 2020-10-15 08:24:47 +00:00
nvmf nvmf_rpc: remove a redundant '\n' 2020-10-15 08:24:55 +00:00
rdma log: remove internal log.h header 2020-10-15 08:23:39 +00:00
reduce log: remove internal log.h header 2020-10-15 08:23:39 +00:00
rocksdb test/blobfs: Drop .ini config in favor of json 2020-10-12 08:26:20 +00:00
rpc RPC: update the error message for current RPC state 2020-07-31 08:21:37 +00:00
rte_vhost read_fd_message: distinguish prints of log message 2020-05-25 09:08:00 +00:00
scsi log: remove internal log.h header 2020-10-15 08:23:39 +00:00
sock log: remove internal log.h header 2020-10-15 08:23:39 +00:00
thread log: remove internal log.h header 2020-10-15 08:23:39 +00:00
trace log: remove internal log.h header 2020-10-15 08:23:39 +00:00
ut_mock mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
util util: add spdk_bit_pool 2020-09-15 07:12:44 +00:00
vhost log: remove internal log.h header 2020-10-15 08:23:39 +00:00
virtio log: remove internal log.h header 2020-10-15 08:23:39 +00:00
vmd log: remove internal log.h header 2020-10-15 08:23:39 +00:00
Makefile event: move log_rpc contents to event library 2020-09-25 11:43:42 +00:00