Re: Multidevice f2fs mount after disk rearrangement

From: Oleksandr Natalenko
Date: Sat Jan 04 2020 - 16:52:56 EST


Hi.

On 04.01.2020 17:29, Oleksandr Natalenko wrote:
I was brave enough to create f2fs filesystem spanning through 2
physical device using this command:

# mkfs.f2fs -t 0 /dev/sdc -c /dev/sdd

It worked fine until I removed /dev/sdb from my system, so f2fs devices became:

/dev/sdc -> /dev/sdb
/dev/sdd -> /dev/sdc

Now, when I try to mount it, I get the following:

# mount -t f2fs /dev/sdb /mnt/fs
mount: /mnt/fs: mount(2) system call failed: No such file or directory.

In dmesg:

[Jan 4 17:25] F2FS-fs (sdb): Mount Device [ 0]: /dev/sdc,
59063, 0 - 1cd6fff
[ +0,000024] F2FS-fs (sdb): Failed to find devices

fsck also fails with the following assertion:

[ASSERT] (init_sb_info: 908) !strcmp((char *)sb->devs[i].path, (char
*)c.devices[i].path)

Am I doing something obviously stupid, and the device path can be
(somehow) changed so that the mount succeeds, or this is unfixable,
and f2fs relies on persistent device naming?

Please suggest.

Thank you.

Erm, fine. I studied f2fs-tools code a little bit and discovered that superblock indeed had /dev/sdX paths saved as strings. So I fired up hexedit and just changed the superblock directly on the first device, substituting sdc with sdb and sdd with sdc (I did it twice; I guess there are 2 copies of superblock), and after this the mount worked.

Am I really supposed to do this manually ;)?

--
Oleksandr Natalenko (post-factum)