Re: bug adding device to seed device, btrfs fi show fails

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>> On 05/11/2014 09:51 AM, Chris Murphy wrote:
>>> kernel 3.15.0-0.rc5.git0.1.fc21.x86_64
>>> btrfs-progs 3.14
>>> 
>>> /dev/sdb2 = existing btrfs fs
>>> /dev/sdc3 = unformatted partition
>>> 
>>> 
>>> # btrfstune -S1 /dev/sdb2
>>> # mount /dev/sdb2 /mnt
>>> mount: /dev/sdb2 is write-protected, mounting read-only
>>> # btrfs device add /dev/sdc3 /mnt
>>> Performing full device TRIM (75.90GiB) ...
>>> # btrfs fi show
>>> Label: 'rawhide'  uuid: d372e5d1-386f-460c-b036-611469e0155e
>>>    Total devices 1 FS bytes used 7.55GiB
>>>    devid    1 size 79.31GiB used 11.04GiB path /dev/sda3
>>> 
>>> btrfs: utils.c:1769: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.

Old bug. I thought this patch would fix it, and see it is in integration branch. So I built a kernel and also btrfs-progs to test, but both 'fi show' and 'replace start' fail. However, 'device delete' works.

[PATCH 01/10] Btrfs: Fix the problem that the replace destroys the seed filesystem
https://www.mail-archive.com/linux-btrfs@xxxxxxxxxxxxxxx/msg35774.html


This is what I just did. /dev/sdb is an existing btrfs volume not mounted, /dev/sdc is blank (a new VDI so it's definitely full of zeros.)

# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0   80G  0 disk 
sdc               8:32   0   80G  0 disk 
# btrfs fi show
Label: none  uuid: caeaf998-6063-4c09-9088-0e05d4d4f54e
	Total devices 1 FS bytes used 2.47GiB
	devid    1 size 80.00GiB used 11.02GiB path /dev/sdb

Btrfs v3.14.2-167-ge514381
# btrfstune -S1 /dev/sdb
# mount /dev/sdb /mnt
mount: /dev/sdb is write-protected, mounting read-only
# btrfs device add /dev/sdc /mnt
# btrfs fi show
btrfs: utils.c:1939: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.
Aborted (core dumped)
# umount /mnt
# mount /dev/sdc /mnt
# btrfs replace start -f 0 2 /mnt
btrfs: utils.c:1939: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.
Aborted (core dumped)
# btrfs device delete /dev/sdc /mnt
ERROR: error removing the device '/dev/sdc' - unable to remove the only writeable device
# btrfs device delete /dev/sdb /mnt

The last command does complete and both /dev/sdb and /dev/sdc appear to work.

For above, this is what I get in dmesg:
[   60.089303]  sdb: unknown partition table
[   69.945922] BTRFS info (device sdb): disk space caching is enabled
[   69.969784] SELinux: initialized (dev sdb, type btrfs), uses xattr
[   84.141416]  sdc: unknown partition table
[   84.180189]  sdc: unknown partition table
[   84.268800] BTRFS info (device sdb): relocating block group 12905873408 flags 2
[   84.338819] BTRFS info (device sdb): relocating block group 0 flags 2
[   84.393097] BTRFS info (device sdb): disk added /dev/sdc
[   84.396880]  sdc: unknown partition table
[  341.031180] BTRFS info (device sdc): disk space caching is enabled
[  341.050933] BTRFS: checking UUID tree
[  341.053573] SELinux: initialized (dev sdc, type btrfs), uses xattr
[  403.316005] BTRFS info (device sdc): relocating block group 10758389760 flags 1
[  403.422962] BTRFS info (device sdc): found 35 extents
[  403.561964] BTRFS info (device sdc): found 35 extents
[  403.597289] BTRFS info (device sdc): relocating block group 9684647936 flags 1
[  403.634505] BTRFS info (device sdc): relocating block group 8610906112 flags 1
[  406.168389] BTRFS info (device sdc): found 2907 extents
[  407.379575] BTRFS info (device sdc): found 2907 extents
[  407.415344] BTRFS info (device sdc): relocating block group 7537164288 flags 1
[  409.497717] BTRFS info (device sdc): found 613 extents
[  412.010498] BTRFS info (device sdc): found 613 extents
[  412.040723] BTRFS info (device sdc): relocating block group 6463422464 flags 1
[  414.782188] BTRFS info (device sdc): found 1613 extents
[  417.343576] BTRFS info (device sdc): found 1613 extents
[  417.379543] BTRFS info (device sdc): relocating block group 5389680640 flags 1
[  419.068584] BTRFS info (device sdc): found 1060 extents
[  420.789650] BTRFS info (device sdc): found 1060 extents
[  420.823006] BTRFS info (device sdc): relocating block group 4315938816 flags 1
[  423.647962] BTRFS info (device sdc): found 3354 extents
[  425.073006] BTRFS info (device sdc): found 3354 extents
[  425.108412] BTRFS info (device sdc): relocating block group 3242196992 flags 1
[  427.212816] BTRFS info (device sdc): found 2493 extents
[  428.217004] BTRFS info (device sdc): found 2493 extents
[  428.246424] BTRFS info (device sdc): relocating block group 2168455168 flags 1
[  437.060542] BTRFS info (device sdc): found 22108 extents
[  440.286964] BTRFS info (device sdc): found 22108 extents
[  440.442528] BTRFS info (device sdc): relocating block group 1094713344 flags 1
[  449.026968] BTRFS info (device sdc): found 3914 extents
[  453.901003] BTRFS info (device sdc): found 3914 extents
[  453.952946] BTRFS info (device sdc): relocating block group 20971520 flags 4
[  454.848005] BTRFS info (device sdc): found 1352 extents
[  454.903087] BTRFS info (device sdc): relocating block group 12582912 flags 1
[  454.997235] BTRFS info (device sdc): found 46 extents
[  455.169779] BTRFS info (device sdc): found 46 extents
[  455.210596] BTRFS info (device sdc): relocating block group 4194304 flags 4
[  455.261987] BTRFS info (device sdc): disk deleted /dev/sdb
[  455.267911]  sdb: unknown partition table

Looks like device delete did work; and now fi show also works.

# btrfs fi show
Label: none  uuid: 9a072c79-db71-4bfb-914c-9ebf06215c3e
	Total devices 1 FS bytes used 2.47GiB
	devid    2 size 80.00GiB used 4.03GiB path /dev/sdc

Label: none  uuid: caeaf998-6063-4c09-9088-0e05d4d4f54e
	Total devices 1 FS bytes used 2.47GiB
	devid    1 size 80.00GiB used 11.02GiB path /dev/sdb


The following patch is not in integration. Anand Jain asked me to try it in May for this problem, but I forgot.

http://permalink.gmane.org/gmane.comp.file-systems.btrfs/33276

Should I try it?



Chris Murphy

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux