Skip to content

Commit 494d458

Browse files
author
Kent Overstreet
committed
bcachefs: fix extent_has_stripe_ptr()
This wasn't checking indirect extents. Fixes: koverstreet/bcachefs#887 Signed-off-by: Kent Overstreet <[email protected]>
1 parent 49771a7 commit 494d458

File tree

2 files changed

+7
-20
lines changed

2 files changed

+7
-20
lines changed

fs/bcachefs/ec.c

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -507,20 +507,14 @@ static const struct bch_extent_ptr *bkey_matches_stripe(struct bch_stripe *s,
507507

508508
static bool extent_has_stripe_ptr(struct bkey_s_c k, u64 idx)
509509
{
510-
switch (k.k->type) {
511-
case KEY_TYPE_extent: {
512-
struct bkey_s_c_extent e = bkey_s_c_to_extent(k);
513-
const union bch_extent_entry *entry;
514-
515-
extent_for_each_entry(e, entry)
516-
if (extent_entry_type(entry) ==
517-
BCH_EXTENT_ENTRY_stripe_ptr &&
518-
entry->stripe_ptr.idx == idx)
519-
return true;
510+
struct bkey_ptrs_c ptrs = bch2_bkey_ptrs_c(k);
511+
const union bch_extent_entry *entry;
520512

521-
break;
522-
}
523-
}
513+
bkey_extent_entry_for_each(ptrs, entry)
514+
if (extent_entry_type(entry) ==
515+
BCH_EXTENT_ENTRY_stripe_ptr &&
516+
entry->stripe_ptr.idx == idx)
517+
return true;
524518

525519
return false;
526520
}

fs/bcachefs/extents.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -380,13 +380,6 @@ out: \
380380

381381
/* Iterate over pointers in KEY_TYPE_extent: */
382382

383-
#define extent_for_each_entry_from(_e, _entry, _start) \
384-
__bkey_extent_entry_for_each_from(_start, \
385-
extent_entry_last(_e), _entry)
386-
387-
#define extent_for_each_entry(_e, _entry) \
388-
extent_for_each_entry_from(_e, _entry, (_e).v->start)
389-
390383
#define extent_ptr_next(_e, _ptr) \
391384
__bkey_ptr_next(_ptr, extent_entry_last(_e))
392385

0 commit comments

Comments
 (0)