]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bcachefs: BCH_SB_MEMBER_INVALID
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 1 Sep 2024 22:09:18 +0000 (18:09 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 4 Sep 2024 00:43:14 +0000 (20:43 -0400)
Create a sentinal value for "invalid device".

This is needed for removing devices that have stripes on them (force
removing, without evacuating); we need a sentinal value for the stripe
pointers to the device being removed.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/replicas.c
fs/bcachefs/sb-members.c
fs/bcachefs/sb-members_format.h

index 12b1d28b7eb499b5a30c1c990cd44dfd7c8d98e4..12d4de65ae17c6516f7e7a2f2bb5143d40b40de6 100644 (file)
@@ -82,7 +82,8 @@ int bch2_replicas_entry_validate(struct bch_replicas_entry_v1 *r,
        }
 
        for (unsigned i = 0; i < r->nr_devs; i++)
-               if (!bch2_member_exists(sb, r->devs[i])) {
+               if (r->devs[i] != BCH_SB_MEMBER_INVALID &&
+                   !bch2_member_exists(sb, r->devs[i])) {
                        prt_printf(err, "invalid device %u in entry ", r->devs[i]);
                        goto bad;
                }
index 39196f2a41974f5ca39784cbfe52b64ce5bf1aab..4b765422dd771a1d052922fca56066cd78f08a58 100644 (file)
@@ -11,7 +11,8 @@
 
 void bch2_dev_missing(struct bch_fs *c, unsigned dev)
 {
-       bch2_fs_inconsistent(c, "pointer to nonexistent device %u", dev);
+       if (dev != BCH_SB_MEMBER_INVALID)
+               bch2_fs_inconsistent(c, "pointer to nonexistent device %u", dev);
 }
 
 void bch2_dev_bucket_missing(struct bch_fs *c, struct bpos bucket)
index e2630548c0f681dc35edef4f7b0f5228f2f5d9a3..d727d2dfda08f2af0a3ed4602a4953f8fc9f7de4 100644 (file)
@@ -8,6 +8,11 @@
  */
 #define BCH_SB_MEMBERS_MAX             64
 
+/*
+ * Sentinal value - indicates a device that does not exist
+ */
+#define BCH_SB_MEMBER_INVALID          255
+
 #define BCH_MIN_NR_NBUCKETS    (1 << 6)
 
 #define BCH_IOPS_MEASUREMENTS()                        \