kernel-packages team mailing list archive
-
kernel-packages team
-
Mailing list archive
-
Message #132031
[Bug 1377142] Re: Bcache doesn't allow full unregistering without rebooting
While the interface is annoying, it *is* possible to have bcache let go
of both backing store and cache devices via the sysfs interfaces.
** Changed in: bcache-tools (Ubuntu)
Status: New => Invalid
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1377142
Title:
Bcache doesn't allow full unregistering without rebooting
Status in bcache-tools package in Ubuntu:
Invalid
Status in linux package in Ubuntu:
Incomplete
Bug description:
If you create a bcache device, you can't reuse all your
disk/partitions without a reboot.
You can reproduce the case this way:
start a vm with 2 disks (caching must be bigger or equal to the
backing cf bug :1377130) and an iso of utopic desktop amd64
create the bcache device:
make-bcache --writeback --discard -C /dev/sda -B /dev/sdb
UUID: b245150d-cfbe-4f90-836a-343e0e1a4c55
Set UUID: c990a31a-f531-4231-9603-d40230dc6504
version: 0
nbuckets: 16384
block_size: 1
bucket_size: 1024
nr_in_set: 1
nr_this_dev: 0
first_bucket: 1
UUID: cc31e0bb-db29-4115-a1b2-e9ff54e5f127
Set UUID: c990a31a-f531-4231-9603-d40230dc6504
version: 1
block_size: 1
data_offset: 16
******************************
command:
lsblk
result:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
└─bcache0 251:0 0 16G 0 disk
sdb 8:16 0 16G 0 disk
└─bcache0 251:0 0 16G 0 disk
sr0 11:0 1 1,1G 0 rom /cdrom
loop0 7:0 0 1,1G 1 loop /rofs
******************************
All is good
lsmod | grep bcache:
bcache 227884 3
format the bcache device:
******************************
command:
mkfs.ext4 /dev/bcache0
result:
Rejet des blocs de périphérique : 4096/4194302 complété
Creating filesystem with 4194302 4k blocks and 1048576 inodes
Filesystem UUID: 587d2249-3eaf-4590-a00d-42939f257e99
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocation des tables de groupe : 0/128 complété
Écriture des tables d'i-noeuds : 0/128 complété
Création du journal (32768 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : 0/128 2/128 complété
******************************
Now mount it:
mount /dev/bcache0 /mnt/
mkdir /mnt/test_dir
touch /mnt/test_file
state of: /sys/fs/bcache/
ls /sys/fs/bcache/
c990a31a-f531-4231-9603-d40230dc6504
register
register_quiet
bcache-super-show /dev/sda
sb.magic ok
sb.first_sector 8 [match]
sb.csum E6A8D9AC496B0B04 [match]
sb.version 3 [cache device]
dev.label (empty)
dev.uuid b245150d-cfbe-4f90-836a-343e0e1a4c55
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 16776192
dev.cache.total_sectors 16777216
dev.cache.ordered yes
dev.cache.discard yes
dev.cache.pos 0
dev.cache.replacement 0 [lru]
cset.uuid c990a31a-f531-4231-9603-d40230dc6504
******************************
bcache-super-show -f /dev/sdb
sb.magic ok
sb.first_sector 8 [match]
sb.csum 9600B159F36A67DD [match]
sb.version 1 [backing device]
dev.label (empty)
dev.uuid cc31e0bb-db29-4115-a1b2-e9ff54e5f127
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.data.first_sector 16
dev.data.cache_mode 1 [writeback]
dev.data.cache_state 2 [dirty]
cset.uuid c990a31a-f531-4231-9603-d40230dc6504
******************************
mount:
/dev/bcache0 on /mnt type ext4 (rw)
we will unregister the bcache:
echo 1 /sys/fs/bcache/c990a31a-f531-4231-9603-d40230dc6504/unregister
check the content of /sys/fs/bcache
ls /sys/fs/bcache/
register
register_quiet
So bcache is unregistered, but status of /dev/sda:
bcache-super-show -f /dev/sda
sb.magic ok
sb.first_sector 8 [match]
sb.csum E6A8D9AC496B0B04 [match]
sb.version 3 [cache device]
dev.label (empty)
dev.uuid b245150d-cfbe-4f90-836a-343e0e1a4c55
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 16776192
dev.cache.total_sectors 16777216
dev.cache.ordered yes
dev.cache.discard yes
dev.cache.pos 0
dev.cache.replacement 0 [lru]
cset.uuid c990a31a-f531-4231-9603-d40230dc6504
command:
bcache-super-show -f /dev/sdb
result:
sb.magic ok
sb.first_sector 8 [match]
sb.csum D41799F794675FA8 [match]
sb.version 1 [backing device]
dev.label (empty)
dev.uuid cc31e0bb-db29-4115-a1b2-e9ff54e5f127
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.data.first_sector 16
dev.data.cache_mode 1 [writeback]
dev.data.cache_state 0 [detached]
cset.uuid 00000000-0000-0000-0000-000000000000
******************************
Maybe I'm wrong, but I would expect the cahing device to be
000000000ed not the backing device, as we may still want to use the
data on it.
But data is still accessible on the mount point.
So we wipe /dev/sda now:
******************************
command:
wipefs -a /dev/sda
result:
/dev/sda: 16 bytes were erased at offset 0x00001018 (bcache): c6 85 73 f6 4e 1a 45 ca 82 65 f5 7f 48 ba 6d 81
******************************
mount:
/dev/bcache0 on /mnt type ext4 (rw)
data still there:
******************************
command:
ls /mnt/
result:
lost+found
test_dir
test_file
******************************
******************************
command:
lsblk
result:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
sdb 8:16 0 16G 0 disk
└─bcache0 251:0 0 16G 0 disk /mnt
sr0 11:0 1 1,1G 0 rom /cdrom
loop0 7:0 0 1,1G 1 loop /rofs
******************************
Ok now we can backup our data if we need to, next, we will umount:
umount /mnt/
ok no errors.
lsblk:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
sdb 8:16 0 16G 0 disk
└─bcache0 251:0 0 16G 0 disk
sr0 11:0 1 1,1G 0 rom /cdrom
loop0 7:0 0 1,1G 1 loop /rofs
******************************
bcache0 is still there, ok, but how to delete to unregister it
definitively?
ls /sys/fs/bcache/
result:
register
register_quiet
**************
lsmod
result:
Module Size Used by
bcache 227884 1
we can't wipefs -a /dev/sdb, device is in use, so we reboot machine
(NOT OK)
in the vm:
ls /sys/fs/bcache/
result:
register
register_quiet
update packages and reinstall bcache-tools:
bcache-super-show -f /dev/sda
result:
Invalid superblock (bad magic)
sb.magic bad magic
bcache-super-show -f /dev/sdb
result:
sb.magic ok
sb.first_sector 8 [match]
sb.csum D41799F794675FA8 [match]
sb.version 1 [backing device]
dev.label (empty)
dev.uuid cc31e0bb-db29-4115-a1b2-e9ff54e5f127
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.data.first_sector 16
dev.data.cache_mode 1 [writeback]
dev.data.cache_state 0 [detached]
cset.uuid 00000000-0000-0000-0000-000000000000
Now we can wipe /dev/sdb because we rebooted, and bcache don't use the device anymore:
wipefs -a /dev/sdb
result:
/dev/sdb: 16 bytes were erased at offset 0x00001018 (bcache): c6 85 73 f6 4e 1a 45 ca 82 65 f5 7f 48 ba 6d 81
**********************************************************
Now I can re-use my device, but I needed a reboot. Maybe we also must
have better bcache management tools.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bcache-tools/+bug/1377142/+subscriptions
References