Go to file
Ben Chang eddad4a194 f2fs-tools: fix cannot get bdev information
Some device like android phone doesn't show the dev number path in
/dev/block/, for example:

$ ls /dev/block/
bootdevice  dm-6    loop24  loop43    ram13  sda5  sdd4   sde24  sde43  sde62  sdf1
by-name     dm-7    loop25  loop44    ram14  sda6  sdd5   sde25  sde44  sde63  sdf10
dm-0        dm-8    loop26  loop45    ram15  sda7  sdd6   sde26  sde45  sde64  sdf11
dm-1        dm-9    loop27  loop46    ram2   sda8  sdd7   sde27  sde46  sde65  sdf12
dm-10       loop0   loop28  loop47    ram3   sda9  sde    sde28  sde47  sde66  sdf13
dm-11       loop1   loop29  loop48    ram4   sdb   sde1   sde29  sde48  sde67  sdf14
dm-12       loop10  loop3   loop49    ram5   sdb1  sde10  sde3   sde49  sde68  sdf15
dm-13       loop11  loop30  loop5     ram6   sdb2  sde11  sde30  sde5   sde69  sdf16
dm-14       loop12  loop31  loop50    ram7   sdb3  sde12  sde31  sde50  sde7   sdf17
dm-15       loop13  loop32  loop51    ram8   sdb4  sde13  sde32  sde51  sde70  sdf18
dm-16       loop14  loop33  loop6     ram9   sdb5  sde14  sde33  sde52  sde71  sdf19
dm-17       loop15  loop34  loop7     sda    sdc   sde15  sde34  sde53  sde72  sdf2
dm-18       loop16  loop35  loop8     sda1   sdc1  sde16  sde35  sde54  sde73  sdf3
dm-19       loop17  loop36  loop9     sda10  sdc2  sde17  sde36  sde55  sde74  sdf4
dm-2        loop18  loop37  mapper    sda11  sdc3  sde18  sde37  sde56  sde75  sdf5
dm-20       loop19  loop38  platform  sda12  sdc4  sde19  sde38  sde57  sde76  sdf6
dm-21       loop2   loop39  ram0      sda13  sdc5  sde2   sde39  sde58  sde77  sdf7
dm-3        loop20  loop4   ram1      sda14  sdd   sde20  sde4   sde59  sde78  sdf8
dm-4        loop21  loop40  ram10     sda2   sdd1  sde21  sde40  sde6   sde8   sdf9
dm-5        loop22  loop41  ram11     sda3   sdd2  sde22  sde41  sde60  sde9   vold
dm-53       loop23  loop42  ram12     sda4   sdd3  sde23  sde42  sde61  sdf    zram0

this will cause stat_bdev cannot show bdev information.

But most of devices (include android) show dev number path in /sys/dev/block, for example:

$ ls  /sys/dev/block
1:0    254:1   254:6   259:21  259:38  259:54  7:104  7:24   7:368  8:11  8:4   8:70  8:87
1:1    254:10  254:7   259:22  259:39  259:55  7:112  7:240  7:376  8:12  8:48  8:71  8:88
1:10   254:11  254:8   259:23  259:4   259:56  7:120  7:248  7:384  8:13  8:49  8:72  8:89
1:11   254:12  254:9   259:24  259:40  259:57  7:128  7:256  7:392  8:14  8:5   8:73  8:9
1:12   254:13  259:0   259:25  259:41  259:58  7:136  7:264  7:40   8:16  8:50  8:74  8:90
1:13   254:14  259:1   259:26  259:42  259:59  7:144  7:272  7:400  8:17  8:51  8:75  8:91
1:14   254:15  259:10  259:27  259:43  259:6   7:152  7:280  7:408  8:18  8:52  8:76  8:92
1:15   254:16  259:11  259:28  259:44  259:60  7:16   7:288  7:48   8:19  8:53  8:77  8:93
1:2    254:17  259:12  259:29  259:45  259:61  7:160  7:296  7:56   8:2   8:54  8:78  8:94
1:3    254:18  259:13  259:3   259:46  259:62  7:168  7:304  7:64   8:20  8:55  8:79  8:95
1:4    254:19  259:14  259:30  259:47  259:63  7:176  7:312  7:72   8:21  8:6   8:8
1:5    254:2   259:15  259:31  259:48  259:64  7:184  7:32   7:8    8:3   8:64  8:80
1:6    254:20  259:16  259:32  259:49  259:65  7:192  7:320  7:80   8:32  8:65  8:81
1:7    254:21  259:17  259:33  259:5   259:66  7:200  7:328  7:88   8:33  8:66  8:82
1:8    254:3   259:18  259:34  259:50  259:7   7:208  7:336  7:96   8:34  8:67  8:83
1:9    254:4   259:19  259:35  259:51  259:8   7:216  7:344  8:0    8:35  8:68  8:84
253:0  254:5   259:2   259:36  259:52  259:9   7:224  7:352  8:1    8:36  8:69  8:85
254:0  254:53  259:20  259:37  259:53  7:0     7:232  7:360  8:10   8:37  8:7   8:86

