On Sep 20, 2021 / 16:26, Jaegeuk Kim wrote: > On 09/15, Shinichiro Kawasaki wrote: > > On Sep 10, 2021 / 15:56, Jaegeuk Kim wrote: > > > This patch fixes the below stale magic info. > > > > > > $ mkfs.btrfs -f test.img > > > btrfs-progs v5.10.1 > > > See http://btrfs.wiki.kernel.org for more information. > > > > > > Label: (null) > > > UUID: 941d2db7-3ece-4090-8b22-c4ea548b5dae > > > Node size: 16384 > > > Sector size: 4096 > > > Filesystem size: 1.00GiB > > > Block group profiles: > > > Data: single 8.00MiB > > > Metadata: DUP 51.19MiB > > > System: DUP 8.00MiB > > > SSD detected: no > > > Incompat features: extref, skinny-metadata > > > Runtime features: > > > Checksum: crc32c > > > Number of devices: 1 > > > Devices: > > > ID SIZE PATH > > > 1 1.00GiB test.img > > > > > > $ hexdump -s 0x10000 -n 128 -C test.img > > > 00010000 81 29 94 0a 00 00 00 00 00 00 00 00 00 00 00 00 > > > |.)..............| > > > 00010010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > > |................| > > > 00010020 94 1d 2d b7 3e ce 40 90 8b 22 c4 ea 54 8b 5d ae > > > |..-.>.@.."..T.].| > > > 00010030 00 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 > > > |................| > > > 00010040 5f 42 48 52 66 53 5f 4d 05 00 00 00 00 00 00 00 > > > |_BHRfS_M........| > > > 00010050 00 40 d2 01 00 00 00 00 00 40 50 01 00 00 00 00 > > > |.@.......@P.....| > > > 00010060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > > |................| > > > 00010070 00 00 00 40 00 00 00 00 00 00 02 00 00 00 00 00 > > > |...@............| > > > 00010080 > > > > > > $ mkfs.f2fs -t 0 -f test.img > > > > > > F2FS-tools: mkfs.f2fs Ver: 1.14.0 (2020-12-28) > > > > > > Info: Disable heap-based policy > > > Info: Debug level = 0 > > > Info: Trim is disabled > > > Info: Segments per section = 1 > > > Info: Sections per zone = 1 > > > Info: sector size = 512 > > > Info: total sectors = 2097152 (1024 MB) > > > Info: zone aligned segment0 blkaddr: 512 > > > Info: format version with > > > "Linux version 5.10.46-4rodete1-amd64 ([email protected]) (gcc-10 > > > (Debian 10.2.1-6+build2) 10.2.1 20210110, GNU ld (GNU Binutils for > > > Debian) 2.35.2) #1 SMP Debian 5.10.46-4rodete1 (2021-08-20)" > > > Info: Overprovision ratio = 6.360% > > > Info: Overprovision segments = 68 (GC reserved = 39) > > > Info: format successful > > > > > > $hexdump -s 0x10000 -n 128 -C test.img > > > 00010000 c2 8a c8 26 00 00 00 00 00 00 00 00 00 00 00 00 > > > |...&............| > > > 00010010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > > |................| > > > 00010020 92 ab 3f c6 b7 82 49 5e 93 23 e8 c9 e9 45 7d ac > > > |..?...I^.#...E}.| > > > 00010030 00 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 > > > |................| > > > 00010040 5f 42 48 52 66 53 5f 4d 05 00 00 00 00 00 00 00 > > > |_BHRfS_M........| > > > 00010050 00 40 d2 01 00 00 00 00 00 40 50 01 00 00 00 00 > > > |.@.......@P.....| > > > 00010060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > > |................| > > > 00010070 00 00 00 40 00 00 00 00 00 00 02 00 00 00 00 00 > > > |...@............| > > > 00010080 > > > > > > --- After this patch --- > > > $ mkfs.f2fs -t 0 -f test.img > > > > > > F2FS-tools: mkfs.f2fs Ver: 1.14.0 (2020-12-28) > > > > > > Info: Disable heap-based policy > > > Info: Debug level = 0 > > > Info: Trim is disabled > > > test.img appears to contain an existing filesystem (btrfs). > > > Info: Segments per section = 1 > > > Info: Sections per zone = 1 > > > Info: sector size = 512 > > > Info: total sectors = 2097152 (1024 MB) > > > Info: zone aligned segment0 blkaddr: 512 > > > Info: format version with > > > "Linux version 5.10.46-4rodete1-amd64 ([email protected]) (gcc-10 > > > (Debian 10.2.1-6+build2) 10.2.1 20210110, GNU ld (GNU Binutils for > > > Debian) 2.35.2) #1 SMP Debian 5.10.46-4rodete1 (2021-08-20)" > > > Info: Overprovision ratio = 6.360% > > > Info: Overprovision segments = 68 (GC reserved = 39) > > > Info: format successful > > > > > > $ hexdump -s 0x10000 -n 128 -C test.img > > > 00010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > > |................| > > > * > > > 00010080 > > > > > > Signed-off-by: Jaegeuk Kim <[email protected]> > > > --- > > > fsck/main.c | 2 +- > > > include/f2fs_fs.h | 1 + > > > lib/libf2fs.c | 6 ++++++ > > > mkfs/f2fs_format_main.c | 26 ++++++++++++++++++++++---- > > > 4 files changed, 30 insertions(+), 5 deletions(-) > > > > > > diff --git a/fsck/main.c b/fsck/main.c > > > index eda399cf0679..e4cfdf443867 100644 > > > --- a/fsck/main.c > > > +++ b/fsck/main.c > > > @@ -1120,7 +1120,7 @@ int main(int argc, char **argv) > > > } > > > > > > /* Get device */ > > > - if (f2fs_get_device_info() < 0) { > > > + if (f2fs_get_device_info() < 0 || f2fs_get_f2fs_info() < 0) { > > > ret = -1; > > > if (c.func == FSCK) > > > ret = FSCK_OPERATIONAL_ERROR; > > > diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h > > > index 2a9c1169456c..69260a6fccd9 100644 > > > --- a/include/f2fs_fs.h > > > +++ b/include/f2fs_fs.h > > > @@ -1341,6 +1341,7 @@ extern int f2fs_devs_are_umounted(void); > > > extern int f2fs_dev_is_writable(void); > > > extern int f2fs_dev_is_umounted(char *); > > > extern int f2fs_get_device_info(void); > > > +extern int f2fs_get_f2fs_info(void); > > > extern unsigned int calc_extra_isize(void); > > > extern int get_device_info(int); > > > extern int f2fs_init_sparse_file(void); > > > diff --git a/lib/libf2fs.c b/lib/libf2fs.c > > > index b27785dec757..420dfdae56da 100644 > > > --- a/lib/libf2fs.c > > > +++ b/lib/libf2fs.c > > > @@ -1183,6 +1183,12 @@ int f2fs_get_device_info(void) > > > for (i = 0; i < c.ndevs; i++) > > > if (get_device_info(i)) > > > return -1; > > > + return 0; > > > +} > > > + > > > +int f2fs_get_f2fs_info(void) > > > +{ > > > + int i; > > > > > > if (c.wanted_total_sectors < c.total_sectors) { > > > MSG(0, "Info: total device sectors = %"PRIu64" (in %u bytes)\n", > > > diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c > > > index 031244d5d67a..de93f1b5b778 100644 > > > --- a/mkfs/f2fs_format_main.c > > > +++ b/mkfs/f2fs_format_main.c > > > @@ -396,18 +396,36 @@ int main(int argc, char *argv[]) > > > > > > c.func = MKFS; > > > > > > - if (!force_overwrite && f2fs_check_overwrite()) { > > > - MSG(0, "\tUse the -f option to force overwrite.\n"); > > > + if (f2fs_get_device_info() < 0) > > > return -1; > > > > Jaegeuk, thanks for the patch. Today, I had a chance to try out the dev > > branch > > with this patch, and observed mkfs.f2fs for block devices failed with the > > messages as follows: > > > > $ sudo mkfs.f2fs -f /dev/sdc > > > > F2FS-tools: mkfs.f2fs Ver: 1.14.0 (2021-09-10) > > > > Info: Disable heap-based policy > > Info: Debug level = 0 > > Info: Trim is enabled > > Info: [/dev/sdc] Disk Model: SanDisk SDSSDH32 > > /dev/sdc appears to contain an existing filesystem (f2fs). > > Error: In use by the system! > > > > I think f2fs_get_device_info() call above opens the block device with > > O_EXCL. > > And the following f2fs_devs_are_umounted() opens the device again with > > O_EXCL. > > The second open results in E_BUSY and the error message. I tried to move > > the f2fs_devs_are_umounted() call before the f2fs_get_device_info() call, > > then > > the error disappeared. So, I suggest to move the f2fs_devs_are_umounted() > > call. > > Thank you. Could you please take a look at v2?
With the v2 patch, the error about O_EXCL open went away. Thanks! -- Best Regards, Shin'ichiro Kawasaki _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
