Flush devices when scanning to prevent reading stale signatures (#723842)
While one partition is busy, reformat another partition from the command line. Afterwards parted/libparted still detects the original file system and GParted shows errors from the file system specific tools reporting the new file system doesn't exist. Only limitation is that the new new file system must be recognised by libparted (or by GParted's fallback file system signature detection). Case #1, File system reformatting: # parted /dev/sdb print Model: ATA SAMSUNG SSD UM41 (scsi) Disk /dev/sdb: 8012MB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 2149MB 2147MB primary ext2 2 2149MB 4296MB 2147MB primary ext2 # mount | fgrep sdb /dev/sdb1 on /mnt/1 type ext2 (rw) # mkfs.xfs -f /dev/sdb2 # blkid /dev/sdb2 /dev/sdb2: UUID="c31823a2-b81b-46fa-8246-0a59695e4834" TYPE="xfs" # parted /dev/sdb print Model: ATA SAMSUNG SSD UM41 (scsi) Disk /dev/sdb: 8012MB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 2149MB 2147MB primary ext2 2 2149MB 4296MB 2147MB primary ext2 # e2label /dev/sdb2 e2label: Bad magic number in super-block while trying to open /dev/sdb2 Couldn't find valid filesystem superblock. # dumpe2fs /dev/sdb2 dumpe2fs 1.41.12 (17-May-2010) dumpe2fs: Bad magic number in super-block while trying to open /dev/sdb2 Couldn't find valid filesystem superblock. Case #2, Removing device from multi-device btrfs: # btrfs filesystem show /dev/sdb1 Label: none uuid: a05db434-efd5-4e8c-902f-05f89a88b610 Total devices 2 FS bytes used 156.00KB devid 2 size 2.00GB used 512.00MB path /dev/sdb2 devid 1 size 2.00GB used 240.75MB path /dev/sdb1 # mount /dev/sdb1 /mnt/1 # btrfs device delete /dev/sdb2 # btrfs filesystem show /dev/sdb1 Label: none uuid: a05db434-efd5-4e8c-902f-05f89a88b610 Total devices 1 FS bytes used 92.00KB devid 1 size 2.00GB used 714.25MB path /dev/sdb1 # btrfs filesystem show /dev/sdb2 and GParted reports this error for partition /dev/sdb2: Unable to read the contents of this file system! Because of this some operations may be unavailable. The cause might be a missing software package. The following list of software packages is required for btrfs file system support: btrfs-tools. This is another case of libparted reading from the whole disk device (/dev/sdb) yet the file system tools use the partition specific block device (/dev/sdb2), and the Linux buffer cache not providing cache coherency. Previous scenario was fixed with: 797f0b8e Flush device after wiping a file system (#688882) This affects libparted 2.0 to 3.1 inclusive and is fixed by: http://git.savannah.gnu.org/cgit/parted.git/commit/?id=fb99ba5ebd0dc34204fc9f1014131d5d494805bc Revert "linux-commit: do not unnecessarily open partition device nodes" Fix by calling ped_device_sync() to guarantee cache coherency for each device during scanning. Bug #723842 - GParted resizes the wrong filesystem (does not pass the devid to btrfs filesystem resize)
parent
20f52e28
Please register or sign in to comment