* Multidevice f2fs mount after disk rearrangement @ 2020-01-04 16:29 Oleksandr Natalenko 2020-01-04 21:52 ` Oleksandr Natalenko 0 siblings, 1 reply; 9+ messages in thread From: Oleksandr Natalenko @ 2020-01-04 16:29 UTC (permalink / raw) To: linux-f2fs-devel; +Cc: linux-kernel, Jaegeuk Kim, Chao Yu Hello. 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. -- Oleksandr Natalenko (post-factum) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Multidevice f2fs mount after disk rearrangement 2020-01-04 16:29 Multidevice f2fs mount after disk rearrangement Oleksandr Natalenko @ 2020-01-04 21:52 ` Oleksandr Natalenko 2020-01-06 3:41 ` [f2fs-dev] " Chao Yu 2020-01-06 18:34 ` Jaegeuk Kim 0 siblings, 2 replies; 9+ messages in thread From: Oleksandr Natalenko @ 2020-01-04 21:52 UTC (permalink / raw) To: linux-f2fs-devel; +Cc: linux-kernel, Jaegeuk Kim, Chao Yu 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) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [f2fs-dev] Multidevice f2fs mount after disk rearrangement 2020-01-04 21:52 ` Oleksandr Natalenko @ 2020-01-06 3:41 ` Chao Yu 2020-01-06 18:40 ` Jaegeuk Kim 2020-01-06 18:34 ` Jaegeuk Kim 1 sibling, 1 reply; 9+ messages in thread From: Chao Yu @ 2020-01-06 3:41 UTC (permalink / raw) To: Oleksandr Natalenko, linux-f2fs-devel; +Cc: Jaegeuk Kim, linux-kernel Hello, Thanks for the report. :) On 2020/1/5 5:52, Oleksandr Natalenko via Linux-f2fs-devel wrote: > 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. Alright, it works if superblock checksum feature is off... > > Am I really supposed to do this manually ;)? We'd better add that ability in tune.f2fs. And I guess we need to let kernel/fsck to notice that case, and give hint to run tune.f2fs to reconfigure primary/secondary/... device paths. Thanks, > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [f2fs-dev] Multidevice f2fs mount after disk rearrangement 2020-01-06 3:41 ` [f2fs-dev] " Chao Yu @ 2020-01-06 18:40 ` Jaegeuk Kim 2020-01-08 8:37 ` Chao Yu 0 siblings, 1 reply; 9+ messages in thread From: Jaegeuk Kim @ 2020-01-06 18:40 UTC (permalink / raw) To: Chao Yu; +Cc: Oleksandr Natalenko, linux-f2fs-devel, linux-kernel On 01/06, Chao Yu wrote: > Hello, > > Thanks for the report. :) > > On 2020/1/5 5:52, Oleksandr Natalenko via Linux-f2fs-devel wrote: > > 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. > > Alright, it works if superblock checksum feature is off... > > > > > Am I really supposed to do this manually ;)? > > We'd better add that ability in tune.f2fs. And I guess we need to let > kernel/fsck to notice that case, and give hint to run tune.f2fs to > reconfigure primary/secondary/... device paths. I'm thinking to add tunesb.f2fs to edit superblock explicitly, since it has to edit it without getting superblock/checkpoint and other f2fs metadata. For example, # tunesb.f2fs -c /dev/sdb -c /dev/sdc /dev/sda .. superblock info .. .. device list .. .. hot/cold extensions .. Will modify the device list, if it's different from parameter. > > Thanks, > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [f2fs-dev] Multidevice f2fs mount after disk rearrangement 2020-01-06 18:40 ` Jaegeuk Kim @ 2020-01-08 8:37 ` Chao Yu 0 siblings, 0 replies; 9+ messages in thread From: Chao Yu @ 2020-01-08 8:37 UTC (permalink / raw) To: Jaegeuk Kim; +Cc: Oleksandr Natalenko, linux-f2fs-devel, linux-kernel On 2020/1/7 2:40, Jaegeuk Kim wrote: > On 01/06, Chao Yu wrote: >> Hello, >> >> Thanks for the report. :) >> >> On 2020/1/5 5:52, Oleksandr Natalenko via Linux-f2fs-devel wrote: >>> 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. >> >> Alright, it works if superblock checksum feature is off... >> >>> >>> Am I really supposed to do this manually ;)? >> >> We'd better add that ability in tune.f2fs. And I guess we need to let >> kernel/fsck to notice that case, and give hint to run tune.f2fs to >> reconfigure primary/secondary/... device paths. > > I'm thinking to add tunesb.f2fs to edit superblock explicitly, since it has > to edit it without getting superblock/checkpoint and other f2fs metadata. > > For example, > # tunesb.f2fs -c /dev/sdb -c /dev/sdc /dev/sda > .. superblock info .. > .. device list .. > .. hot/cold extensions .. > > Will modify the device list, if it's different from parameter. Looks good to me. Thanks, > >> >> Thanks, >> >>> > . > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Multidevice f2fs mount after disk rearrangement 2020-01-04 21:52 ` Oleksandr Natalenko 2020-01-06 3:41 ` [f2fs-dev] " Chao Yu @ 2020-01-06 18:34 ` Jaegeuk Kim 2020-01-06 18:40 ` Oleksandr Natalenko 1 sibling, 1 reply; 9+ messages in thread From: Jaegeuk Kim @ 2020-01-06 18:34 UTC (permalink / raw) To: Oleksandr Natalenko; +Cc: linux-f2fs-devel, linux-kernel, Chao Yu On 01/04, Oleksandr Natalenko wrote: > 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 ;)? Thank you for investigating this ahead of me. :) Yes, the device list is stored in superblock, so hacking it manually should work. Let me think about a tool to tune that. Thanks, > > -- > Oleksandr Natalenko (post-factum) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Multidevice f2fs mount after disk rearrangement 2020-01-06 18:34 ` Jaegeuk Kim @ 2020-01-06 18:40 ` Oleksandr Natalenko 2020-01-08 8:52 ` [f2fs-dev] " Chao Yu 0 siblings, 1 reply; 9+ messages in thread From: Oleksandr Natalenko @ 2020-01-06 18:40 UTC (permalink / raw) To: Jaegeuk Kim; +Cc: linux-f2fs-devel, linux-kernel, Chao Yu Hi. On 06.01.2020 19:34, Jaegeuk Kim wrote: > Thank you for investigating this ahead of me. :) Yes, the device list > is stored > in superblock, so hacking it manually should work. > > Let me think about a tool to tune that. Thank you both for the replies. IIUC, tune.f2fs is not there yet. I saw a submission, but I do not see it as accepted, right? Having this in tune.f2fs would be fine (assuming the assertion is replaced with some meaningful hint message), but wouldn't it be more convenient for an ordinary user to have implemented something like: # mount -t f2fs /dev/sdb -o nextdev=/dev/sdc /mnt/fs Hm? -- Oleksandr Natalenko (post-factum) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [f2fs-dev] Multidevice f2fs mount after disk rearrangement 2020-01-06 18:40 ` Oleksandr Natalenko @ 2020-01-08 8:52 ` Chao Yu 2020-01-08 12:00 ` Jaegeuk Kim 0 siblings, 1 reply; 9+ messages in thread From: Chao Yu @ 2020-01-08 8:52 UTC (permalink / raw) To: Oleksandr Natalenko, Jaegeuk Kim; +Cc: linux-kernel, linux-f2fs-devel On 2020/1/7 2:40, Oleksandr Natalenko via Linux-f2fs-devel wrote: > Hi. > > On 06.01.2020 19:34, Jaegeuk Kim wrote: >> Thank you for investigating this ahead of me. :) Yes, the device list >> is stored >> in superblock, so hacking it manually should work. >> >> Let me think about a tool to tune that. > > Thank you both for the replies. > > IIUC, tune.f2fs is not there yet. I saw a submission, but I do not see > it as accepted, right? > > Having this in tune.f2fs would be fine (assuming the assertion is > replaced with some meaningful hint message), but wouldn't it be more > convenient for an ordinary user to have implemented something like: > > # mount -t f2fs /dev/sdb -o nextdev=/dev/sdc /mnt/fs Hmm... sounds reasonable, however, the risk is obvious, if we mount with wrong primary device, filesystem can be aware that with metadata sanity check, if we mount with wrong secondary/... devices by mistake (or intentionally, people may think filesystem should be aware illegal parameters....), filesystem won't be aware of that, then metadata/data will be inconsistent... Although that may also happen when we use tunesb.f2fs, but fsck.f2fs can be followed to verify the modification of tunesb.f2fs, that would be much safer. So I suggest we can do that in tools first, maybe implement nextdev mount option if we have added metadata in secondary/... device. Thanks, > > Hm? > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [f2fs-dev] Multidevice f2fs mount after disk rearrangement 2020-01-08 8:52 ` [f2fs-dev] " Chao Yu @ 2020-01-08 12:00 ` Jaegeuk Kim 0 siblings, 0 replies; 9+ messages in thread From: Jaegeuk Kim @ 2020-01-08 12:00 UTC (permalink / raw) To: Chao Yu; +Cc: Oleksandr Natalenko, linux-kernel, linux-f2fs-devel On 01/08, Chao Yu wrote: > On 2020/1/7 2:40, Oleksandr Natalenko via Linux-f2fs-devel wrote: > > Hi. > > > > On 06.01.2020 19:34, Jaegeuk Kim wrote: > >> Thank you for investigating this ahead of me. :) Yes, the device list > >> is stored > >> in superblock, so hacking it manually should work. > >> > >> Let me think about a tool to tune that. > > > > Thank you both for the replies. > > > > IIUC, tune.f2fs is not there yet. I saw a submission, but I do not see > > it as accepted, right? > > > > Having this in tune.f2fs would be fine (assuming the assertion is > > replaced with some meaningful hint message), but wouldn't it be more > > convenient for an ordinary user to have implemented something like: > > > > # mount -t f2fs /dev/sdb -o nextdev=/dev/sdc /mnt/fs > > Hmm... sounds reasonable, however, the risk is obvious, if we mount with wrong > primary device, filesystem can be aware that with metadata sanity check, if we > mount with wrong secondary/... devices by mistake (or intentionally, people > may think filesystem should be aware illegal parameters....), filesystem won't > be aware of that, then metadata/data will be inconsistent... > > Although that may also happen when we use tunesb.f2fs, but fsck.f2fs can be > followed to verify the modification of tunesb.f2fs, that would be much safer. > > So I suggest we can do that in tools first, maybe implement nextdev mount option > if we have added metadata in secondary/... device. +1, it'd be risky for user to give the device list whenever mounting the filesystem. There'll be subtle corner cases where f2fs needs to deal with given ambiguous sets between superblock and mount option. > > Thanks, > > > > > Hm? > > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2020-01-08 12:00 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-01-04 16:29 Multidevice f2fs mount after disk rearrangement Oleksandr Natalenko 2020-01-04 21:52 ` Oleksandr Natalenko 2020-01-06 3:41 ` [f2fs-dev] " Chao Yu 2020-01-06 18:40 ` Jaegeuk Kim 2020-01-08 8:37 ` Chao Yu 2020-01-06 18:34 ` Jaegeuk Kim 2020-01-06 18:40 ` Oleksandr Natalenko 2020-01-08 8:52 ` [f2fs-dev] " Chao Yu 2020-01-08 12:00 ` Jaegeuk Kim
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
Powered by JetHome