diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2018-03-15 01:22:49 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2018-03-15 01:22:49 -0400 |
commit | 2cf37974b349e2f5e6b1648f69e53066bf89bf54 (patch) | |
tree | 3b98897128df7bfde0feba413199afda8e87eb30 | |
parent | 654c02961557ef3121766841956ba3f6eb48ddd0 (diff) |
bcachefs: fix bch2_extent_mark_replicas_cached()
-rw-r--r-- | fs/bcachefs/extents.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c index ed33f9bf528a..f73e7562e723 100644 --- a/fs/bcachefs/extents.c +++ b/fs/bcachefs/extents.c @@ -552,8 +552,9 @@ static size_t extent_print_ptrs(struct bch_fs *c, char *buf, ? bch_dev_bkey_exists(c, ptr->dev) : NULL; - p("ptr: %u:%llu gen %u%s", ptr->dev, + p("ptr: %u:%llu gen %u%s%s", ptr->dev, (u64) ptr->offset, ptr->gen, + ptr->cached ? " cached" : "", ca && ptr_stale(ca, ptr) ? " stale" : ""); break; @@ -2018,33 +2019,32 @@ bool bch2_extent_normalize(struct bch_fs *c, struct bkey_s k) void bch2_extent_mark_replicas_cached(struct bch_fs *c, struct bkey_s_extent e, - unsigned nr_desired_replicas, - unsigned target) + unsigned target, + unsigned nr_desired_replicas) { struct bch_extent_ptr *ptr; int extra = bch2_extent_durability(c, e.c) - nr_desired_replicas; - if (extra <= 0) - return; - - extent_for_each_ptr(e, ptr) { - int n = bch2_extent_ptr_durability(c, ptr); + if (target && extra > 0) + extent_for_each_ptr(e, ptr) { + int n = bch2_extent_ptr_durability(c, ptr); - if (n && n <= extra && - !dev_in_target(c->devs[ptr->dev], target)) { - ptr->cached = true; - extra -= n; + if (n && n <= extra && + !dev_in_target(c->devs[ptr->dev], target)) { + ptr->cached = true; + extra -= n; + } } - } - extent_for_each_ptr(e, ptr) { - int n = bch2_extent_ptr_durability(c, ptr); + if (extra > 0) + extent_for_each_ptr(e, ptr) { + int n = bch2_extent_ptr_durability(c, ptr); - if (n && n <= extra) { - ptr->cached = true; - extra -= n; + if (n && n <= extra) { + ptr->cached = true; + extra -= n; + } } - } } /* |