mirror of
https://gitee.com/openharmony/third_party_f2fs-tools
synced 2024-11-26 19:51:32 +00:00
eddad4a194
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> |
||
---|---|---|
.github/workflows | ||
fsck | ||
include | ||
lib | ||
m4 | ||
man | ||
mkfs | ||
scripts | ||
tools | ||
.gitignore | ||
AUTHORS | ||
autogen.sh | ||
BUILD.gn | ||
bundle.json | ||
ChangeLog | ||
config.h | ||
configure.ac | ||
COPYING | ||
License | ||
Makefile.am | ||
MODULE_LICENSE_GPL | ||
OAT.xml | ||
README.md | ||
README.OpenSource | ||
VERSION | ||
VERSIONING |
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)
-
Add the below line into mkfs/Makefile.am:
mkfs_f2fs_LDFLAGS = -all-static -
Add the below line into fsck/Makefile.am:
fsck_f2fs_LDFLAGS = -all-static -
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.