From: Sage Weil Date: Tue, 2 Nov 2021 15:41:53 +0000 (-0400) Subject: Merge PR #42762 into master X-Git-Tag: v17.1.0~535 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=5f4a1c836860a1475f655282aa20fa3690606c52;p=ceph-ci.git Merge PR #42762 into master * refs/pull/42762/head: ceph_test_objectstore: skip BlueStoreUnshareBlobTest with SMR os/bluestore: debug ExtentMap::update() os/bluestore: _txc_create inside of alloc_and_submit_lock os/bluestore: fix cleaner race with collection removal os/bluestore: add missing ' ' to LruOnodeCacheShare _[un]pin os/bluestore: use simpler map<> to track (onode, zone) -> offset os/bluestore: avoid casting zoned implementations again os/bluestore/ZonedFreelistManager: remove sanity checks os/bluestore/ZonedAllocator: fix allocate() search os/bluestore: drain transactions on cleaner zone finish os/bluestore/ZonedFreelistManager: simplify freelist merge update vs zone reset os/bluetore: configurable sleep period for cleaner blk/zoned: make discard a no-op os/bluestore/ZonedAllocator: count sequential only as 'free' os/bluestore: expect smr fields IFF device is smr ceph_test_objectstore: Test for fixing write pointer ceph_test_objectstore: complain if SMR support not compiled in test/objectstore/run_smr_bluestore_test.sh os/bluestore/ZonedAllocator: handle alloc/release spanning zones os/bluestore: simple cleaner os/bluestore: be smarter about picking a zone to clean os/bluestore: avoid writes to cleaning zone os/bluestore/HybridAllocator: whitespace in debug output os/bluestore: give conventional region of SMR to bluefs os/bluestore: separate alloc pointer from shared_alloc.a test/objectstore/run_smr_bluestore_test.sh ceph_test_objectstore: skip tests that don't work on SMR os/bluestore: disable cleaner thread until it is implemented os/bluestore: fsck verify zone refs os/bluestore: include object in zone ref keys os/bluestore: refactor object key helpers a bit ceph_test_objectstore: skip failing tests on SMR os/bluestore: report mismatch write pointer during fsck os/bluestore: simplify zone to clean selection ceph_test_objectstore: add trivial fsck test os/bluestore: fsck smr allocations (verify num_dead_bytes, alloc past write pointer) os/bluestore: duplicate zone refs when cloning os/bluestore: correct zoned freelist when device write pointers are ahead os/bluestore/ZonedFreelistManager: whitespace os/bluestore: fix startup vs device write pointers blk/zoned: add get_zones() to fetch write pointers os/bluestore: use 64 bit values for zone_state_t os/bluestore: reimplement zone backrefs os/bluestore: fix smr allocator init os/bluestore: do not use null freelist with SMR blk/zones: implement HMSMRDevice has KernelDevice child os/bluestore: fix/simplify zoned_cleaner thread start error handling os/bluestore: properly reset zoned allocator on startup os/bluestore: force prefer_deferred_size=0 for smr os/bluestore: drop SMR 64K min_alloc_size restriction os/bluestore/ZonedAllocator: less verbose os/bluestore/ZonedAllocator: simplify debug output prefix os/bluestore/ZonedAllocator: be consistent with hex debug output os/bluestore/ZonedAllocator: whitespace blk/zoned: remove dead VDO code blk/zoned: add reset_all_zones() blk/zoned: print error during init os/bluestore: adjust allocator+freelist interfaces for smr params os/bluestore: select 'zoned' freelistmanager during mkfs, not mount Reviewed-by: Igor Fedotov --- 5f4a1c836860a1475f655282aa20fa3690606c52 diff --cc src/os/bluestore/BlueStore.cc index bab1b77e310,d87764c00b7..0a215eefefd --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@@ -6728,13 -6919,25 +6920,29 @@@ int BlueStore::mkfs( } { bufferlist bl; - bl.append(stringify(OMAP_PER_PG)); + if (cct->_conf.get_val("bluestore_debug_legacy_omap")) { + bl.append(stringify(OMAP_BULK)); + } else { + bl.append(stringify(OMAP_PER_PG)); + } t->set(PREFIX_SUPER, "per_pool_omap", bl); } + + #ifdef HAVE_LIBZBD + if (bdev->is_smr()) { + { + bufferlist bl; + encode((uint64_t)zone_size, bl); + t->set(PREFIX_SUPER, "zone_size", bl); + } + { + bufferlist bl; + encode((uint64_t)first_sequential_zone, bl); + t->set(PREFIX_SUPER, "first_sequential_zone", bl); + } + } + #endif + ondisk_format = latest_ondisk_format; _prepare_ondisk_format_super(t); db->submit_transaction_sync(t);