summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2018-03-15 01:22:49 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2018-03-15 01:22:49 -0400
commit2cf37974b349e2f5e6b1648f69e53066bf89bf54 (patch)
tree3b98897128df7bfde0feba413199afda8e87eb30
parent654c02961557ef3121766841956ba3f6eb48ddd0 (diff)
bcachefs: fix bch2_extent_mark_replicas_cached()
-rw-r--r--fs/bcachefs/extents.c38
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;
+ }
}
- }
}
/*