RE: [PATCH 0/4] btrfs-progs repair support for unaligned/mismatched device sizes

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

 



Hi,

I have encountered the issue where a btrfs filesystem would not mount due to mismatch of super_total_bytes with fs_devices total_rw_bytes

I was able to fix it with the new parameter --fix-dev-size

Below I have listed the steps I took.

Reference
https://www.spinics.net/lists/linux-btrfs/msg70025.html



My setup

HDDs are
	sdb 2.7TB
	3.7TB (sdd) with partition sdd1
	sde 2.7TB
	sdf 2.7TB


Running on latest version of Fedora stable

[root@localhost ~]# uname -a
Linux localhost.localdomain 4.13.5-200.fc26.x86_64 #1 SMP Thu Oct 5 16:53:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# btrfs --version
btrfs-progs v4.9.1


These are previous conversions of the fs:

1) I had originally created this as a RAID0 array on two drives.
2) Then converted to RAID1 and added a third drive.
3) Then converted to RAID10 and added a fourth drive.

4) I wanted to use the remaining 1TB on sdd, so I
	converted back to RAID1
	removed sdd
	created a sdd1 partition and added it to the filesystem
	converted the fs to RAID10

5) Then I found out that the sdd1 partition size was not aligned to 4096 bytes, so I
	increased partition size to exactly match the sdb drive size
	increased the fs size on sdd1 using btrfs fi resize 4:max /mnt/6TB

6) After reboot the whole filesystem would no longer mount
7) The --fix-dev-size parameter seems to have fixed it, details below








[root@localhost ~]# lsblk 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0  59.6G  0 disk 
├─sda1   8:1    0   200M  0 part /boot/efi
├─sda2   8:2    0     1G  0 part /boot
└─sda3   8:3    0  58.4G  0 part /
sdb      8:16   0   2.7T  0 disk 
sdc      8:32   0 465.8G  0 disk 
├─sdc1   8:33   0   450M  0 part 
├─sdc2   8:34   0   100M  0 part 
├─sdc3   8:35   0    16M  0 part 
├─sdc4   8:36   0 146.5G  0 part 
└─sdc5   8:37   0 318.7G  0 part /home
sdd      8:48   0   3.7T  0 disk 
├─sdd1   8:49   0   2.7T  0 part 
└─sdd2   8:50   0 931.5G  0 part 
sde      8:64   0   2.7T  0 disk 
sdf      8:80   0   2.7T  0 disk 


[root@localhost ~]# btrfs inspect dump-super /dev/sdd1
superblock: bytenr=65536, device=/dev/sdd1
---------------------------------------------------------
csum_type		0 (crc32c)
csum_size		4
csum			0x9c9d6da0 [match]
bytenr			65536
flags			0x1
			( WRITTEN )
magic			_BHRfS_M [match]
fsid			41806396-8892-4278-a534-23ce61d78970
label			6TB
generation		245580
root			48007926906880
sys_array_size		193
chunk_root_generation	245539
root_level		1
chunk_root		38578614435840
chunk_root_level	1
log_root		0
log_root_transid	0
log_root_level		0
total_bytes		12002371923968
bytes_used		4542498934784
sectorsize		4096
nodesize		16384
leafsize		16384
stripesize		4096
root_dir		6
num_devices		4
compat_flags		0x0
compat_ro_flags		0x0
incompat_flags		0x163
			( MIXED_BACKREF |
			  DEFAULT_SUBVOL |
			  BIG_METADATA |
			  EXTENDED_IREF |
			  SKINNY_METADATA )
cache_generation	245580
uuid_tree_generation	245580
dev_item.uuid		2d19c08c-8a16-48c2-ae28-4547b19ae419
dev_item.fsid		41806396-8892-4278-a534-23ce61d78970 [match]
dev_item.type		0
dev_item.total_bytes	3000592982016
dev_item.bytes_used	2725190303744
dev_item.io_align	4096
dev_item.io_width	4096
dev_item.sector_size	4096
dev_item.devid		4
dev_item.dev_group	0
dev_item.seek_speed	0
dev_item.bandwidth	0
dev_item.generation	0




[root@localhost ~]# btrfs inspect dump-super /dev/sdb
superblock: bytenr=65536, device=/dev/sdb
---------------------------------------------------------
csum_type		0 (crc32c)
csum_size		4
csum			0xb540bd25 [match]
bytenr			65536
flags			0x1
			( WRITTEN )
magic			_BHRfS_M [match]
fsid			41806396-8892-4278-a534-23ce61d78970
label			6TB
generation		245580
root			48007926906880
sys_array_size		193
chunk_root_generation	245539
root_level		1
chunk_root		38578614435840
chunk_root_level	1
log_root		0
log_root_transid	0
log_root_level		0
total_bytes		12002371923968
bytes_used		4542498934784
sectorsize		4096
nodesize		16384
leafsize		16384
stripesize		4096
root_dir		6
num_devices		4
compat_flags		0x0
compat_ro_flags		0x0
incompat_flags		0x163
			( MIXED_BACKREF |
			  DEFAULT_SUBVOL |
			  BIG_METADATA |
			  EXTENDED_IREF |
			  SKINNY_METADATA )
