]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/replicas.c
Update bcachefs sources to dab31ca168 bcachefs: Add some logging for btree node rewri...
[bcachefs-tools-debian] / libbcachefs / replicas.c
index fcf73d72303505f760d56949cda3e7a4e2383114..482bedf4be8ba2cd696dd5afae09230281ae8aa0 100644 (file)
@@ -299,6 +299,13 @@ static int replicas_table_update(struct bch_fs *c,
 
        memset(new_usage, 0, sizeof(new_usage));
 
+       for (i = 0; i < ARRAY_SIZE(new_usage); i++)
+               if (!(new_usage[i] = __alloc_percpu_gfp(bytes,
+                                       sizeof(u64), GFP_KERNEL)))
+                       goto err;
+
+       memset(new_usage, 0, sizeof(new_usage));
+
        for (i = 0; i < ARRAY_SIZE(new_usage); i++)
                if (!(new_usage[i] = __alloc_percpu_gfp(bytes,
                                        sizeof(u64), GFP_KERNEL)))
@@ -834,27 +841,27 @@ static int bch2_cpu_replicas_validate(struct bch_replicas_cpu *cpu_r,
                if (e->data_type >= BCH_DATA_NR) {
                        prt_printf(err, "invalid data type in entry ");
                        bch2_replicas_entry_to_text(err, e);
-                       return -EINVAL;
+                       return -BCH_ERR_invalid_sb_replicas;
                }
 
                if (!e->nr_devs) {
                        prt_printf(err, "no devices in entry ");
                        bch2_replicas_entry_to_text(err, e);
-                       return -EINVAL;
+                       return -BCH_ERR_invalid_sb_replicas;
                }
 
                if (e->nr_required > 1 &&
                    e->nr_required >= e->nr_devs) {
                        prt_printf(err, "bad nr_required in entry ");
                        bch2_replicas_entry_to_text(err, e);
-                       return -EINVAL;
+                       return -BCH_ERR_invalid_sb_replicas;
                }
 
                for (j = 0; j < e->nr_devs; j++)
                        if (!bch2_dev_exists(sb, mi, e->devs[j])) {
                                prt_printf(err, "invalid device %u in entry ", e->devs[j]);
                                bch2_replicas_entry_to_text(err, e);
-                               return -EINVAL;
+                               return -BCH_ERR_invalid_sb_replicas;
                        }
 
                if (i + 1 < cpu_r->nr) {
@@ -866,7 +873,7 @@ static int bch2_cpu_replicas_validate(struct bch_replicas_cpu *cpu_r,
                        if (!memcmp(e, n, cpu_r->entry_size)) {
                                prt_printf(err, "duplicate replicas entry ");
                                bch2_replicas_entry_to_text(err, e);
-                               return -EINVAL;
+                               return -BCH_ERR_invalid_sb_replicas;
                        }
                }
        }