* Adding Device Fails - Why?
@ 2021-03-01 11:19 Christian Völker
2021-03-01 11:44 ` Hugo Mills
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Christian Völker @ 2021-03-01 11:19 UTC (permalink / raw)
To: linux-btrfs
Hi all,
I am using BTRS on a Debian10 system. I am trying to extend my existing
filesystem with another device but adding it fails for no reason.
This is my setup of existing btrfs:
2x DRBD Devices (Network RAID1)
top of each a luks encrypted device (crypt_drbd1 and crypt_drbd3):
vdb 254:16 0 1,1T 0 disk
└─drbd1 147:1 0 1,1T 0 disk
└─crypt_drbd1 253:3 0 1,1T 0 crypt
vdc 254:32 0 900G 0 disk
└─drbd2 147:2 0 900G 0 disk
└─crypt2 253:4 0 900G 0 crypt
vdd 254:48 0 800G 0 disk
└─drbd3 147:3 0 800G 0 disk
└─crypt_drbd3 253:5 0 800G 0 crypt /var/lib/backuppc
I have now a third drbd device (drbd2) which I encrypted, too (crypt2).
And tried to add to existing fi.
Here further system information:
Linux backuppc41 5.10.0-3-amd64 #1 SMP Debian 5.10.13-1 (2021-02-06)
x86_64 GNU/Linux
btrfs-progs v5.10.1
root@backuppc41:~# btrfs fi sh
Label: 'backcuppc' uuid: 73b98c7b-832a-437a-a15b-6cb00734e5db
Total devices 2 FS bytes used 1.83TiB
devid 3 size 799.96GiB used 789.96GiB path dm-5
devid 4 size 1.07TiB used 1.06TiB path dm-3
I can create an additional btrfs filesystem with mkfs.btrfs on the new
device without any issues:
root@backuppc41:~# btrfs fi sh
Label: 'backcuppc' uuid: 73b98c7b-832a-437a-a15b-6cb00734e5db
Total devices 2 FS bytes used 1.83TiB
devid 3 size 799.96GiB used 789.96GiB path dm-5
devid 4 size 1.07TiB used 1.06TiB path dm-3
Label: none uuid: b111a08e-2969-457a-b9f1-551ff65451d1
Total devices 1 FS bytes used 128.00KiB
devid 1 size 899.96GiB used 2.02GiB path /dev/mapper/crypt2
But I can not add this device to the existing btrfs fi:
root@backuppc41:~# wipefs /dev/mapper/crypt2 -a
/dev/mapper/crypt2: 8 bytes were erased at offset 0x00010040 (btrfs): 5f
42 48 52 66 53 5f 4d
root@backuppc41:~# btrfs device add /dev/mapper/crypt2 /var/lib/backuppc/
ERROR: error adding device 'dm-4': No such file or directory
This is what I see in dmesg:
[43827.535383] BTRFS info (device dm-5): disk added /dev/drbd2
[43868.910994] BTRFS info (device dm-5): device deleted: /dev/drbd2
[48125.323995] BTRFS: device fsid 2b4b631c-b500-4f8d-909c-e88b012eba1e
devid 1 transid 5 /dev/mapper/crypt2 scanned by mkfs.btrfs (4937)
[57799.499249] BTRFS: device fsid b111a08e-2969-457a-b9f1-551ff65451d1
devid 1 transid 5 /dev/mapper/crypt2 scanned by mkfs.btrfs (5178)
And these are the mapping in dm:
root@backuppc41:~# ll /dev/mapper/
insgesamt 0
lrwxrwxrwx 1 root root 7 28. Feb 21:08 backuppc41--vg-root -> ../dm-1
lrwxrwxrwx 1 root root 7 28. Feb 21:08 backuppc41--vg-swap_1 ->
../dm-2
crw------- 1 root root 10, 236 28. Feb 21:08 control
lrwxrwxrwx 1 root root 7 1. Mär 12:12 crypt2 -> ../dm-4
lrwxrwxrwx 1 root root 7 28. Feb 20:21 crypt_drbd1 -> ../dm-3
lrwxrwxrwx 1 root root 7 28. Feb 20:21 crypt_drbd3 -> ../dm-5
lrwxrwxrwx 1 root root 7 28. Feb 21:08 vda5_crypt -> ../dm-0
Anyone having an idea why I can not add the device to the existing
filesystem? The error message is not really helpful...
Thanks a lot!
/KNEBB
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Adding Device Fails - Why?
2021-03-01 11:19 Adding Device Fails - Why? Christian Völker
@ 2021-03-01 11:44 ` Hugo Mills
2021-03-01 12:06 ` Qu Wenruo
2021-03-01 17:24 ` Christian Völker
2 siblings, 0 replies; 10+ messages in thread
From: Hugo Mills @ 2021-03-01 11:44 UTC (permalink / raw)
To: Christian Völker; +Cc: linux-btrfs
On Mon, Mar 01, 2021 at 12:19:12PM +0100, Christian Völker wrote:
> I am using BTRS on a Debian10 system. I am trying to extend my existing
> filesystem with another device but adding it fails for no reason.
>
> This is my setup of existing btrfs:
>
> 2x DRBD Devices (Network RAID1)
> top of each a luks encrypted device (crypt_drbd1 and crypt_drbd3):
>
> vdb 254:16 0 1,1T 0 disk
> └─drbd1 147:1 0 1,1T 0 disk
> └─crypt_drbd1 253:3 0 1,1T 0 crypt
> vdc 254:32 0 900G 0 disk
> └─drbd2 147:2 0 900G 0 disk
> └─crypt2 253:4 0 900G 0 crypt
> vdd 254:48 0 800G 0 disk
> └─drbd3 147:3 0 800G 0 disk
> └─crypt_drbd3 253:5 0 800G 0 crypt /var/lib/backuppc
>
>
>
> I have now a third drbd device (drbd2) which I encrypted, too (crypt2). And
> tried to add to existing fi.
> Here further system information:
>
> Linux backuppc41 5.10.0-3-amd64 #1 SMP Debian 5.10.13-1 (2021-02-06) x86_64
> GNU/Linux
> btrfs-progs v5.10.1
>
> root@backuppc41:~# btrfs fi sh
> Label: 'backcuppc' uuid: 73b98c7b-832a-437a-a15b-6cb00734e5db
> Total devices 2 FS bytes used 1.83TiB
> devid 3 size 799.96GiB used 789.96GiB path dm-5
> devid 4 size 1.07TiB used 1.06TiB path dm-3
>
>
> I can create an additional btrfs filesystem with mkfs.btrfs on the new
> device without any issues:
>
> root@backuppc41:~# btrfs fi sh
> Label: 'backcuppc' uuid: 73b98c7b-832a-437a-a15b-6cb00734e5db
> Total devices 2 FS bytes used 1.83TiB
> devid 3 size 799.96GiB used 789.96GiB path dm-5
> devid 4 size 1.07TiB used 1.06TiB path dm-3
>
> Label: none uuid: b111a08e-2969-457a-b9f1-551ff65451d1
> Total devices 1 FS bytes used 128.00KiB
> devid 1 size 899.96GiB used 2.02GiB path /dev/mapper/crypt2
>
> But I can not add this device to the existing btrfs fi:
> root@backuppc41:~# wipefs /dev/mapper/crypt2 -a
> /dev/mapper/crypt2: 8 bytes were erased at offset 0x00010040 (btrfs): 5f 42
> 48 52 66 53 5f 4d
>
> root@backuppc41:~# btrfs device add /dev/mapper/crypt2 /var/lib/backuppc/
> ERROR: error adding device 'dm-4': No such file or directory
>
> This is what I see in dmesg:
> [43827.535383] BTRFS info (device dm-5): disk added /dev/drbd2
> [43868.910994] BTRFS info (device dm-5): device deleted: /dev/drbd2
> [48125.323995] BTRFS: device fsid 2b4b631c-b500-4f8d-909c-e88b012eba1e devid
> 1 transid 5 /dev/mapper/crypt2 scanned by mkfs.btrfs (4937)
> [57799.499249] BTRFS: device fsid b111a08e-2969-457a-b9f1-551ff65451d1 devid
> 1 transid 5 /dev/mapper/crypt2 scanned by mkfs.btrfs (5178)
We had someone on IRC a couple of days ago with exactly the same
kind of problem. I don't think I have a record of the solution in my
IRC logs, though, and I don't think we got to the bottom of it. From
memory, a reboot helped.
Hugo.
> And these are the mapping in dm:
>
> root@backuppc41:~# ll /dev/mapper/
> insgesamt 0
> lrwxrwxrwx 1 root root 7 28. Feb 21:08 backuppc41--vg-root -> ../dm-1
> lrwxrwxrwx 1 root root 7 28. Feb 21:08 backuppc41--vg-swap_1 ->
> ../dm-2
> crw------- 1 root root 10, 236 28. Feb 21:08 control
> lrwxrwxrwx 1 root root 7 1. Mär 12:12 crypt2 -> ../dm-4
> lrwxrwxrwx 1 root root 7 28. Feb 20:21 crypt_drbd1 -> ../dm-3
> lrwxrwxrwx 1 root root 7 28. Feb 20:21 crypt_drbd3 -> ../dm-5
> lrwxrwxrwx 1 root root 7 28. Feb 21:08 vda5_crypt -> ../dm-0
>
>
> Anyone having an idea why I can not add the device to the existing
> filesystem? The error message is not really helpful...
>
> Thanks a lot!
>
> /KNEBB
--
Hugo Mills | Releasing out of hours. A Haiku:
hugo@... carfax.org.uk | Simply merge PR
http://carfax.org.uk/ | It is wrong. Buildkite, cancel!
PGP: E2AB1DE4 | gitops now corrupt
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Adding Device Fails - Why?
2021-03-01 11:19 Adding Device Fails - Why? Christian Völker
2021-03-01 11:44 ` Hugo Mills
@ 2021-03-01 12:06 ` Qu Wenruo
2021-03-01 12:10 ` Christian Völker
2021-03-01 17:24 ` Christian Völker
2 siblings, 1 reply; 10+ messages in thread
From: Qu Wenruo @ 2021-03-01 12:06 UTC (permalink / raw)
To: Christian Völker, linux-btrfs
[-- Attachment #1: Type: text/plain, Size: 4259 bytes --]
On 2021/3/1 下午7:19, Christian Völker wrote:
> Hi all,
>
> I am using BTRS on a Debian10 system. I am trying to extend my existing
> filesystem with another device but adding it fails for no reason.
>
> This is my setup of existing btrfs:
>
> 2x DRBD Devices (Network RAID1)
> top of each a luks encrypted device (crypt_drbd1 and crypt_drbd3):
>
> vdb 254:16 0 1,1T 0 disk
> └─drbd1 147:1 0 1,1T 0 disk
> └─crypt_drbd1 253:3 0 1,1T 0 crypt
> vdc 254:32 0 900G 0 disk
> └─drbd2 147:2 0 900G 0 disk
> └─crypt2 253:4 0 900G 0 crypt
> vdd 254:48 0 800G 0 disk
> └─drbd3 147:3 0 800G 0 disk
> └─crypt_drbd3 253:5 0 800G 0 crypt /var/lib/backuppc
>
>
>
> I have now a third drbd device (drbd2) which I encrypted, too (crypt2).
> And tried to add to existing fi.
> Here further system information:
>
> Linux backuppc41 5.10.0-3-amd64 #1 SMP Debian 5.10.13-1 (2021-02-06)
> x86_64 GNU/Linux
> btrfs-progs v5.10.1
>
> root@backuppc41:~# btrfs fi sh
> Label: 'backcuppc' uuid: 73b98c7b-832a-437a-a15b-6cb00734e5db
> Total devices 2 FS bytes used 1.83TiB
> devid 3 size 799.96GiB used 789.96GiB path dm-5
> devid 4 size 1.07TiB used 1.06TiB path dm-3
>
>
> I can create an additional btrfs filesystem with mkfs.btrfs on the new
> device without any issues:
>
> root@backuppc41:~# btrfs fi sh
> Label: 'backcuppc' uuid: 73b98c7b-832a-437a-a15b-6cb00734e5db
> Total devices 2 FS bytes used 1.83TiB
> devid 3 size 799.96GiB used 789.96GiB path dm-5
> devid 4 size 1.07TiB used 1.06TiB path dm-3
>
> Label: none uuid: b111a08e-2969-457a-b9f1-551ff65451d1
> Total devices 1 FS bytes used 128.00KiB
> devid 1 size 899.96GiB used 2.02GiB path /dev/mapper/crypt2
>
>
> But I can not add this device to the existing btrfs fi:
> root@backuppc41:~# wipefs /dev/mapper/crypt2 -a
> /dev/mapper/crypt2: 8 bytes were erased at offset 0x00010040 (btrfs): 5f
> 42 48 52 66 53 5f 4d
>
> root@backuppc41:~# btrfs device add /dev/mapper/crypt2 /var/lib/backuppc/
> ERROR: error adding device 'dm-4': No such file or directory
>
> This is what I see in dmesg:
> [43827.535383] BTRFS info (device dm-5): disk added /dev/drbd2
> [43868.910994] BTRFS info (device dm-5): device deleted: /dev/drbd2
> [48125.323995] BTRFS: device fsid 2b4b631c-b500-4f8d-909c-e88b012eba1e
> devid 1 transid 5 /dev/mapper/crypt2 scanned by mkfs.btrfs (4937)
> [57799.499249] BTRFS: device fsid b111a08e-2969-457a-b9f1-551ff65451d1
> devid 1 transid 5 /dev/mapper/crypt2 scanned by mkfs.btrfs (5178)
If you can recompile btrfs module, would you mind to test the following
diff to help us debugging the problem?
Of course, after applying the diff and recompiling the module, you still
need to use the new btrfs module to try add the device again to trigger
the error.
Thanks,
Qu
>
>
>
> And these are the mapping in dm:
>
> root@backuppc41:~# ll /dev/mapper/
> insgesamt 0
> lrwxrwxrwx 1 root root 7 28. Feb 21:08 backuppc41--vg-root -> ../dm-1
> lrwxrwxrwx 1 root root 7 28. Feb 21:08 backuppc41--vg-swap_1 ->
> ../dm-2
> crw------- 1 root root 10, 236 28. Feb 21:08 control
> lrwxrwxrwx 1 root root 7 1. Mär 12:12 crypt2 -> ../dm-4
> lrwxrwxrwx 1 root root 7 28. Feb 20:21 crypt_drbd1 -> ../dm-3
> lrwxrwxrwx 1 root root 7 28. Feb 20:21 crypt_drbd3 -> ../dm-5
> lrwxrwxrwx 1 root root 7 28. Feb 21:08 vda5_crypt -> ../dm-0
>
>
> Anyone having an idea why I can not add the device to the existing
> filesystem? The error message is not really helpful...
>
> Thanks a lot!
>
> /KNEBB
>
>
>
[-- Attachment #2: diff --]
[-- Type: text/plain, Size: 2078 bytes --]
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index b8fab44394f5..9e759a0f9c10 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -2586,8 +2586,11 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
bdev = blkdev_get_by_path(device_path, FMODE_WRITE | FMODE_EXCL,
fs_info->bdev_holder);
- if (IS_ERR(bdev))
+ if (IS_ERR(bdev)) {
+ pr_info("%s: failed to get blkdev: %ld\n", __func__,
+ PTR_ERR(bdev));
return PTR_ERR(bdev);
+ }
if (!btrfs_check_device_zone_type(fs_info, bdev)) {
ret = -EINVAL;
@@ -2617,6 +2620,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
if (IS_ERR(device)) {
/* we can safely leave the fs_devices entry around */
ret = PTR_ERR(device);
+ pr_info("%s: failed to alloc dev: %d\n", __func__, ret);
goto error;
}
@@ -2637,6 +2641,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
trans = btrfs_start_transaction(root, 0);
if (IS_ERR(trans)) {
ret = PTR_ERR(trans);
+ pr_info("%s: failed to start transaction: %d\n", __func__, ret);
goto error_free_zone;
}
@@ -2741,8 +2746,10 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
up_write(&sb->s_umount);
locked = false;
- if (ret) /* transaction commit */
+ if (ret) /* transaction commit */ {
+ pr_info("%s: failed to commit trans: %d\n", __func__, ret);
return ret;
+ }
ret = btrfs_relocate_sys_chunks(fs_info);
if (ret < 0)
@@ -2753,6 +2760,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
if (PTR_ERR(trans) == -ENOENT)
return 0;
ret = PTR_ERR(trans);
+ pr_info("%s: failed to attach trans: %d\n", __func__, ret);
trans = NULL;
goto error_sysfs;
}
@@ -2771,6 +2779,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
/* Update ctime/mtime for blkid or udev */
update_dev_time(device_path);
+ pr_info("%s: final ret: %d\n", __func__, ret);
return ret;
error_sysfs:
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: Adding Device Fails - Why?
2021-03-01 12:06 ` Qu Wenruo
@ 2021-03-01 12:10 ` Christian Völker
0 siblings, 0 replies; 10+ messages in thread
From: Christian Völker @ 2021-03-01 12:10 UTC (permalink / raw)
To: Qu Wenruo, linux-btrfs
Hi,
unfortunately I do not have any sources or compilers installed on this
box. So I am unable to install this here. I can not even take a snapshot
to install and compile because it is a two-node setup with drbd so
resetting to a snapshot will fail for the drbd sync.
A reboot did not help.
I am happy in helping to debug this issue. But compiling on the
"production" machine is not really fine...
I will setup a different machine to see if I can reproduce it there (I
doubt it, though)....
/KNEBB
Am 01.03.2021 um 13:06 schrieb Qu Wenruo:
>
>
> On 2021/3/1 下午7:19, Christian Völker wrote:
>> Hi all,
>>
>> I am using BTRS on a Debian10 system. I am trying to extend my existing
>> filesystem with another device but adding it fails for no reason.
>>
>> This is my setup of existing btrfs:
>>
>> 2x DRBD Devices (Network RAID1)
>> top of each a luks encrypted device (crypt_drbd1 and crypt_drbd3):
>>
>> vdb 254:16 0 1,1T 0 disk
>> └─drbd1 147:1 0 1,1T 0 disk
>> └─crypt_drbd1 253:3 0 1,1T 0 crypt
>> vdc 254:32 0 900G 0 disk
>> └─drbd2 147:2 0 900G 0 disk
>> └─crypt2 253:4 0 900G 0 crypt
>> vdd 254:48 0 800G 0 disk
>> └─drbd3 147:3 0 800G 0 disk
>> └─crypt_drbd3 253:5 0 800G 0 crypt /var/lib/backuppc
>>
>>
>>
>> I have now a third drbd device (drbd2) which I encrypted, too (crypt2).
>> And tried to add to existing fi.
>> Here further system information:
>>
>> Linux backuppc41 5.10.0-3-amd64 #1 SMP Debian 5.10.13-1 (2021-02-06)
>> x86_64 GNU/Linux
>> btrfs-progs v5.10.1
>>
>> root@backuppc41:~# btrfs fi sh
>> Label: 'backcuppc' uuid: 73b98c7b-832a-437a-a15b-6cb00734e5db
>> Total devices 2 FS bytes used 1.83TiB
>> devid 3 size 799.96GiB used 789.96GiB path dm-5
>> devid 4 size 1.07TiB used 1.06TiB path dm-3
>>
>>
>> I can create an additional btrfs filesystem with mkfs.btrfs on the new
>> device without any issues:
>>
>> root@backuppc41:~# btrfs fi sh
>> Label: 'backcuppc' uuid: 73b98c7b-832a-437a-a15b-6cb00734e5db
>> Total devices 2 FS bytes used 1.83TiB
>> devid 3 size 799.96GiB used 789.96GiB path dm-5
>> devid 4 size 1.07TiB used 1.06TiB path dm-3
>>
>> Label: none uuid: b111a08e-2969-457a-b9f1-551ff65451d1
>> Total devices 1 FS bytes used 128.00KiB
>> devid 1 size 899.96GiB used 2.02GiB path /dev/mapper/crypt2
>>
>>
>> But I can not add this device to the existing btrfs fi:
>> root@backuppc41:~# wipefs /dev/mapper/crypt2 -a
>> /dev/mapper/crypt2: 8 bytes were erased at offset 0x00010040 (btrfs): 5f
>> 42 48 52 66 53 5f 4d
>>
>> root@backuppc41:~# btrfs device add /dev/mapper/crypt2
>> /var/lib/backuppc/
>> ERROR: error adding device 'dm-4': No such file or directory
>>
>> This is what I see in dmesg:
>> [43827.535383] BTRFS info (device dm-5): disk added /dev/drbd2
>> [43868.910994] BTRFS info (device dm-5): device deleted: /dev/drbd2
>> [48125.323995] BTRFS: device fsid 2b4b631c-b500-4f8d-909c-e88b012eba1e
>> devid 1 transid 5 /dev/mapper/crypt2 scanned by mkfs.btrfs (4937)
>> [57799.499249] BTRFS: device fsid b111a08e-2969-457a-b9f1-551ff65451d1
>> devid 1 transid 5 /dev/mapper/crypt2 scanned by mkfs.btrfs (5178)
>
> If you can recompile btrfs module, would you mind to test the following
> diff to help us debugging the problem?
>
> Of course, after applying the diff and recompiling the module, you still
> need to use the new btrfs module to try add the device again to trigger
> the error.
>
> Thanks,
> Qu
>>
>>
>>
>> And these are the mapping in dm:
>>
>> root@backuppc41:~# ll /dev/mapper/
>> insgesamt 0
>> lrwxrwxrwx 1 root root 7 28. Feb 21:08 backuppc41--vg-root ->
>> ../dm-1
>> lrwxrwxrwx 1 root root 7 28. Feb 21:08 backuppc41--vg-swap_1 ->
>> ../dm-2
>> crw------- 1 root root 10, 236 28. Feb 21:08 control
>> lrwxrwxrwx 1 root root 7 1. Mär 12:12 crypt2 -> ../dm-4
>> lrwxrwxrwx 1 root root 7 28. Feb 20:21 crypt_drbd1 -> ../dm-3
>> lrwxrwxrwx 1 root root 7 28. Feb 20:21 crypt_drbd3 -> ../dm-5
>> lrwxrwxrwx 1 root root 7 28. Feb 21:08 vda5_crypt -> ../dm-0
>>
>>
>> Anyone having an idea why I can not add the device to the existing
>> filesystem? The error message is not really helpful...
>>
>> Thanks a lot!
>>
>> /KNEBB
>>
>>
>>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Adding Device Fails - Why?
2021-03-01 11:19 Adding Device Fails - Why? Christian Völker
2021-03-01 11:44 ` Hugo Mills
2021-03-01 12:06 ` Qu Wenruo
@ 2021-03-01 17:24 ` Christian Völker
2021-03-02 1:18 ` Qu Wenruo
2 siblings, 1 reply; 10+ messages in thread
From: Christian Völker @ 2021-03-01 17:24 UTC (permalink / raw)
To: linux-btrfs
Hi,
just a little update on the issue.
As soon as I omit the encryption part I can easily add the device to the
btrfs filesystem. It does not matter if the crypted device is on top of
DRBD or directly on the /dev/sdc. In both cases btrs refuses to add the
device when a luks-encrypted device is on top.
In case I am swapping my setup (drbd on top of encryption) and add the
drbd device to btrfs it works without any issues.
However, I prefer the other way round- and as the other two btrfs
devices are both encryption on top of drbd it should work...
It appears it does not like to add a third device-mapper device...
Let me know how I can help in debugging. If i have some time I will
setup a machine trying to reproduce this.
any ideas otherwise? Let me know!
Thanks!
/KNEBB
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Adding Device Fails - Why?
2021-03-01 17:24 ` Christian Völker
@ 2021-03-02 1:18 ` Qu Wenruo
2021-03-02 7:10 ` Christian Völker
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Qu Wenruo @ 2021-03-02 1:18 UTC (permalink / raw)
To: Christian Völker, linux-btrfs, David Sterba
On 2021/3/2 上午1:24, Christian Völker wrote:
> Hi,
>
> just a little update on the issue.
>
> As soon as I omit the encryption part I can easily add the device to the
> btrfs filesystem. It does not matter if the crypted device is on top of
> DRBD or directly on the /dev/sdc. In both cases btrs refuses to add the
> device when a luks-encrypted device is on top.
>
> In case I am swapping my setup (drbd on top of encryption) and add the
> drbd device to btrfs it works without any issues.
>
> However, I prefer the other way round- and as the other two btrfs
> devices are both encryption on top of drbd it should work...
>
> It appears it does not like to add a third device-mapper device...
>
> Let me know how I can help in debugging. If i have some time I will
> setup a machine trying to reproduce this.
Got the problem reproduced here.
And surprisingly, it's something related to btrfs-progs, not the kernel.
I just added one debug info in btrfs-progs, it shows:
$ sudo ./btrfs dev add /dev/test/scratch2 /mnt/btrfs
cmd_device_add: path=dm-5
ERROR: error adding device 'dm-5': No such file or directory
See the problem?
The path which should be passed to kernel lacks the "/dev/test/" prefix,
thus it's not pointing to correct path and cause the ENOENT error, since
there is no "dm-5" in current path.
Thankfully it's already fixed in devel branch with commit 2347b34af4d8
("btrfs-progs: fix device mapper path canonicalization").
The offending patch is 922eaa7b5472 ("btrfs-progs: build: fix linking
with static libmount"), which is in v5.10.1.
You can revert back to v5.10 to workaroud it.
TO David,
Would you consider to add a new v5.10.2 to fix the problem? As it seems
to affect the end user quite badly.
Thanks,
Qu
>
> any ideas otherwise? Let me know!
>
> Thanks!
>
> /KNEBB
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Adding Device Fails - Why?
2021-03-02 1:18 ` Qu Wenruo
@ 2021-03-02 7:10 ` Christian Völker
2021-03-02 7:26 ` Christian Völker
[not found] ` <4890dd37-3ef1-e589-9fd1-543a993436c4@knebb.de>
2 siblings, 0 replies; 10+ messages in thread
From: Christian Völker @ 2021-03-02 7:10 UTC (permalink / raw)
To: linux-btrfs, David Sterba
Hi Qu Wenro,
thanks for debugging this. What I am wondering- why did it work when
creating the initial device?
For Debian it looks like there is no other version of btrfs-progs
available, so I used this version (5.10.1-1) to create the btrfs device.
And may I workaround this issue by manually creating a softlink
/dev/manualdevice to /dev/mappper/crypt_drbd3? The link will be gone
after reboot but btrfs should then find the device by it's UUID,
shouldn't it?
Greetings
/KNEBB
Am 02.03.2021 um 02:18 schrieb Qu Wenruo:
>
>
> On 2021/3/2 上午1:24, Christian Völker wrote:
>> Hi,
>>
>> just a little update on the issue.
>>
>> As soon as I omit the encryption part I can easily add the device to the
>> btrfs filesystem. It does not matter if the crypted device is on top of
>> DRBD or directly on the /dev/sdc. In both cases btrs refuses to add the
>> device when a luks-encrypted device is on top.
>>
>> In case I am swapping my setup (drbd on top of encryption) and add the
>> drbd device to btrfs it works without any issues.
>>
>> However, I prefer the other way round- and as the other two btrfs
>> devices are both encryption on top of drbd it should work...
>>
>> It appears it does not like to add a third device-mapper device...
>>
>> Let me know how I can help in debugging. If i have some time I will
>> setup a machine trying to reproduce this.
>
> Got the problem reproduced here.
>
> And surprisingly, it's something related to btrfs-progs, not the kernel.
>
> I just added one debug info in btrfs-progs, it shows:
>
> $ sudo ./btrfs dev add /dev/test/scratch2 /mnt/btrfs
> cmd_device_add: path=dm-5
> ERROR: error adding device 'dm-5': No such file or directory
>
> See the problem?
>
> The path which should be passed to kernel lacks the "/dev/test/" prefix,
> thus it's not pointing to correct path and cause the ENOENT error, since
> there is no "dm-5" in current path.
>
> Thankfully it's already fixed in devel branch with commit 2347b34af4d8
> ("btrfs-progs: fix device mapper path canonicalization").
>
> The offending patch is 922eaa7b5472 ("btrfs-progs: build: fix linking
> with static libmount"), which is in v5.10.1.
>
> You can revert back to v5.10 to workaroud it.
>
>
> TO David,
>
> Would you consider to add a new v5.10.2 to fix the problem? As it seems
> to affect the end user quite badly.
>
> Thanks,
> Qu
>>
>> any ideas otherwise? Let me know!
>>
>> Thanks!
>>
>> /KNEBB
>>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Adding Device Fails - Why?
2021-03-02 1:18 ` Qu Wenruo
2021-03-02 7:10 ` Christian Völker
@ 2021-03-02 7:26 ` Christian Völker
[not found] ` <4890dd37-3ef1-e589-9fd1-543a993436c4@knebb.de>
2 siblings, 0 replies; 10+ messages in thread
From: Christian Völker @ 2021-03-02 7:26 UTC (permalink / raw)
To: Qu Wenruo, linux-btrfs, David Sterba
Ok,
tried to do with a symlink. No working, getting segfault:
>root@backuppc41:/dev# ln -s mapper/crypt_test crypt_temp
>root@backuppc41:/dev# btrfs de ad /dev/crypt_temp /var/lib/backuppc/
>Speicherzugriffsfehler
Greetings
/KNEBB
Am 02.03.2021 um 02:18 schrieb Qu Wenruo:
>
>
> On 2021/3/2 上午1:24, Christian Völker wrote:
>> Hi,
>>
>> just a little update on the issue.
>>
>> As soon as I omit the encryption part I can easily add the device to the
>> btrfs filesystem. It does not matter if the crypted device is on top of
>> DRBD or directly on the /dev/sdc. In both cases btrs refuses to add the
>> device when a luks-encrypted device is on top.
>>
>> In case I am swapping my setup (drbd on top of encryption) and add the
>> drbd device to btrfs it works without any issues.
>>
>> However, I prefer the other way round- and as the other two btrfs
>> devices are both encryption on top of drbd it should work...
>>
>> It appears it does not like to add a third device-mapper device...
>>
>> Let me know how I can help in debugging. If i have some time I will
>> setup a machine trying to reproduce this.
>
> Got the problem reproduced here.
>
> And surprisingly, it's something related to btrfs-progs, not the kernel.
>
> I just added one debug info in btrfs-progs, it shows:
>
> $ sudo ./btrfs dev add /dev/test/scratch2 /mnt/btrfs
> cmd_device_add: path=dm-5
> ERROR: error adding device 'dm-5': No such file or directory
>
> See the problem?
>
> The path which should be passed to kernel lacks the "/dev/test/" prefix,
> thus it's not pointing to correct path and cause the ENOENT error, since
> there is no "dm-5" in current path.
>
> Thankfully it's already fixed in devel branch with commit 2347b34af4d8
> ("btrfs-progs: fix device mapper path canonicalization").
>
> The offending patch is 922eaa7b5472 ("btrfs-progs: build: fix linking
> with static libmount"), which is in v5.10.1.
>
> You can revert back to v5.10 to workaroud it.
>
>
> TO David,
>
> Would you consider to add a new v5.10.2 to fix the problem? As it seems
> to affect the end user quite badly.
>
> Thanks,
> Qu
>>
>> any ideas otherwise? Let me know!
>>
>> Thanks!
>>
>> /KNEBB
>>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Adding Device Fails - Why?
[not found] ` <4890dd37-3ef1-e589-9fd1-543a993436c4@knebb.de>
@ 2021-03-02 7:31 ` Qu Wenruo
2021-03-02 21:24 ` Christian Völker
0 siblings, 1 reply; 10+ messages in thread
From: Qu Wenruo @ 2021-03-02 7:31 UTC (permalink / raw)
To: Christian Völker, linux-btrfs
On 2021/3/2 下午3:09, Christian Völker wrote:
> Hi Qu Wenro,
>
> thanks for debugging this. What I am wondering- why did it work when
> creating the initial device?
Fs creation (mkfs) doesn't canonicalize the path, and it all happens in
user space, so no problem.
Only device add is affected, and if the device to be added is not a
device mapped dev (aka /dev/dm-*) then even with the offending v5.10.1
you can still add the device, just like what you tried by using drbd
over luks.
> For Debian it looks like there is no other version of btrfs-progs
> available, so I used this version (5.10.1-1) to create the btrfs device.
>
> And may I workaround this issue by manually creating a softlink
> /dev/manualdevice to /dev/mappper/crypt_drbd3? The link will be gone
> after reboot but btrfs should then find the device by it's UUID,
> shouldn't it?
I just tried, that, it doesn't work.
The path canonicalization happens by following the softlink until it
reaches the final /dev/dm-* block file, and then cut the "/dev/" prefix
wrongly, leaving just "dm-*".
So even you added a softlink, it won't help.
I just tried that, and it failed:
$ sudo ln -sf /dev/test/scratch2 /dev/whatever
$ sudo btrfs dev add /dev/whatever /mnt/btrfs/ -f
ERROR: error adding device 'dm-5': No such file or directory
But, if you manually create a block device file, with the same device
major/minor number, then you can add it using the newly created block
device file, just like this:
$ ls -alh /dev/dm-5
brw-rw---- 1 root disk 253, 5 Mar 2 15:24 /dev/dm-5
$ sudo mknod ~/whatever b 253 5
$ sudo btrfs dev add ~/whatever /mnt/btrfs/ -f
$ sudo btrfs fi show /mnt/btrfs/
Label: none uuid: 82631967-0b16-40f2-b545-0039fe9b9653
Total devices 2 FS bytes used 192.00KiB
devid 1 size 10.00GiB used 536.00MiB path dm-4
devid 2 size 10.00GiB used 0.00B path /home/adam/whatever
Thanks,
Qu
>
> Greetings
>
> /KNEBB
>
>
>
>
> Am 02.03.2021 um 02:18 schrieb Qu Wenruo:
>>
>>
>> On 2021/3/2 上午1:24, Christian Völker wrote:
>>> Hi,
>>>
>>> just a little update on the issue.
>>>
>>> As soon as I omit the encryption part I can easily add the device to the
>>> btrfs filesystem. It does not matter if the crypted device is on top of
>>> DRBD or directly on the /dev/sdc. In both cases btrs refuses to add the
>>> device when a luks-encrypted device is on top.
>>>
>>> In case I am swapping my setup (drbd on top of encryption) and add the
>>> drbd device to btrfs it works without any issues.
>>>
>>> However, I prefer the other way round- and as the other two btrfs
>>> devices are both encryption on top of drbd it should work...
>>>
>>> It appears it does not like to add a third device-mapper device...
>>>
>>> Let me know how I can help in debugging. If i have some time I will
>>> setup a machine trying to reproduce this.
>>
>> Got the problem reproduced here.
>>
>> And surprisingly, it's something related to btrfs-progs, not the kernel.
>>
>> I just added one debug info in btrfs-progs, it shows:
>>
>> $ sudo ./btrfs dev add /dev/test/scratch2 /mnt/btrfs
>> cmd_device_add: path=dm-5
>> ERROR: error adding device 'dm-5': No such file or directory
>>
>> See the problem?
>>
>> The path which should be passed to kernel lacks the "/dev/test/" prefix,
>> thus it's not pointing to correct path and cause the ENOENT error, since
>> there is no "dm-5" in current path.
>>
>> Thankfully it's already fixed in devel branch with commit 2347b34af4d8
>> ("btrfs-progs: fix device mapper path canonicalization").
>>
>> The offending patch is 922eaa7b5472 ("btrfs-progs: build: fix linking
>> with static libmount"), which is in v5.10.1.
>>
>> You can revert back to v5.10 to workaroud it.
>>
>>
>> TO David,
>>
>> Would you consider to add a new v5.10.2 to fix the problem? As it seems
>> to affect the end user quite badly.
>>
>> Thanks,
>> Qu
>>>
>>> any ideas otherwise? Let me know!
>>>
>>> Thanks!
>>>
>>> /KNEBB
>>>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Adding Device Fails - Why?
2021-03-02 7:31 ` Qu Wenruo
@ 2021-03-02 21:24 ` Christian Völker
0 siblings, 0 replies; 10+ messages in thread
From: Christian Völker @ 2021-03-02 21:24 UTC (permalink / raw)
To: Qu Wenruo, linux-btrfs
Hi,
thanks to Qu Wenruo it worked for me as he suggested.
So I created my additional drbd device and put the encryption on top of
it. To workaround the issue with adding a device with /dev/mapper/ as
prefix I created in my /root a node with the same major and minor
numbers as the dm-* device. Once the device got added I removed the
created node and everything went fine. Trying to use a created symlink
did not work, neither adding the dm-* device directly.
Steps in detail:
>root@backuppc41:/dev/mapper# ll
>insgesamt 0
>crw------- 1 root root 10, 236 2. Mär 13:27 control
>lrwxrwxrwx 1 root root 7 2. Mär 13:48 crypt_drbd1 -> ../dm-3
>lrwxrwxrwx 1 root root 7 2. Mär 13:48 crypt_drbd2 -> ../dm-4
>lrwxrwxrwx 1 root root 7 2. Mär 13:48 crypt_drbd3 -> ../dm-5
The device to be added is crypt_drbd3 so I need to find the major/minor
number of the dm-5 device:
>root@backuppc41:/dev# ll /dev| grep dm-5
>brw-rw---- 1 root disk 253, 5 2. Mär 13:48 dm-5
Ok, got all I need. Now going to create the (temp) device node:
>root@backuppc41:~# mknod ~/temp_node b 253 2
Now I was finally able to add the device by the created node:
>root@backuppc41:~# btrfs de add /root/temp_node /mnt
Now remove the temp_node and I rebooted the box. After reboot the device
was still added to my btrfs-filesystem. Perfect!
Thanks again to all!
/KNEBB
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-03-03 2:02 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-01 11:19 Adding Device Fails - Why? Christian Völker
2021-03-01 11:44 ` Hugo Mills
2021-03-01 12:06 ` Qu Wenruo
2021-03-01 12:10 ` Christian Völker
2021-03-01 17:24 ` Christian Völker
2021-03-02 1:18 ` Qu Wenruo
2021-03-02 7:10 ` Christian Völker
2021-03-02 7:26 ` Christian Völker
[not found] ` <4890dd37-3ef1-e589-9fd1-543a993436c4@knebb.de>
2021-03-02 7:31 ` Qu Wenruo
2021-03-02 21:24 ` Christian Völker
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.