Skip to contentSkip to conversation

3.5.0-rc6: btrfs and LVM snapshots -> wrong devicename in /proc/mounts

DISCUSSION Arnd Hannemann 3 participants 7 messages Jul 9, 2012 – Jul 10, 2012 1 message not in the archive Btrfs file system

lore
Share & tools
lore
#0 lore raw

Hi,

using btrfs with LVM snapshots seems to be confusing /proc/mounts After mounting a snapshot of an original filesystem, the devicename of the original filesystem is overwritten with that of the snapshot in /proc/mounts.

Steps to reproduce:

arnd@kallisto:/mnt$ sudo mount /dev/vg0/original /mnt/original
[  107.041432] device fsid 5c3e8ca2-da56-4ade-9fef-103a6a8a70c2 devid 1 transid 4 /dev/mapper/vg0-original
[  107.044691] btrfs: no dev_stats entry found for device /dev/mapper/vg0-original (devid 1) (OK on first mount after mkfs)
arnd@kallisto:/mnt$ cat /proc/mounts  | grep /mnt
/dev/mapper/vg0-original /mnt/original btrfs rw,relatime,ssd,space_cache 0 0
arnd@kallisto:/mnt$ sudo lvcreate -L 10M --snap --name snapshot /dev/vg0/original
arnd@kallisto:/mnt$ sudo mount /dev/vg0/testsnap /mnt/testsnap
[  215.432281] device fsid 5c3e8ca2-da56-4ade-9fef-103a6a8a70c2 devid 1 transid 4 /dev/mapper/vg0-testsnap
arnd@kallisto:/mnt$ cat /proc/mounts  | grep /mnt
/dev/mapper/vg0-testsnap /mnt/original btrfs rw,relatime,ssd,space_cache 0 0
/dev/mapper/vg0-testsnap /mnt/testsnap btrfs rw,relatime,ssd,space_cache 0 0
arnd@kallisto:/mnt$ sudo umount /dev/vg0/testsnap
arnd@kallisto:/mnt$ cat /proc/mounts | grep /mnt
/dev/mapper/vg0-testsnap /mnt/original btrfs rw,relatime,ssd,space_cache 0 0

Best regards,
Arnd

#1 lore raw
Quoted 5 lines · Arnd Hannemann

Hi,

using btrfs with LVM snapshots seems to be confusing /proc/mounts After mounting a snapshot of an original filesystem, the devicename of the original filesystem is overwritten with that of the snapshot in /proc/mounts.

If the lvm snapshot is visible to btrfs (i.e., btrfs dev scan), it will appear as another device which belongs to the original filesystem with a duplicate devid. This might result in bad things happening, or possibly just hilarity.

You have a backup that isn't just an lvm snapshot, right?

#2 lore raw

Am 10.07.2012 00:49, schrieb cwillu:

Quoted 11 lines · Arnd Hannemann
Quoted 5 lines

Hi,

using btrfs with LVM snapshots seems to be confusing /proc/mounts After mounting a snapshot of an original filesystem, the devicename of the original filesystem is overwritten with that of the snapshot in /proc/mounts.

If the lvm snapshot is visible to btrfs (i.e., btrfs dev scan), it will appear as another device which belongs to the original filesystem with a duplicate devid. This might result in bad things happening, or possibly just hilarity.

You are right the same bug seems to get triggered on "btrfs dev scan":

arnd@kallisto:/mnt$ sudo grep /mnt /proc/mounts
/dev/mapper/vg0-original /mnt/original btrfs rw,relatime,ssd,space_cache 0 0
arnd@kallisto:/mnt$ sudo btrfs dev scan
Scanning for Btrfs filesystems
failed to read /dev/sr0
ERROR: unable to scan the device '/dev/dm-4' - Device or resource busy
ERROR: unable to scan the device '/dev/dm-17' - Device or resource busy
arnd@kallisto:/mnt$ sudo grep /mnt /proc/mounts
/dev/dm-16 /mnt/original btrfs rw,relatime,ssd,space_cache 0 0
arnd@kallisto:/mnt$ sudo dmsetup info /dev/dm-16
Name:              vg0-testsnap
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        0
Event number:      0
Major, minor:      253, 16
Number of targets: 1
UUID: LVM-pUa0TTDg9Y1dII6a6WwcUanE0ai4AVXqpS7sNnWEGZOnww76lrMaZzIEB38rug9
Quoted 1 line

