]> www.infradead.org Git - users/hch/configfs.git/commitdiff
bcachefs: Fix promotes
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 24 Dec 2023 04:29:05 +0000 (23:29 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 27 Dec 2023 00:31:11 +0000 (19:31 -0500)
The recent work to fix data moves w.r.t. durability broke promotes,
because the caused us to bail out when the extent minus pointers being
dropped still has enough pointers to satisfy the current number of
replicas.

Disable this check when we're adding cached replicas.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/data_update.c

index b05457d284a6009c8077ba01d401bd8fe42e63bf..37d6ecae8c3005dfa16abaebcd92340c19a3d3a4 100644 (file)
@@ -587,7 +587,8 @@ int bch2_data_update_init(struct btree_trans *trans,
         * Increasing replication is an explicit operation triggered by
         * rereplicate, currently, so that users don't get an unexpected -ENOSPC
         */
-       if (durability_have >= io_opts.data_replicas) {
+       if (!(m->data_opts.write_flags & BCH_WRITE_CACHED) &&
+           durability_have >= io_opts.data_replicas) {
                m->data_opts.kill_ptrs |= m->data_opts.rewrite_ptrs;
                m->data_opts.rewrite_ptrs = 0;
                /* if iter == NULL, it's just a promote */