cache_generation	245580
uuid_tree_generation	245580
dev_item.uuid		549ba2bf-880c-4fc2-8e5f-f3445b32f84e
dev_item.fsid		41806396-8892-4278-a534-23ce61d78970 [match]
dev_item.type		0
dev_item.total_bytes	3000592982016
dev_item.bytes_used	2725190303744
dev_item.io_align	4096
dev_item.io_width	4096
dev_item.sector_size	4096
dev_item.devid		1
dev_item.dev_group	0
dev_item.seek_speed	0
dev_item.bandwidth	0
dev_item.generation	0






[root@localhost ~]# btrfs fi show --raw

Label: '6TB'  uuid: 41806396-8892-4278-a534-23ce61d78970
	Total devices 4 FS bytes used 4542498934784
	devid    1 size 3000592982016 used 2725190303744 path /dev/sdb
	devid    2 size 3000592982016 used 2725190303744 path /dev/sdf
	devid    3 size 3000592982016 used 2725190303744 path /dev/sde
	devid    4 size 3000592982016 used 2725190303744 path /dev/sdd1




[root@localhost ~]# mount -t btrfs /dev/sdb /mnt/6TB/
mount: /mnt/6TB: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, or other error.
[root@localhost ~]# mount -t btrfs /dev/sdd1 /mnt/6TB/
mount: /mnt/6TB: wrong fs type, bad option, bad superblock on /dev/sdd1, missing codepage or helper program, or other error.
[root@localhost ~]# dmesg | tail
[ 7743.052419] BTRFS info (device sdd1): disk space caching is enabled
[ 7743.052426] BTRFS info (device sdd1): has skinny extents
[ 7743.103575] BTRFS error (device sdd1): super_total_bytes 12002371923968 mismatch with fs_devices total_rw_bytes 12002371928064
[ 7743.103583] BTRFS error (device sdd1): failed to read chunk tree: -22
[ 7743.131815] BTRFS error (device sdd1): open_ctree failed
[ 7763.318712] BTRFS info (device sdd1): disk space caching is enabled
[ 7763.318718] BTRFS info (device sdd1): has skinny extents
[ 7763.369597] BTRFS error (device sdd1): super_total_bytes 12002371923968 mismatch with fs_devices total_rw_bytes 12002371928064
[ 7763.369605] BTRFS error (device sdd1): failed to read chunk tree: -22
[ 7763.392512] BTRFS error (device sdd1): open_ctree failed

[root@localhost ~]# mount -t btrfs -o ro,usebackuproot /dev/sdb /mnt/6TB/
mount: /mnt/6TB: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, or other error.
[root@localhost ~]# mount -t btrfs -o ro,usebackuproot /dev/sdd1 /mnt/6TB/
mount: /mnt/6TB: wrong fs type, bad option, bad superblock on /dev/sdd1, missing codepage or helper program, or other error.
[root@localhost ~]# dmesg | tail -12
[ 7883.324339] BTRFS info (device sdd1): trying to use backup root at mount time
[ 7883.324344] BTRFS info (device sdd1): disk space caching is enabled
[ 7883.324346] BTRFS info (device sdd1): has skinny extents
[ 7883.348445] BTRFS error (device sdd1): super_total_bytes 12002371923968 mismatch with fs_devices total_rw_bytes 12002371928064
[ 7883.348452] BTRFS error (device sdd1): failed to read chunk tree: -22
[ 7883.368949] BTRFS error (device sdd1): open_ctree failed
[ 7888.549118] BTRFS info (device sdd1): trying to use backup root at mount time
[ 7888.549124] BTRFS info (device sdd1): disk space caching is enabled
[ 7888.549127] BTRFS info (device sdd1): has skinny extents
[ 7888.591806] BTRFS error (device sdd1): super_total_bytes 12002371923968 mismatch with fs_devices total_rw_bytes 12002371928064
[ 7888.591811] BTRFS error (device sdd1): failed to read chunk tree: -22
[ 7888.613883] BTRFS error (device sdd1): open_ctree failed



Then downloaded the btrfs-progs branch from here (Latest commit 6ff9231)
https://github.com/adam900710/btrfs-progs/tree/check_unaligned_dev


[root@localhost btrfs-progs-check_unaligned_dev]# ./btrfs check --fix-dev-size /dev/sdd1
Checking filesystem on /dev/sdd1
UUID: 41806396-8892-4278-a534-23ce61d78970
Fixed super total bytes, old size: 12002371923968 new size: 12002371928064
Fixed unaligned/mismatch total_bytes for superblock and device item

[root@localhost ~]# dmesg | tail -2

[ 8134.623626]  sdf:
[ 8134.734011]  sdb:


Used bytes changed

[root@localhost ~]# btrfs fi show --raw

Label: '6TB'  uuid: 41806396-8892-4278-a534-23ce61d78970
	Total devices 4 FS bytes used 4542498934784
	devid    1 size 3000592982016 used 2679019405312 path /dev/sdb
	devid    2 size 3000592982016 used 2679019405312 path /dev/sdf
	devid    3 size 3000592982016 used 2679019405312 path /dev/sde
	devid    4 size 3000592982016 used 2679019405312 path /dev/sdd1


[root@localhost ~]# mount /dev/sdb mnt/6TB/

[ 8454.694653] BTRFS info (device sdd1): disk space caching is enabled
[ 8454.694657] BTRFS info (device sdd1): has skinny extents
[ 8462.707166] BTRFS info (device sdd1): checking UUID tree



Scrub is currently running, but looks like there are no errors on the fs.
--
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