summaryrefslogtreecommitdiff
path: root/fs/bcachefs/alloc_background.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/alloc_background.c')
-rw-r--r--fs/bcachefs/alloc_background.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/fs/bcachefs/alloc_background.c b/fs/bcachefs/alloc_background.c
index 3be6f0fa89de..17b147d15320 100644
--- a/fs/bcachefs/alloc_background.c
+++ b/fs/bcachefs/alloc_background.c
@@ -583,6 +583,11 @@ int bch2_trans_mark_alloc(struct btree_trans *trans,
return ret;
}
+ if (new_a->data_type == BCH_DATA_cached &&
+ !new_a->io_time[READ])
+ new_a->io_time[READ] = max_t(u64, 1, atomic64_read(&c->io_clock[READ].now));
+
+
old_lru = alloc_lru_idx(old_a);
new_lru = alloc_lru_idx(*new_a);
@@ -592,7 +597,7 @@ int bch2_trans_mark_alloc(struct btree_trans *trans,
if (ret)
return ret;
- if (new_lru && new_a->io_time[READ] != new_lru)
+ if (new_a->data_type == BCH_DATA_cached)
new_a->io_time[READ] = new_lru;
}
@@ -869,10 +874,10 @@ static int bch2_check_alloc_to_lru_ref(struct btree_trans *trans,
if (!a.io_time[READ])
a.io_time[READ] = atomic64_read(&c->io_clock[READ].now);
- ret = bch2_lru_change(trans,
- alloc_k.k->p.inode,
- alloc_k.k->p.offset,
- 0, &a.io_time[READ]);
+ ret = bch2_lru_set(trans,
+ alloc_k.k->p.inode,
+ alloc_k.k->p.offset,
+ &a.io_time[READ]);
if (ret)
goto err;