summaryrefslogtreecommitdiff
path: root/fs/bcachefs/replicas.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-09-01 18:09:18 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2024-09-03 20:43:14 -0400
commit53f6619554fb1edf8d7599b560d44dbea085c730 (patch)
treeb3d3fed510eb714dc187b2acf040f071d7a94435 /fs/bcachefs/replicas.c
parent7f12a963b65872fda1219f065c1cc1b1b9a806e8 (diff)
downloadlwn-53f6619554fb1edf8d7599b560d44dbea085c730.tar.gz
lwn-53f6619554fb1edf8d7599b560d44dbea085c730.zip
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: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/replicas.c')
-rw-r--r--fs/bcachefs/replicas.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/bcachefs/replicas.c b/fs/bcachefs/replicas.c
index 12b1d28b7eb4..12d4de65ae17 100644
--- a/fs/bcachefs/replicas.c
+++ b/fs/bcachefs/replicas.c
@@ -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;
}