mirror of
https://gitee.com/openharmony/third_party_f2fs-tools
synced 2024-11-23 10:10:00 +00:00
fe067853b0
I might found a bug in mkfs.f2fs. while experimenting with f2fs on my big endian MIPS32 device (platform lantiq, 14.07-rc3, uclibc). I ran into an issue that mkfs.f2fs, was not able to format block devices if I did not specify the sector count manually. I hunted it down to lib/libf2fs.c. After I found that the detected sector count equals to the wanted sector count shifted left (32+9) times. I found two issues: Firstly it uses ioctl BLKGETSIZE, which writes to an uint32_t the size of the device. As c->total_sectors is of type uint64_t, the value is written in to the first 4 bytes. That explained the left shift of 32 bits. Secondly BLKGETSIZE determines the size of the device in bytes (AFAIK, learned by observation). In the first branch of the if-block patched below, the c->total_sectors is calculated by c->total_sectors = stat_buf.st_size / c->sector_size; The else branch omits the devision. sector_sice is mostly 512, that explained the left shift by 9 bytes. * fixes sector count calculation * uses BLKGETSIZE64 if avail Signed-off-by: joerg jungermann <jj@borkum.net> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> |
||
---|---|---|
fsck | ||
include | ||
lib | ||
m4 | ||
man | ||
mkfs | ||
scripts | ||
tools | ||
.gitignore | ||
AUTHORS | ||
ChangeLog | ||
configure.ac | ||
COPYING | ||
Makefile.am | ||
README | ||
VERSION |
F2FS format utilility --------------------- To use f2fs filesystem, you should format the storage partition with this utilility. Otherwise, you cannot mount f2fs. Before compilation ------------------ Your should install the following packages. - libuuid-devel or uuid-dev - pkg-config - autoconf - libtool Initial compilation ------------------- Before compilation initially, autoconf/automake tools should be run. # autoreconf --install How to compile -------------- # ./configure # make 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 man page.