Skip to content

Commit 188739f

Browse files
committed
crimson/os/seastore/cached_extent: merge is_clean() and is_dirty() as has_delta()
The original names were misleading because they don't correspond to CLEAN and DIRTY states. Signed-off-by: Yingxin Cheng <[email protected]>
1 parent 9c9e4e6 commit 188739f

File tree

8 files changed

+41
-49
lines changed

8 files changed

+41
-49
lines changed

src/crimson/os/seastore/btree/fixed_kv_btree.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,9 +1237,7 @@ class FixedKVBtree {
12371237
// This can only happen during init_cached_extent
12381238
// or when backref extent being rewritten by gc space reclaiming
12391239
if (!ret->is_pending() && !ret->is_linked()) {
1240-
assert(ret->is_dirty()
1241-
|| (is_backref_node(ret->get_type())
1242-
&& ret->is_clean()));
1240+
assert(ret->has_delta() || is_backref_node(ret->get_type()));
12431241
init_internal(*ret);
12441242
}
12451243
auto meta = ret->get_meta();
@@ -1322,9 +1320,7 @@ class FixedKVBtree {
13221320
// This can only happen during init_cached_extent
13231321
// or when backref extent being rewritten by gc space reclaiming
13241322
if (!ret->is_pending() && !ret->is_linked()) {
1325-
assert(ret->is_dirty()
1326-
|| (is_backref_node(ret->get_type())
1327-
&& ret->is_clean()));
1323+
assert(ret->has_delta() || is_backref_node(ret->get_type()));
13281324
init_leaf(*ret);
13291325
}
13301326
auto meta = ret->get_meta();

src/crimson/os/seastore/cache.cc

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -739,7 +739,7 @@ void Cache::add_extent(CachedExtentRef ref)
739739
void Cache::mark_dirty(CachedExtentRef ref)
740740
{
741741
assert(ref->get_paddr().is_absolute());
742-
if (ref->is_dirty()) {
742+
if (ref->has_delta()) {
743743
assert(ref->primary_ref_list_hook.is_linked());
744744
return;
745745
}
@@ -753,7 +753,7 @@ void Cache::add_to_dirty(
753753
CachedExtentRef ref,
754754
const Transaction::src_t* p_src)
755755
{
756-
assert(ref->is_dirty());
756+
assert(ref->has_delta());
757757
assert(!ref->primary_ref_list_hook.is_linked());
758758
ceph_assert(ref->get_modify_time() != NULL_TIME);
759759
assert(ref->is_fully_loaded());
@@ -785,7 +785,7 @@ void Cache::remove_from_dirty(
785785
CachedExtentRef ref,
786786
const Transaction::src_t* p_src)
787787
{
788-
assert(ref->is_dirty());
788+
assert(ref->has_delta());
789789
ceph_assert(ref->primary_ref_list_hook.is_linked());
790790
assert(ref->is_fully_loaded());
791791
assert(ref->get_paddr().is_absolute() ||
@@ -817,13 +817,13 @@ void Cache::replace_dirty(
817817
CachedExtentRef prev,
818818
const Transaction::src_t& src)
819819
{
820-
assert(prev->is_dirty());
820+
assert(prev->has_delta());
821821
ceph_assert(prev->primary_ref_list_hook.is_linked());
822822
assert(prev->is_fully_loaded());
823823

824824
// Note: next might not be at extent_state_t::DIRTY,
825825
// also see CachedExtent::is_stable_writting()
826-
assert(next->is_dirty());
826+
assert(next->has_delta());
827827
assert(!next->primary_ref_list_hook.is_linked());
828828
ceph_assert(next->get_modify_time() != NULL_TIME);
829829
assert(next->is_fully_loaded());
@@ -849,7 +849,7 @@ void Cache::clear_dirty()
849849
{
850850
for (auto i = dirty.begin(); i != dirty.end(); ) {
851851
auto ptr = &*i;
852-
assert(ptr->is_dirty());
852+
assert(ptr->has_delta());
853853
ceph_assert(ptr->primary_ref_list_hook.is_linked());
854854
assert(ptr->is_fully_loaded());
855855

@@ -873,7 +873,7 @@ void Cache::remove_extent(
873873
assert(ref->is_valid());
874874
assert(ref->get_paddr().is_absolute() ||
875875
ref->get_paddr().is_root());
876-
if (ref->is_dirty()) {
876+
if (ref->has_delta()) {
877877
remove_from_dirty(ref, p_src);
878878
} else if (!ref->is_placeholder()) {
879879
assert(ref->get_paddr().is_absolute());
@@ -907,12 +907,12 @@ void Cache::commit_replace_extent(
907907
if (is_root_type(prev->get_type())) {
908908
assert(prev->is_stable_clean()
909909
|| prev->primary_ref_list_hook.is_linked());
910-
if (prev->is_dirty()) {
910+
if (prev->has_delta()) {
911911
// add the new dirty root to front
912912
remove_from_dirty(prev, nullptr/* exclude root */);
913913
}
914914
add_to_dirty(next, nullptr/* exclude root */);
915-
} else if (prev->is_dirty()) {
915+
} else if (prev->has_delta()) {
916916
replace_dirty(next, prev, t_src);
917917
} else {
918918
lru.remove_from_lru(*prev);
@@ -1548,7 +1548,7 @@ record_t Cache::prepare_record(
15481548
// exist mutation pending extents must be in t.mutated_block_list
15491549
add_extent(i);
15501550
const auto t_src = t.get_src();
1551-
if (i->is_dirty()) {
1551+
if (i->has_delta()) {
15521552
add_to_dirty(i, &t_src);
15531553
} else {
15541554
touch_extent(*i, &t_src, t.get_cache_hint());
@@ -1795,7 +1795,7 @@ void Cache::complete_commit(
17951795
t, is_inline, *i);
17961796
i->invalidate_hints();
17971797
add_extent(i);
1798-
assert(!i->is_dirty());
1798+
assert(!i->has_delta());
17991799
const auto t_src = t.get_src();
18001800
touch_extent(*i, &t_src, t.get_cache_hint());
18011801
i->complete_io();

src/crimson/os/seastore/cache.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ class Cache : public ExtentTransViewRetriever {
222222
ceph_assert(ret->get_type() == type);
223223

224224
if (ret->is_stable()) {
225-
if (ret->is_dirty()) {
225+
if (ret->has_delta()) {
226226
++access_stats.trans_dirty;
227227
++stats.access.trans_dirty;
228228
} else {
@@ -278,7 +278,7 @@ class Cache : public ExtentTransViewRetriever {
278278

279279
ceph_assert(ret->get_type() == type);
280280

281-
if (ret->is_dirty()) {
281+
if (ret->has_delta()) {
282282
++access_stats.cache_dirty;
283283
++stats.access.cache_dirty;
284284
} else {
@@ -505,7 +505,7 @@ class Cache : public ExtentTransViewRetriever {
505505
assert(!p_extent->is_pending_in_trans(t.get_trans_id()));
506506
auto ret = t.maybe_add_to_read_set(p_extent);
507507
if (ret.added) {
508-
if (p_extent->is_dirty()) {
508+
if (p_extent->has_delta()) {
509509
++access_stats.cache_dirty;
510510
++stats.access.cache_dirty;
511511
} else {
@@ -519,7 +519,7 @@ class Cache : public ExtentTransViewRetriever {
519519
}
520520
} else {
521521
// already exists
522-
if (p_extent->is_dirty()) {
522+
if (p_extent->has_delta()) {
523523
++access_stats.trans_dirty;
524524
++stats.access.trans_dirty;
525525
} else {
@@ -1295,7 +1295,7 @@ class Cache : public ExtentTransViewRetriever {
12951295

12961296
// journal replay should has been finished at this point,
12971297
// Cache::root should have been inserted to the dirty list
1298-
assert(root->is_dirty());
1298+
assert(root->has_delta());
12991299
std::vector<CachedExtentRef> _dirty;
13001300
for (auto &e : extents_index) {
13011301
_dirty.push_back(CachedExtentRef(&e));

src/crimson/os/seastore/cached_extent.h

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -590,12 +590,19 @@ class CachedExtent
590590
return state == extent_state_t::INITIAL_WRITE_PENDING;
591591
}
592592

593-
/// Returns true if extent is clean (does not have deltas on disk)
594-
bool is_clean() const {
593+
/// Returns iff extent has deltas on disk or pending
594+
bool has_delta() const {
595595
ceph_assert(is_valid());
596-
return state == extent_state_t::INITIAL_WRITE_PENDING ||
597-
state == extent_state_t::CLEAN ||
598-
state == extent_state_t::EXIST_CLEAN;
596+
if (state == extent_state_t::INITIAL_WRITE_PENDING
597+
|| state == extent_state_t::CLEAN
598+
|| state == extent_state_t::EXIST_CLEAN) {
599+
return false;
600+
} else {
601+
assert(state == extent_state_t::MUTATION_PENDING
602+
|| state == extent_state_t::DIRTY
603+
|| state == extent_state_t::EXIST_MUTATION_PENDING);
604+
return true;
605+
}
599606
}
600607

601608
// Returs true if extent is stable and clean
@@ -619,12 +626,6 @@ class CachedExtent
619626
return state == extent_state_t::EXIST_MUTATION_PENDING;
620627
}
621628

622-
/// Returns true if extent is dirty (has deltas on disk)
623-
bool is_dirty() const {
624-
ceph_assert(is_valid());
625-
return !is_clean();
626-
}
627-
628629
/// Returns true if extent has not been superceded or retired
629630
bool is_valid() const {
630631
return state != extent_state_t::INVALID;
@@ -646,7 +647,7 @@ class CachedExtent
646647

647648
/// Return journal location of oldest relevant delta, only valid while DIRTY
648649
auto get_dirty_from() const {
649-
ceph_assert(is_dirty());
650+
ceph_assert(has_delta());
650651
return dirty_from_or_retired_at;
651652
}
652653

@@ -713,7 +714,7 @@ class CachedExtent
713714
return loaded_length;
714715
}
715716

716-
/// Returns version, get_version() == 0 iff is_clean()
717+
/// Returns version, get_version() == 0 iff !has_delta()
717718
extent_version_t get_version() const {
718719
return version;
719720
}

src/crimson/os/seastore/extent_placement_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ class RandomBlockOolWriter : public ExtentOolWriter {
173173

174174
bool can_inplace_rewrite(Transaction& t,
175175
CachedExtentRef extent) final {
176-
if (!extent->is_dirty()) {
176+
if (!extent->has_delta()) {
177177
return false;
178178
}
179179
assert(t.get_src() == transaction_type_t::TRIM_DIRTY);

src/crimson/os/seastore/transaction_manager.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent(
629629
}
630630

631631
assert(extent->is_valid() && !extent->is_initial_pending());
632-
if (extent->is_dirty()) {
632+
if (extent->has_delta()) {
633633
assert(extent->get_version() > 0);
634634
if (is_root_type(extent->get_type())) {
635635
// pass
@@ -639,7 +639,7 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent(
639639
t.get_rewrite_stats().account_dirty(extent->get_version());
640640
}
641641
if (epm->can_inplace_rewrite(t, extent)) {
642-
// FIXME: is_dirty() is true for mutation pending extents
642+
// FIXME: has_delta() is true for mutation pending extents
643643
// which shouldn't do inplace rewrite because a pending transaction
644644
// may fail.
645645
t.add_inplace_rewrite_extent(extent);

src/test/crimson/seastore/test_object_data_handler.cc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ namespace {
2323

2424
class TestOnode final : public Onode {
2525
onode_layout_t layout;
26-
bool dirty = false;
2726

2827
public:
2928
TestOnode(uint32_t ddr, uint32_t dmr) : Onode(ddr, dmr, hobject_t()) {}
@@ -34,10 +33,9 @@ class TestOnode final : public Onode {
3433
void with_mutable_layout(Transaction &t, Func&& f) {
3534
f(layout);
3635
}
37-
bool is_alive() const {
36+
bool is_alive() const final {
3837
return true;
3938
}
40-
bool is_dirty() const { return dirty; }
4139
laddr_t get_hint() const final {return L_ADDR_MIN; }
4240
~TestOnode() final = default;
4341

src/test/crimson/seastore/test_seastore_cache.cc

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,7 @@ TEST_F(cache_test_t, test_dirty_extent)
196196
*t,
197197
reladdr,
198198
TestBlockPhysical::SIZE).unsafe_get();
199-
ASSERT_TRUE(extent->is_clean());
200-
ASSERT_TRUE(extent->is_pending());
199+
ASSERT_TRUE(extent->is_initial_pending());
201200
ASSERT_TRUE(extent->get_paddr().is_relative());
202201
ASSERT_EQ(extent->get_version(), 0);
203202
ASSERT_EQ(csum, extent->calc_crc32c());
@@ -239,8 +238,7 @@ TEST_F(cache_test_t, test_dirty_extent)
239238
*t2,
240239
addr,
241240
TestBlockPhysical::SIZE).unsafe_get();
242-
ASSERT_TRUE(extent->is_clean());
243-
ASSERT_FALSE(extent->is_pending());
241+
ASSERT_FALSE(extent->is_initial_pending());
244242
ASSERT_EQ(addr, extent->get_paddr());
245243
ASSERT_EQ(extent->get_version(), 0);
246244
ASSERT_EQ(csum, extent->calc_crc32c());
@@ -251,15 +249,14 @@ TEST_F(cache_test_t, test_dirty_extent)
251249
*t,
252250
addr,
253251
TestBlockPhysical::SIZE).unsafe_get();
254-
ASSERT_TRUE(extent->is_dirty());
255-
ASSERT_TRUE(extent->is_pending());
252+
ASSERT_TRUE(extent->is_mutation_pending());
256253
ASSERT_EQ(addr, extent->get_paddr());
257254
ASSERT_EQ(extent->get_version(), 1);
258255
ASSERT_EQ(csum2, extent->calc_crc32c());
259256
}
260257
// submit transaction
261258
submit_transaction(std::move(t)).get();
262-
ASSERT_TRUE(extent->is_dirty());
259+
ASSERT_TRUE(extent->has_delta());
263260
ASSERT_EQ(addr, extent->get_paddr());
264261
ASSERT_EQ(extent->get_version(), 1);
265262
ASSERT_EQ(extent->calc_crc32c(), csum2);
@@ -271,7 +268,7 @@ TEST_F(cache_test_t, test_dirty_extent)
271268
*t,
272269
addr,
273270
TestBlockPhysical::SIZE).unsafe_get();
274-
ASSERT_TRUE(extent->is_dirty());
271+
ASSERT_TRUE(extent->has_delta());
275272
ASSERT_EQ(addr, extent->get_paddr());
276273
ASSERT_EQ(extent->get_version(), 1);
277274
ASSERT_EQ(csum2, extent->calc_crc32c());

0 commit comments

Comments
 (0)