Thread (7 messages) 7 messages, 2 authors, 2020-01-18

Re: undo make-bcache (was: Re: Can't mount an encrypted backing device)

From: Clodoaldo Neto <hidden>
Date: 2020-01-18 12:22:47

On Sat, Jan 18, 2020 at 7:54 AM Clodoaldo Neto
[off-list ref] wrote:
On Thu, Jan 16, 2020 at 9:59 PM Coly Li [off-list ref] wrote:
quoted
On 2020/1/17 5:52 上午, Clodoaldo Neto wrote:
quoted
Em seg, 13 de jan de 2020 11:19, Coly Li <colyli@suse.de
<mailto:colyli@suse.de>> escreveu:
quoted
On 2020/1/13 8:44 下午, Jens-U. Mozdzen wrote:
quoted
Hi Coly,

jumping in here, because I was looking for a way to revert from bcache
to plain device:

Zitat von Coly Li <colyli@suse.de <mailto:colyli@suse.de>>:
quoted
The super block location of the backing disk is occupied by bcache. You
cannot mount the file system directly from the backing disk which is
formated as bcache backing device [...] (bcache offset all I/Os on
bcache device 4KB behind the requesting
LBA on backing disk).
Assuming that no caching device is associated with a backing device (so
the backing device is "clean" as in "containing all data blocks with the
current content"), could one convert the content of a backing device to
a "non-bcached device" by removing the first 4096 octets of the backing
device content?

Something like "dd if=backingdev of=newdev skip_bytes=4096 ..."?
Hi Jens-U,

you may try dmsetup to setup a linear device mapper target, and the map
table just skipping the first 4KB (bcache superblock area). If you are
lucky, I mean the real file system is not corrupted, the created device
mapper target can be mounted directly.

I'm trying dmsetup but it does not accept anything other than 0 and 0
at the beginning and end of the table:

# echo '0 3774578672 linear /dev/mapper/backing-device 8' | dmsetup
create dmb
device-mapper: reload ioctl on dmb  failed: Invalid argument
Command failed.
The above line should work, if 3774578672 is a correct size number in
sectors.
I took it from the original map:

# dmsetup table /dev/mapper/backing-device
0 3774578672 crypt aes-xts-plain64
:64:logon:cryptsetup:7e2c0b40-8dec-4b13-8d00-b53b55160775-d0 0 251:0
32768
It works like this:

# echo '0 3774578664 linear /dev/mapper/backing-device 8' | dmsetup create dmb

But then I can't mount it:

# mount /dev/mapper/dmb /r
mount: /r: wrong fs type, bad option, bad superblock on
/dev/mapper/dmb, missing codepage or helper program, or other error.
quoted
quoted
# echo '8 3774578664 linear /dev/mapper/backing-device 0' | dmsetup
create dmb
device-mapper: reload ioctl on dmb  failed: Invalid argument
Command failed.

I'm not sure about how it works. Is it not 8 sectors for 4k bytes?
It works on my side, my kernel is Linux v5.5-rc2, lvm2 version is
2.02.180, dmsetup version is 1.02.149. The difference is the device
size, my disk size is much less.

--

Coly Li
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help