You have a backup that isn't just an lvm snapshot, right?

Now I will.

Best regards
Arnd

A message that is not in the archive (sent off-list or not yet received): [email protected]

#4 lore raw

Hi,

Am 10.07.2012 05:30, schrieb Christian Robert:

Quoted 4 lines

I agree with you, but you should never mount a snapshot of a btrfs filesystem at the same time the original is, because both the original and the snapshot had same "device fsid 5c3e8ca2-da56-4ade-9fef-103a6a8a70c2"

the kernel will tkink twice and fold back to the same device.

If that is correct the bug is that the kernel lets me mount the same device fsid on different devices twice.

Quoted 5 lines

btrsf does not behave like other filesystems, you can't snapshot a btrfs filesystem and hope to mount the snapshot somewhere else.

snapsoot also duplicate lots of things internally that have no sence in a snapshot (like raid level, single or multiple devies ...)

I see. However, I expect a "simple" btrfs to just work or fail gracefully.

Best regards,
Arnd

#5 lore raw
Quoted 5 lines · Arnd Hannemann

Hi,

Am 10.07.2012 05:30, schrieb Christian Robert:

Quoted 2 lines

I agree with you, but you should never mount a snapshot of a btrfs filesystem at the same time the original is, because both the original and the snapshot had same "device fsid 5c3e8ca2-da56-4ade-9fef-103a6a8a70c2"

I think that the kernel should be smarter in this regard.

At kernel level, as golden rule it should be not possible to add a duplicate fsid if the previous one is mounted. "btrfs dev scan" MUST return an error in this case. This in any case is an error.

Today it seems that if a device with the same fsid is already registered, the new one overwrites the old one (or almost the name is overwritten). This could be acceptable if the filesystem is unmounted. I think that it is a serious error otherwise.

Quoted 22 lines
Quoted 2 lines

the kernel will tkink twice and fold back to the same device.

If that is correct the bug is that the kernel lets me mount the same device fsid on different devices twice.

Quoted 5 lines

btrsf does not behave like other filesystems, you can't snapshot a btrfs filesystem and hope to mount the snapshot somewhere else.

snapsoot also duplicate lots of things internally that have no sence in a snapshot (like raid level, single or multiple devies ...)

I see. However, I expect a "simple" btrfs to just work or fail gracefully.

Best regards,
Arnd

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

#6 lore raw

Hi Arnd,

I am trying to reproduce this bug. Which kernel version are you using ?

BR
G.Baroncelli

Quoted 47 lines · Goffredo Baroncelli
Quoted 5 lines · Arnd Hannemann

Hi,

Am 10.07.2012 05:30, schrieb Christian Robert:

Quoted 2 lines

I agree with you, but you should never mount a snapshot of a btrfs filesystem at the same time the original is, because both the original and the snapshot had same "device fsid 5c3e8ca2-da56-4ade-9fef-103a6a8a70c2"

I think that the kernel should be smarter in this regard.

At kernel level, as golden rule it should be not possible to add a duplicate fsid if the previous one is mounted. "btrfs dev scan" MUST return an error in this case. This in any case is an error.

Today it seems that if a device with the same fsid is already registered, the new one overwrites the old one (or almost the name is overwritten). This could be acceptable if the filesystem is unmounted. I think that it is a serious error otherwise.

Quoted 13 lines
Quoted 2 lines

the kernel will tkink twice and fold back to the same device.

If that is correct the bug is that the kernel lets me mount the same device fsid on different devices twice.

Quoted 5 lines

btrsf does not behave like other filesystems, you can't snapshot a btrfs filesystem and hope to mount the snapshot somewhere else.

snapsoot also duplicate lots of things internally that have no sence in a snapshot (like raid level, single or multiple devies ...)

I see. However, I expect a "simple" btrfs to just work or fail gracefully.

Quoted 9 lines

Best regards,
Arnd

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

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

#7 lore raw

Hi Goffredo,

Am 10.07.2012 20:42, schrieb Goffredo Baroncelli:

Quoted 3 lines

Hi Arnd,

I am trying to reproduce this bug. Which kernel version are you using ?

I'm using linus' vanilla tree from Sunday which is 3.5.0-rc6 plus some unsuspicious commits.

Best regards
Arnd