so change the access path from /dev/block to /sys/dev/block
(same method of libudev)

Before:

$./f2fs.fibmap testfile_4k

----------------file info-------------------
testfile_4k :
--------------------------------------------
dev       [254:53]
ino       [0x    3dda : 15834]
mode      [0x    81b6 : 33206]
nlink     [0x       1 : 1]
uid       [0x       0 : 0]
gid       [0x       0 : 0]
size      [0x   40000 : 262144]
blksize   [0x    1000 : 4096]
blocks    [0x     200 : 512]
--------------------------------------------

file_pos   start_blk     end_blk        blks
       0     2256926     2256987          62
  253952     2150337     2150338           2

Patched:
$./f2fs.fibmap testfile_4k
----------------bdev info-------------------
devname = 254:53
start_lba = 0

----------------file info-------------------
testfile_4k :
--------------------------------------------
dev       [254:53]
ino       [0x    3dda : 15834]
mode      [0x    81b6 : 33206]
nlink     [0x       1 : 1]
uid       [0x       0 : 0]
gid       [0x       0 : 0]
size      [0x   40000 : 262144]
blksize   [0x    1000 : 4096]
blocks    [0x     200 : 512]
--------------------------------------------

file_pos   start_blk     end_blk        blks
       0     2256926     2256987          62
  253952     2150337     2150338           2

Signed-off-by: Ben Chang <ben.chang@sonicsky.net>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-04-15 11:29:16 +08:00
.github/workflows ci: Enable -Wall, -Wextra and -Werror 2023-04-13 14:13:51 +08:00
fsck dump.f2fs: add -I nid to dump inode by scan full disk 2024-04-15 11:29:16 +08:00
include android_config: add time headers 2024-04-15 11:29:16 +08:00
lib Check fallthrough in mount.h for Mac 2024-04-15 11:29:16 +08:00
m4 mkfs: Initial commit for patch v2 series 2012-11-26 19:45:59 +09:00
man f2fs_io: add dsync option for write 2024-04-15 11:29:16 +08:00
mkfs Remove unnecessary config.h 2024-04-15 11:29:16 +08:00
scripts script: add simple test script 2016-04-18 21:11:26 -04:00
tools f2fs-tools: fix cannot get bdev information 2024-04-15 11:29:16 +08:00
.gitignore f2fs-tools: Add f2fs_io to .gitignore 2019-03-23 19:00:10 +09:00
AUTHORS mkfs: Initial commit for patch v2 series 2012-11-26 19:45:59 +09:00
autogen.sh defrag.f2fs: introduce defragmentation tool 2015-12-11 15:58:50 -08:00
BUILD.gn f2fs_tools部件化 2022-08-23 10:40:59 +08:00
bundle.json 修改inner_kits配置 2024-03-19 06:34:01 +00:00
ChangeLog f2fs-tools: add fsck.f2fs and dump.f2fs 2013-07-04 23:15:25 +09:00
config.h 适配build.gn 2023-04-14 16:51:10 +08:00
configure.ac f2fs-tools: upgrade version 1.15.0 2023-04-13 14:13:52 +08:00
COPYING License tweak: LGPL v2.1 vs LGPL v2 2014-06-12 16:52:59 +09:00
License 开源文件更新 2024-01-22 14:12:59 +08:00
Makefile.am f2fs-tools: add f2fstat to print f2fs's status in sec 2014-01-14 17:48:35 +09:00
MODULE_LICENSE_GPL 增加开源声明文件 2024-01-25 10:30:22 +08:00
OAT.xml 单个模块扫描(三方软件)结果清零. 2022-02-16 16:22:31 +08:00
README.md configure.ac: Enable cross-compilation 2023-04-13 14:13:48 +08:00
README.OpenSource 适配build.gn 2023-04-14 16:51:10 +08:00
VERSION f2fs-tools: upgrade version 1.15.0 2023-04-13 14:13:52 +08:00
VERSIONING doc: add versioning rule 2018-11-21 11:38:23 -08:00

F2FS format utility

To use the f2fs filesystem, you should format the storage partition with this utility. Otherwise, you cannot mount f2fs.

Before compilation

You should install the following packages.

  • libuuid-devel or uuid-dev
  • autoconf
  • libtool
  • libselinux1-dev

Initial compilation

Before initial compilation, autoconf/automake tools should be run.

./autogen.sh

How to compile

./configure
make
make install

How to cross-compile (e.g., for ARM)

  1. Add the below line into mkfs/Makefile.am:
    mkfs_f2fs_LDFLAGS = -all-static

  2. Add the below line into fsck/Makefile.am:
    fsck_f2fs_LDFLAGS = -all-static

  3. then, do:
    LDFLAGS=--static ./configure
    --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi
    make

How to run by default

mkfs.f2fs -l [LABEL] $DEV

For more mkfs options, see the man page.