Open griznog opened 1 month ago
When testing adding a new draid vdev, the configuration shown does not include the future spares.
draid
Create some volumes for test devices:
[root@micropterus ~]# for dev in disk{1..24}; do zfs create -V 4gb datapool/$dev; done
Create pool with subset of test devices:
[root@micropterus datapool]# zpool create -o ashift=12 testpool draid2:4d:12c:4s /dev/zvol/datapool/disk{1..12} [root@micropterus datapool]# zpool list NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT datapool 1.73T 690G 1.06T - - 26% 38% 1.00x ONLINE - testpool 31.5G 7.03M 31.5G - - 0% 0% 1.00x ONLINE - [root@micropterus datapool]# zpool status testpool pool: testpool state: ONLINE config: NAME STATE READ WRITE CKSUM testpool ONLINE 0 0 0 draid2:4d:12c:4s-0 ONLINE 0 0 0 disk1 ONLINE 0 0 0 disk2 ONLINE 0 0 0 disk3 ONLINE 0 0 0 disk4 ONLINE 0 0 0 disk5 ONLINE 0 0 0 disk6 ONLINE 0 0 0 disk7 ONLINE 0 0 0 disk8 ONLINE 0 0 0 disk9 ONLINE 0 0 0 disk10 ONLINE 0 0 0 disk11 ONLINE 0 0 0 disk12 ONLINE 0 0 0 spares draid2-0-0 AVAIL draid2-0-1 AVAIL draid2-0-2 AVAIL draid2-0-3 AVAIL errors: No known data errors
Test adding second vdev with zpool add -n ...
vdev
zpool add -n ...
[root@micropterus datapool]# zpool add -n -o ashift=12 testpool draid2:4d:12c:4s /dev/zvol/datapool/disk{13..24} would update 'testpool' to the following configuration: testpool draid2:4d:12c:4s-0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8 disk9 disk10 disk11 disk12 draid2:4d:12c:4s disk13 disk14 disk15 disk16 disk17 disk18 disk19 disk20 disk21 disk22 disk23 disk24 spares draid2-0-0 draid2-0-1 draid2-0-2 draid2-0-3
Note new spares are not shown. Now add the vdev:
[root@micropterus datapool]# zpool add -o ashift=12 testpool draid2:4d:12c:4s $PWD/disk{13..24} [root@micropterus datapool]# zpool status testpool pool: testpool state: ONLINE config: NAME STATE READ WRITE CKSUM testpool ONLINE 0 0 0 draid2:4d:12c:4s-0 ONLINE 0 0 0 disk1 ONLINE 0 0 0 disk2 ONLINE 0 0 0 disk3 ONLINE 0 0 0 disk4 ONLINE 0 0 0 disk5 ONLINE 0 0 0 disk6 ONLINE 0 0 0 disk7 ONLINE 0 0 0 disk8 ONLINE 0 0 0 disk9 ONLINE 0 0 0 disk10 ONLINE 0 0 0 disk11 ONLINE 0 0 0 disk12 ONLINE 0 0 0 draid2:4d:12c:4s-1 ONLINE 0 0 0 disk13 ONLINE 0 0 0 disk14 ONLINE 0 0 0 disk15 ONLINE 0 0 0 disk16 ONLINE 0 0 0 disk17 ONLINE 0 0 0 disk18 ONLINE 0 0 0 disk19 ONLINE 0 0 0 disk20 ONLINE 0 0 0 disk21 ONLINE 0 0 0 disk22 ONLINE 0 0 0 disk23 ONLINE 0 0 0 disk24 ONLINE 0 0 0 spares draid2-0-0 AVAIL draid2-0-1 AVAIL draid2-0-2 AVAIL draid2-0-3 AVAIL draid2-1-0 AVAIL draid2-1-1 AVAIL draid2-1-2 AVAIL draid2-1-3 AVAIL errors: No known data errors
Spares are added as expected.
No errors I can find, just incorrect output from the dry-run of adding a vdev.
Root caused the bug, working on a fix.
System information
Describe the problem you're observing
When testing adding a new
draid
vdev, the configuration shown does not include the future spares.Describe how to reproduce the problem
Create some volumes for test devices:
Create pool with subset of test devices:
Test adding second
vdev
withzpool add -n ...
Note new spares are not shown. Now add the
vdev
:Spares are added as expected.
Include any warning/errors/backtraces from the system logs
No errors I can find, just incorrect output from the dry-run of adding a
vdev
.