Marcus
2009-Sep-06 15:51 UTC
Discrepant st_rdev and st_dev stats in btrfs block and fs device ids
Hello, I think I found a btrfs 0.19 problem when used in an lvm2 volume; btrfs is returning a st_dev stat from the mounted filesystem / that is different from the lvm2 blockdevice st_rdev stat in /dev/mapper/vg0-os0. This btrfs behavior is different from ext4, where the st_dev and st_rdev stats match (http://pastebin.com/m64e90a8e or a summary below). Because of that, in grub2, ''grub-probe -t device / '' fails with '' grub-probe: error: cannot find a device for /. '' , and so update-grub2 fails causing cascading problems all around. Can anyone repeat this? Any ideas why this could be happening? Is this expected? Thanks, Marcus -- # uname -a Linux frog 2.6.31-9-generic #29-Ubuntu SMP Sun Aug 30 17:39:23 UTC 2009 i686 GNU/Linux # btrfs-show Label: none uuid: c5bffbe1-6968-4eee-a800-8346df56459a Total devices 1 FS bytes used 2.15GB devid 1 size 10.00GB used 10.00GB path /dev/mapper/vg0-os0 Btrfs Btrfs v0.19 # mount /dev/mapper/vg0-os0 on / type btrfs (rw,errors=remount-ro) /dev/mapper/vg0-os0 on /tmp/os0 type btrfs (rw) /dev/mapper/vg0-os1 on /tmp/os1 type ext4 (rw) stat.st_rdev for /dev/mapper/vg0-os0:64512 stat.st_rdev for /dev/mapper/vg0-os1:64513 stat.st_dev for /:16 stat.st_dev for /tmp/os0:16 stat.st_dev for /tmp/os1:64513 -- PS: Btw, in case someone else comes across this problem, a quick workaround for grub2 is to modify /usr/sbin/grub-mkconfig so that GRUB_DEVICE points directly to your btrfs lvm2 block device: # diff grub-mkconfig.orig grub-mkconfig 1122c122 < GRUB_DEVICE="`${grub_probe} --target=device /`" ---> GRUB_DEVICE="/dev/mapper/vg0-os0"-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Josef Bacik
2009-Sep-06 22:27 UTC
Re: Discrepant st_rdev and st_dev stats in btrfs block and fs device ids
On Sun, Sep 06, 2009 at 04:51:55PM +0100, Marcus wrote:> Hello, > > I think I found a btrfs 0.19 problem when used in an lvm2 volume; > btrfs is returning a st_dev stat from the mounted filesystem / that is > different from the lvm2 blockdevice st_rdev stat in > /dev/mapper/vg0-os0. > > This btrfs behavior is different from ext4, where the st_dev and > st_rdev stats match (http://pastebin.com/m64e90a8e or a summary > below). Because of that, in grub2, ''grub-probe -t device / '' fails > with '' grub-probe: error: cannot find a device for /. '' , and so > update-grub2 fails causing cascading problems all around. > > Can anyone repeat this? Any ideas why this could be happening? Is this expected? >Yes this is expected. Because of the way that btrfs can have multiple disks and snapshot and such, it creates this sort of virtual device as its backing device in the kernel to keep track of everything, so it''s st_dev will not match the actual device it resides on. Thanks, Josef -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Zeuthen
2009-Sep-07 01:43 UTC
Re: Discrepant st_rdev and st_dev stats in btrfs block and fs device ids
Hey,> Can anyone repeat this? Any ideas why this could be happening? > Is this expected?There was some discussion about this some time ago, see http://news.gmane.org/find-root.php?message_id=%3c7b13a0f80904120735r41736455hb7e226ab8ad30bd7%40mail.gmail.com%3e I don''t think it''s resolved yet - the work-around I currently use in devkit-disks-daemon (which is used by e.g. GNOME to show names and icons for storage devices) looks like this: http://cgit.freedesktop.org/DeviceKit/DeviceKit-disks/tree/src/devkit-disks-mount-monitor.c?id=006#n351 and I don''t think this will work for multi-disk btrfs filesystems. Thinking about this again, we probably want to treat such btrfs multi-disk filesystems in the UI the same way we treat e.g. md raid devices.... David -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html