Commit 53f66195 authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: BCH_SB_MEMBER_INVALID

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: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 7f12a963
...@@ -82,7 +82,8 @@ int bch2_replicas_entry_validate(struct bch_replicas_entry_v1 *r, ...@@ -82,7 +82,8 @@ int bch2_replicas_entry_validate(struct bch_replicas_entry_v1 *r,
} }
for (unsigned i = 0; i < r->nr_devs; i++) 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]); prt_printf(err, "invalid device %u in entry ", r->devs[i]);
goto bad; goto bad;
} }
......
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
void bch2_dev_missing(struct bch_fs *c, unsigned dev) 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) void bch2_dev_bucket_missing(struct bch_fs *c, struct bpos bucket)
......
...@@ -8,6 +8,11 @@ ...@@ -8,6 +8,11 @@
*/ */
#define BCH_SB_MEMBERS_MAX 64 #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_MIN_NR_NBUCKETS (1 << 6)
#define BCH_IOPS_MEASUREMENTS() \ #define BCH_IOPS_MEASUREMENTS() \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment