Thread (22 messages) 22 messages, 2 authors, 2015-08-07

Re: [ANNOUNCE] bcachefs!

From: Kent Overstreet <hidden>
Date: 2015-07-17 23:51:37

On Fri, Jul 17, 2015 at 04:48:31PM -0700, Ming Lin wrote:
On Fri, 2015-07-17 at 16:40 -0700, Kent Overstreet wrote:
quoted
On Fri, Jul 17, 2015 at 04:35:55PM -0700, Ming Lin wrote:
quoted
On Fri, 2015-07-17 at 16:17 -0700, Kent Overstreet wrote:
quoted
On Wed, Jul 15, 2015 at 12:39:36AM -0700, Ming Lin wrote:
quoted
On Wed, Jul 15, 2015 at 12:15 AM, Ming Lin [off-list ref] wrote:
quoted
On Tue, 2015-07-14 at 23:58 -0700, Kent Overstreet wrote:
quoted
Can you strace it?
Strange. Now error message changed.
I mean sometimes it showed:

mount: /dev/sdt already mounted or /mnt/ busy
I have no idea what's going on, it works for me - is there anything unusual
about your setup? what kind of block device is /dev/sdt? is there any chance
there's another process that has it open? maybe try rebooting?
It's a regular HDD. I tried rebooting several times.

Now I try in qemu-kvm. Only the first time it can be mounted.

On host: qemu-img create hdd1.img 20G
On guest: it's /dev/vda

root@block:~# bcacheadm format -C /dev/vda 
UUID:			4730ed95-4c57-42db-856c-dbce36085625
Set UUID:		e69ef0e0-0344-40d7-a6b1-c23d14745a32
version:		6
nbuckets:		40960
block_size:		1
bucket_size:		1024
nr_in_set:		1
nr_this_dev:		0
first_bucket:		3

root@block:~# mount -t bcache /dev/vda /mnt/

root@block:~# mount |grep bcache
/dev/vda on /mnt type bcache (rw,relatime)

root@block:~# reboot

root@block:~# dmesg |grep -i bcache
[    2.548754] bcache: bch_journal_replay() journal replay done, 1 keys in 1 entries, seq 3
[    2.636217] bcache: register_cache() registered cache device vda


root@block:~# mount -t bcache /dev/vda /mnt/
mount: No such file or directory

Now dmesg shows:

bcache: bch_open_as_blockdevs() register_cache_set err device already registered
Ohhhh.

The cache set is getting registered by the udev hooks. We should be able to
mount it anyways - same as you can mount any other fs in multiple locations.

I won't be able to fix this for at least a couple days, but for now - just
shut it down it via sysfs (echo 1 > /sys/fs/bcache/<uuid>/stop), then mount it.
It works!
Any hint how to fix it? On udev or bcache-tool or kernel?
I'd like to fix it.
The relevant code is in drivers/md/bcache/fs.c, bch_mount() ->
bch_open_as_blockdevs().

Part of the problem is that bcachefs isn't able to use much of the normal
generic mount path for block devices, partly because a fs can span multiple
block devices (same as btrfs).

I'm not sure the right way to fix it - it's going to take some thought, but
we want to do something like "is it already open? just take a ref on the
existing cache set".
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help