diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-08-21 13:17:42 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2019-08-21 13:19:36 -0400 |
commit | 72a408f84846fe702b8db4f158b678ee20bbf835 (patch) | |
tree | 840abaa16478b4b5105697d4987257c33d37bff2 /libbcachefs/movinggc.c | |
parent | f5ec33b55636b2c6c374872984a6839b1de36249 (diff) |
Update bcachefs sources to ece184f718 bcachefs: Reflink
Diffstat (limited to 'libbcachefs/movinggc.c')
-rw-r--r-- | libbcachefs/movinggc.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/libbcachefs/movinggc.c b/libbcachefs/movinggc.c index b13af566..71029604 100644 --- a/libbcachefs/movinggc.c +++ b/libbcachefs/movinggc.c @@ -69,26 +69,19 @@ static bool __copygc_pred(struct bch_dev *ca, struct bkey_s_c k) { copygc_heap *h = &ca->copygc_heap; + const struct bch_extent_ptr *ptr = + bch2_bkey_has_device(k, ca->dev_idx); - switch (k.k->type) { - case KEY_TYPE_extent: { - struct bkey_s_c_extent e = bkey_s_c_to_extent(k); - const struct bch_extent_ptr *ptr = - bch2_extent_has_device(e, ca->dev_idx); + if (ptr) { + struct copygc_heap_entry search = { .offset = ptr->offset }; - if (ptr) { - struct copygc_heap_entry search = { .offset = ptr->offset }; + ssize_t i = eytzinger0_find_le(h->data, h->used, + sizeof(h->data[0]), + bucket_offset_cmp, &search); - ssize_t i = eytzinger0_find_le(h->data, h->used, - sizeof(h->data[0]), - bucket_offset_cmp, &search); - - return (i >= 0 && - ptr->offset < h->data[i].offset + ca->mi.bucket_size && - ptr->gen == h->data[i].gen); - } - break; - } + return (i >= 0 && + ptr->offset < h->data[i].offset + ca->mi.bucket_size && + ptr->gen == h->data[i].gen); } return false; |