Kinglong Mee [Tue, 7 Feb 2017 02:43:09 +0000 (10:43 +0800)]
mkfs.f2fs: make sure clean all reset dnodes
memset(raw_node, 0, F2FS_BLKSIZE) sets the next_blkaddr to zero,
so that, only one reset dnode is cleaned always.
Fixes:
ad042d9194f5 "mkfs.f2fs: reset dnode with zeros",
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Kinglong Mee [Mon, 6 Feb 2017 09:58:43 +0000 (17:58 +0800)]
mkfs.f2fs: check the c.overprovision with zero before using it
The using of c.overprovision when it equal zero as,
c.reserved_segments =
(2 * (100 / c.overprovision + 1) + 6)
* c.segs_per_sec;
may cause problem, although it doesn't happen.
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Sat, 4 Feb 2017 06:45:59 +0000 (14:45 +0800)]
resize.f2fs: correct checkpoint_ver of new checkpoint
resize.f2fs rebuilds a new checkpoint at the new position. Its
checkpoint_ver should be increased.
Signed-off-by: Shuoran Liu <liushuoran@huawei.com>
Signed-off-by: Weichao Guo <guoweichao@huawei.com>
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Sat, 4 Feb 2017 00:00:20 +0000 (16:00 -0800)]
f2fs-tools: release 1.8.0
This release includes:
- enhance fsck.f2fs mostly.
- retrieve lost files from dump.f2fs.
- support zoned device and multiple devices.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Kinglong Mee [Tue, 24 Jan 2017 02:42:53 +0000 (10:42 +0800)]
mkfs.f2fs: fix bad assignment of total_sectors for f2fs_configuration
wanted_total_sectors is introduced instead total_sectors,
so that, the initialize is a fault, drop it.
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Wed, 1 Feb 2017 18:33:54 +0000 (10:33 -0800)]
fsck.f2fs: remove wrong dentry due to hash conversion
This patch removes stale dentries remained by hash conversion issue which
happened long time ago.
Fixes:
aafe2ca3dc72 ("fsck.f2fs: fix wrong hash_code made by previous buggy code")
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Liu Xue [Tue, 24 Jan 2017 02:45:47 +0000 (10:45 +0800)]
fsck.f2fs: always fix seg entry type if it is not DATA
If the segment type and sum footer type are node, but its
sit type is corrupted as cold data, this will always trigger
type error crash in do_garbage_collect but not get fixed by fsck,
so fix seg entry type when it is not DATA.
Reported-by: KARBOWSKI Piotr <piotr.karbowski@gmail.com>
Signed-off-by: Liu Xue <liuxueliu.liu@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Kinglong Mee [Sun, 22 Jan 2017 09:16:39 +0000 (17:16 +0800)]
mkfs.f2fs: fix a segfault when setting more than 7 devices
[root@localhost f2fs-tools]# mkfs.f2fs -c /dev/sdb1 -c /dev/sdb1 -c /dev/sdb1 -c /dev/sdb1 -c /dev/sdb1 -c /dev/sdb1 -c /dev/sdb1 -c /dev/sdb1 -c /dev/sdb1 /dev/sdb1
kernel: mkfs.f2fs[9047]: segfault at
2b78a60f ip
0000000000401356 sp
00007fffde05c9c0 error 6 in mkfs.f2fs[400000+5000]
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Sat, 21 Jan 2017 05:52:52 +0000 (13:52 +0800)]
fsck.f2fs: show parse errors neatly
This patch is just to clean up.
Cc: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Sat, 21 Jan 2017 05:12:17 +0000 (13:12 +0800)]
fsck.f2fs: support -p without argument
This patch allows fsck run -p without argument. So we could use -p as
-p, -p 0, -p 1. '-p' and '-p 0' have the same meaning as '-a'. '-p 1'
check more meta data than '-a'.
Reported-by: KARBOWSKI Piotr <piotr.karbowski@gmail.com>
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Thu, 19 Jan 2017 03:03:40 +0000 (11:03 +0800)]
f2fs-tools: correct endianness
It is reported that fsck.f2fs behaves abnormally when running on MIPS32
rel 2 big endian cpu, since incorrect endianness. So let's correct all
endianess issues of f2fs-tools.
Reported-by: <k@vodka.home.kg>
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sergey Kvachonok [Fri, 13 Jan 2017 08:02:02 +0000 (11:02 +0300)]
Add a configure option for SELinux support
./configure --without-selinux :: unconditionally disable SELinux support
./configure --with-selinux :: enable SELinux support and abort if
libselinux is not found
When no configure option is specified the current libselinux
autodetection behaviour is preserved.
Signed-off-by: Sergey Kvachonok <ravenexp@gmail.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 22 Dec 2016 21:47:27 +0000 (13:47 -0800)]
fsck.f2fs: fix wrong i_name check for directory
We should not check the consistency between i_name and its dentry for directory.
The i_name is used only for normal file recovery when conducting roll-forward
recovery.
Moreover, this condition was totally missing encryption case which is breaking by
1. encrypt ./test
2. mkdir ./test/a
3. mkdir ./test/b
4. rename ./test/a ./test/b
-> fsck.f2fs reports wrong inconsistency in terms of i_name.
Reported-by: liushuoran <liushuoran@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Mon, 12 Dec 2016 03:48:56 +0000 (11:48 +0800)]
resize.f2fs: remove unused parameters
This patch remove unused parameters in these three functions:
get_new_sb, migrate_main and rebuild_superblock
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Junling Zheng [Wed, 30 Nov 2016 03:23:42 +0000 (11:23 +0800)]
resize.f2fs: fix the number of moved ssa blocks in migrate_ssa
If the offset passed in migrate_ssa is not zero, it means that there're
offset segments of old main will disappear after migrating, then there're
offset blocks of old ssa should be invalidated and removed accordingly.
So, the number of moved ssa blocks should be: TOTAL_SEGS(sbi) - offset,
and the expanded summary, which is filled with zero_blocks, should start
from: new_sum_blkaddr + TOTAL_SEGS(sbi) - offset.
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Fri, 25 Nov 2016 14:49:56 +0000 (22:49 +0800)]
fsck.f2fs: remove duplicated header files
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Junling Zheng [Mon, 28 Nov 2016 06:37:03 +0000 (14:37 +0800)]
resize.f2fs: correct the max segno in migrate_main
Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Mon, 28 Nov 2016 22:07:18 +0000 (14:07 -0800)]
mkfs.f2fs: detect small partition by overprovision ratio and # of segments
We should avoid zero overprovision ratio or # of segments caused by too small
device.
Reported-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 24 Nov 2016 20:46:50 +0000 (12:46 -0800)]
mkfs.f2fs: give random checkpoint version
This is to avoid wrong recovery during xfstests.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Liu Xue [Wed, 23 Nov 2016 12:40:06 +0000 (20:40 +0800)]
fsck.f2fs: flush curseg sit entries
Flush curseg sit entries, since type of sit entries may
be changed after move_curseg_info.
Signed-off-by: Xue Liu <liuxueliu.liu@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Sat, 19 Nov 2016 13:24:41 +0000 (21:24 +0800)]
dump.f2fs: fix an error in dump nat pack num
This patch fix an error in dump nat pack num
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Sat, 19 Nov 2016 13:24:40 +0000 (21:24 +0800)]
fsck.f2fs add a simple check orphan inodes in -p 1 mode
This patch add a simple check orphan inodes in -p 1 mode
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Tue, 15 Nov 2016 00:31:38 +0000 (16:31 -0800)]
README: revisit README to fix typos and so on
This patch fixes typos and enhance description.
Suggested-by: Rob Maris <rob@maris-ee.eu>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 10 Nov 2016 22:15:13 +0000 (14:15 -0800)]
f2fs-tools: initialize and avoid build warning for android
This patch initialize one variable for android build.
In addition, it avoids there-in build warnings.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Wed, 2 Nov 2016 00:23:40 +0000 (17:23 -0700)]
f2fs-tools: support multiple devices
This patch adds an option to specify multiple devices for an f2fs instance.
Up to 7 devices in addition to the default device can be added.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Junling Zheng [Tue, 8 Nov 2016 00:48:10 +0000 (08:48 +0800)]
fsck.f2fs: refactor build_nat_area_bitmap to speed up fsck
Refactor build_nat_area_bitmap, move out lookup_nat_in_journal from the
dual loops. Instead of looking up all nids in journals, we traverse nat
journals, whose entries are used to replace the NAT entries with the
corresponding nid to reduce the time build_nat_area_bitmap costs.
For "fsck -p 1", it reduces over half of the time.
Empty Fragmented Entirely
32G(ms):
original 625.8 727.3
improved 226.3 298.2
64G(ms):
original 1159 1637.7
improved 515.8 676.7
Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Mon, 7 Nov 2016 13:25:58 +0000 (21:25 +0800)]
resize.f2fs: modify condition for resize
it better to decide resize or not by sector num.
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Fri, 4 Nov 2016 09:34:11 +0000 (17:34 +0800)]
fsck.f2fs: add a judgment after calloc
This patch add a judgment after calloc avoid memory alloc
failure
Signed-off-by: Yunlei He <heyunlei@huawei.com>
[Jaegeuk Kim: remove unneeded memset to avoid build warning]
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Fri, 4 Nov 2016 09:34:10 +0000 (17:34 +0800)]
fsck.f2fs: no need to write a new cp if nothing to flush
This patch avoid to write a new cp if no journal info
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 3 Nov 2016 05:23:24 +0000 (22:23 -0700)]
resize.f2fs: fill zeros for expanded ssa area
This will avoid wrong behavior after expanding volume.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 3 Nov 2016 04:10:15 +0000 (21:10 -0700)]
f2fs-tools: determine cp_addr by sbi->cur_cp
We don't guarantee cp_addr is fixed by cp_ver due to sload.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 3 Nov 2016 01:59:35 +0000 (18:59 -0700)]
sload.f2fs: not support to find or add files in inline_dir directory
Now, sload.f2fs doesn't support inline_dir.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 3 Nov 2016 01:20:05 +0000 (18:20 -0700)]
resize.f2fs: get latest free segments
The # of free segments can be changed by defragmentation.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 3 Nov 2016 01:00:48 +0000 (18:00 -0700)]
f2fs-tools: fix end block addres when finding free block
This patch fixes wrong end_blkaddr condition for free block allocation.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 3 Nov 2016 00:59:35 +0000 (17:59 -0700)]
resize.f2fs: fix wrong end_blkaddr
The end_blkaddr should add main area segments.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 3 Nov 2016 00:58:31 +0000 (17:58 -0700)]
defrag.f2fs: return error for no space case
This returns error instead of assertion for resize.f2fs.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Wed, 2 Nov 2016 22:17:15 +0000 (15:17 -0700)]
resize.f2fs: fix wrong offset calculation
When we move whole main area into new expanded area, we do not change its
segment numbers from sit and ssa.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Wed, 2 Nov 2016 22:15:02 +0000 (15:15 -0700)]
resize.f2fs: add more information in debug messages
Print more information.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Liu Xue [Wed, 2 Nov 2016 12:55:56 +0000 (20:55 +0800)]
fsck.f2fs: add SSR-based allocation when free segment not enough
Add SSR-based allocation when free segment reach the limit of
reserved segments.
Signed-off-by: Xue Liu <liuxueliu.liu@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Liu Xue [Wed, 2 Nov 2016 10:17:18 +0000 (18:17 +0800)]
fsck.f2fs: rewrite entries info in segment manager
The entries info in segment manager may be not correct, since
corrupted blocks may already cleaned. So rewrite se info with
main area bitmap.
Signed-off-by: Xue Liu <liuxueliu.liu@huawei.com>
[Jaegeuk Kim: remove obsolte variable in f2fs_fsck]
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Tue, 1 Nov 2016 04:04:01 +0000 (21:04 -0700)]
libf2fs: avoid build warning
This avoids the below warnings.
libf2fs_zoned.c:39:8: warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result]
fscanf(file, "%s", str);
^
libf2fs_zoned.c: In function 'f2fs_get_zone_blocks':
libf2fs_zoned.c:72:8: warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result]
fscanf(file, "%s", str);
^
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Damien Le Moal [Fri, 28 Oct 2016 07:57:04 +0000 (16:57 +0900)]
fsck.f2fs: check BLKZONED feature on mount
The BLKZONED feature is mandatory for host-managed zoned block
devices. So check that it is set.
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Damien Le Moal [Fri, 28 Oct 2016 07:57:03 +0000 (16:57 +0900)]
mkfs.f2fs: check zoned block devices configuration
Make sure the drive has enough randomly writeable zones from
the beginning of the partition to hold the meta data sections.
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Damien Le Moal [Fri, 28 Oct 2016 07:57:02 +0000 (16:57 +0900)]
mkfs.f2fs: reset sequential zones on device discard
For a zoned blocks device, trim must reset all sequential zones
of the device.
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Damien Le Moal [Fri, 28 Oct 2016 07:57:01 +0000 (16:57 +0900)]
mkfs.f2fs: check options for zoned block devices
Trim must not be disabled with zoned mode.
For host-managed zoned block devices, the zoned mode is mandatory.
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Damien Le Moal [Fri, 28 Oct 2016 07:57:00 +0000 (16:57 +0900)]
f2fs-tools: introduce support for zoned block devices
With the availability of the BLKREPORTZONE and BLKRESETZONE
ioctls, there is no need for using SG_IO to discover zoned
block devices characteristics. This simplifies the code.
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Damien Le Moal [Fri, 28 Oct 2016 07:56:59 +0000 (16:56 +0900)]
f2fs-tools: use zoned block device terminology
SMR stands for "Shingled Magnetic Recording" which makes sense
only for hard disk drives (spinning rust). The ZBC/ZAC standards
enable management of SMR disks, but solid state drives may also
support those standards. So replace "SMR" with "zoned block device"
to avoid a HDD centric terminology.
In particular, rename the HMSMR feature to BLKZONED.
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Damien Le Moal [Fri, 28 Oct 2016 07:56:57 +0000 (16:56 +0900)]
f2fs-tools: add executable files to .gitignore
Git ignore executables fsck.f2fs, f2fstat, fibmap.f2fs
and parse.f2fs.
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Mon, 24 Oct 2016 02:16:04 +0000 (10:16 +0800)]
fsck.f2fs: do not check the first seg in a sec in find_next_free_block
The first segment is already checked, so there is no need to check it
again if we want to make sure the whole section is freed.
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Mon, 24 Oct 2016 02:16:03 +0000 (10:16 +0800)]
dump/fsck: convert encrypted file name
If fscrypt is enabled, we need to convert the encrypted file name before
printing it. So let's export convert_encrypted_name for other functions,
and make it returns the length of converted string.
This patch also changes the parameter of file_is_encrypt to f2fs_inode.
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Christian Hesse [Sat, 22 Oct 2016 20:06:54 +0000 (22:06 +0200)]
sload.f2fs: allow to build without libselinux
Some systems do not have libselinux. Allow to build sload.f2fs without
support for selinux.
Signed-off-by: Christian Hesse <mail@eworm.de>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Tue, 18 Oct 2016 21:31:32 +0000 (14:31 -0700)]
mkfs.f2fs: fix the discarding size for block device
This patch fixes wrong discarding size.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 13 Oct 2016 23:04:52 +0000 (16:04 -0700)]
fsck.f2fs: support restore lost files into ./lost_found/
This patch adds to support restoring lost files into ./lost_found/.
For example,
# fsck.f2fs /dev/sdXX
...
NID[0x87d7] is unreachable
NID[0x87d8] is unreachable
NID[0x87d9] is unreachable
[FSCK] Unreachable nat entries [Fail] [0x4988]
[FSCK] SIT valid block bitmap checking [Fail]
[FSCK] Hard link checking for regular file [Ok..] [0x0]
[FSCK] valid_block_count matching with CP [Fail] [0x2]
[FSCK] valid_node_count matcing with CP (de lookup) [Fail] [0x1]
[FSCK] valid_node_count matcing with CP (nat lookup) [Ok..] [0x4989]
[FSCK] valid_inode_count matched with CP [Fail] [0x1]
[FSCK] free segment_count matched with CP [Ok..] [0x1f7]
[FSCK] next block offset is free [Ok..]
[FSCK] fixing SIT types
[FSCK] other corrupted bugs [Fail]
Do you want to restore lost files into ./lost_found/? [Y/N] y
Then, you can restore unreachable files from ./lost_found/ in its best effort.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 13 Oct 2016 21:40:28 +0000 (14:40 -0700)]
fsck.f2fs: check condition to avoid wrong memory allocation
This patch should fix the below bug.
Info: checkpoint state = 4 : compacted_summary sudden-power-off
[FIX] (is_valid_ssa_data_blk: 301) --> Set data summary 0x1039 -> [0x3] [0x0] [0x0]
[ASSERT] (fsck_chk_data_blk:1459) --> SIT bitmap is 0x0. blk_addr[0x20b6d8]
[ASSERT] (__chk_dentries:1255) --> Bad dentry 0x2 with invalid NID/ino 0x1644b164
[FIX] (__chk_dentries:1258) --> Clear bad dentry 0x2 with bad ino 0x1644b164
[ASSERT] (__chk_dentries:1269) --> Bad dentry 0x0 with unexpected ftype 0x2c
[FIX] (__chk_dentries:1272) --> Clear bad dentry 0x4 with bad ftype 0x2c
[ASSERT] (__chk_dentries:1255) --> Bad dentry 0x5 with invalid NID/ino 0x49000000
[FIX] (__chk_dentries:1258) --> Clear bad dentry 0x5 with bad ino 0x49000000
[ASSERT] (__chk_dentries:1255) --> Bad dentry 0x7 with invalid NID/ino 0x67706a2e
[FIX] (__chk_dentries:1258) --> Clear bad dentry 0x7 with bad ino 0x67706a2e
[ASSERT] (__chk_dentries:1255) --> Bad dentry 0x8 with invalid NID/ino 0x4a437044
[FIX] (__chk_dentries:1258) --> Clear bad dentry 0x8 with bad ino 0x4a437044
[ASSERT] (__chk_dentries:1269) --> Bad dentry 0x0 with unexpected ftype 0x0
[FIX] (__chk_dentries:1272) --> Clear bad dentry 0xf with bad ftype 0x0
[ASSERT] (__chk_dentries:1255) --> Bad dentry 0x20 with invalid NID/ino 0x4a150009
[FIX] (__chk_dentries:1258) --> Clear bad dentry 0x20 with bad ino 0x4a150009
[ASSERT] (__chk_dentries:1255) --> Bad dentry 0x21 with invalid NID/ino 0x1800094a
[FIX] (__chk_dentries:1258) --> Clear bad dentry 0x21 with bad ino 0x1800094a
*** buffer overflow detected ***: fsck.f2fs terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7338f)[0x7fa56b17b38f]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7fa56b212c9c]
/lib/x86_64-linux-gnu/libc.so.6(+0x109b60)[0x7fa56b211b60]
fsck.f2fs[0x4032f6]
fsck.f2fs[0x4063f7]
fsck.f2fs[0x406d09]
fsck.f2fs[0x4046b8]
fsck.f2fs[0x405378]
fsck.f2fs[0x405d86]
fsck.f2fs[0x402071]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fa56b129ec5]
Reported-by: Mirh <mirh@protonmail.ch>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 13 Oct 2016 21:39:16 +0000 (14:39 -0700)]
libf2fs: avoid garbage printout
This patch avoids to print garbage data.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Wed, 12 Oct 2016 21:11:19 +0000 (14:11 -0700)]
f2fs-tools: clean up and avoid build warning
This patch is to clean up and avoid warnings when compiling aosp.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Wed, 12 Oct 2016 21:42:16 +0000 (14:42 -0700)]
f2fs: avoid AOSP build failure
SCSI-related operations are not permitted to AOSP biuld.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 29 Sep 2016 22:00:07 +0000 (15:00 -0700)]
fsck.f2fs: allocate buffer after condition check
This patch makes buffer allocation be done after condition check.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Junling Zheng [Thu, 29 Sep 2016 10:38:36 +0000 (18:38 +0800)]
fsck.f2fs: fix a typo in check_sector_size
Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Junling Zheng [Thu, 29 Sep 2016 10:38:35 +0000 (18:38 +0800)]
fsck.f2fs: fix incorrect ERR_MSG in f2fs_do_mount
Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Junling Zheng [Thu, 29 Sep 2016 10:38:34 +0000 (18:38 +0800)]
fsck.f2fs: free cp_page_1 in validate_checkpoint
Free cp_page_1 in validate_checkpoint to avoid memory leak.
Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Tobias Jakobi [Wed, 28 Sep 2016 17:28:03 +0000 (19:28 +0200)]
libf2fs: increase robustness when called on root device
On some systems '/proc/mounts' contains the entry '/dev/root'
as alias for the root device, while that alias doesn't actually
exist as symlink in /dev.
/proc/mounts:
/dev/root / f2fs rw,noatime,background_gc=on,user_xattr,acl,inline_data,extent_cache,active_logs=6 0 0
mount:
/dev/mmcblk1p1 on / type f2fs (rw,noatime,background_gc=on,user_xattr,acl,inline_data,extent_cache,active_logs=6)
If the root device is mounted RO, and we try to scan it, via
'fsck.f2fs /dev/mmcblk1p1', then fsck.f2fs exits because it can't
find the entry in /proc/mounts.
Try harder to identify the root device of the system first, and
in case we are operating on it, check also for '/dev/root' in mounts.
Signed-off-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Sat, 24 Sep 2016 04:29:17 +0000 (12:29 +0800)]
fsck: porting avoid unneeded loop in build_sit_entries to fsck
This patch porting avoid unneeded loop in build_sit_entries to fsck
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Acked-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Sat, 17 Sep 2016 01:41:00 +0000 (18:41 -0700)]
f2fs-tools: use shorter config variable name
This patch has no functional change.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Fri, 16 Sep 2016 01:44:41 +0000 (18:44 -0700)]
libf2fs: use dev_read_block and dev_write_block
This patche tries to use dev_read_block and dev_write_block as much as possible.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Fri, 2 Sep 2016 17:33:44 +0000 (10:33 -0700)]
mkfs: get fd for f2fs_trim_device
This patch is to get a parameter for fd in f2fs_trim_device.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlong Song [Wed, 21 Sep 2016 13:01:55 +0000 (21:01 +0800)]
fsck.f2fs: free node_blk to avoid memory leak
Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
Acked-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlong Song [Wed, 21 Sep 2016 10:09:18 +0000 (18:09 +0800)]
mkfs.f2fs: do not need strdup for parse_feature
strdup is useless here, with no free op with its return value.
Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
Acked-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlong Song [Tue, 20 Sep 2016 12:43:48 +0000 (20:43 +0800)]
fsck: clear useless "continue" in __chk_dentries
Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
Acked-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Fri, 5 Aug 2016 02:30:02 +0000 (19:30 -0700)]
libf2fs: show disk information
This adds to show disk information.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 28 Jul 2016 20:10:46 +0000 (13:10 -0700)]
f2fs-tools: release 1.7.0
This version adds Host-managed SMR detection code.
libf2fs_format_la
- changed its body
libf2fs_la
- added zbc_scsi_report_zones()
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Fri, 15 Jul 2016 17:27:23 +0000 (10:27 -0700)]
fsck: recover symlink with zero i_size
If we have i_blocks, we can recover i_size.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Xue Liu [Fri, 15 Jul 2016 12:01:25 +0000 (20:01 +0800)]
fsck.f2fs: clean up duplicated code
Call current_nat_addr() to calculate nat block address.
Signed-off-by: Xue Liu <liuxueliu.liu@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Fri, 15 Jul 2016 12:01:24 +0000 (20:01 +0800)]
f2fs-tools: update the format of output message
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Fri, 15 Jul 2016 12:01:23 +0000 (20:01 +0800)]
fsck.f2fs: free nat entry cache
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Fri, 15 Jul 2016 12:01:22 +0000 (20:01 +0800)]
fsck.f2fs: fix typo
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Fri, 15 Jul 2016 12:01:21 +0000 (20:01 +0800)]
fsck.f2fs: correct variable type and name
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Fri, 15 Jul 2016 12:01:20 +0000 (20:01 +0800)]
f2fs.fsck: fix endianess
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Fri, 15 Jul 2016 12:01:19 +0000 (20:01 +0800)]
dump.f2fs: show inode->i_dir_level
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 16 Jun 2016 21:39:18 +0000 (14:39 -0700)]
mkfs: define DISCARD/SECDISCARD macro
If SECDISCARD/DISCARD is not defined, we can set it.
In Android, we must set -DWITH_BLKDISCARD to discard the partition.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Mon, 13 Jun 2016 16:36:38 +0000 (09:36 -0700)]
mkfs/fsck: add host-managed smr feature
This feature flag will be used by f2fs to detect HMSMR device.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 9 Jun 2016 21:16:18 +0000 (14:16 -0700)]
fsck.f2fs: allow zero link count for orphan inode
This will be zeroed by f2fs during the mount time.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Fri, 27 May 2016 21:20:43 +0000 (14:20 -0700)]
mkfs.f2fs: ZBC device support
This patch adds "-m" option to configure ZBC device.
This is to support host-managed SMR device and configure some major features
and on-disk layout in f2fs.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Sat, 4 Jun 2016 10:03:56 +0000 (18:03 +0800)]
fsck.f2fs: modify sit dump && add nat dump
modify sit dump && add nat dump like this:
dump_sit:
segment_type(0:HD, 1:WD, 2:CD, 3:HN, 4:WN, 5:CN)
segno: 13 vblocks:512 seg_type:2 sit_pack:2
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
dump_nat:
nid: 3 ino: 3 offset: 0 blkaddr: 2076417 pack:2
nid: 1042 ino: 1042 offset: 0 blkaddr: 2087156 pack:2
nid:57076 ino:57076 offset: 0 blkaddr: 2071232 pack:2
nid:57118 ino:57118 offset: 0 blkaddr: 2071233 pack:2
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Wed, 18 May 2016 10:00:37 +0000 (18:00 +0800)]
fsck.f2fs: check sector size if formatted from a regular file
This patch check sector size if formatted from a regular file,
write the sector info to superblock from device info.
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Tue, 3 May 2016 23:58:57 +0000 (16:58 -0700)]
fsck.f2fs: reset fsck flag if there is no bug
Let's update checkpoint, if fsck is set without any bug.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Junling Zheng [Tue, 26 Apr 2016 02:23:32 +0000 (10:23 +0800)]
fsck.f2fs: remove duplicated codes in sanity_check_raw_super
Remove duplicated codes in sanity_check_raw_super().
Signed-off-by: Junling Zheng <zhengjunling@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Yunlei He [Tue, 26 Apr 2016 05:25:08 +0000 (13:25 +0800)]
resize.f2fs: replace the overprovision calculation method
This patch replace the overprovision calculation method from
mkfs tool.
Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 17 Dec 2015 00:47:23 +0000 (16:47 -0800)]
script: add simple test script
This patch adds a script to test sload.f2fs, defrag.f2fs, and resize.f2fs.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Thu, 10 Dec 2015 00:18:44 +0000 (16:18 -0800)]
sload.f2fs: support loading files into partition directly
This patch implements loading files into the existing partition.
For example,
# sload.f2fs -f ./ /dev/sdb1
Then, all the directories and files will be loaded into /dev/sdb1.
By default, newly files should have inline_data and inline_xattr, if possible.
Signed-off-by: Hou Pengyang <houpengyang@huawei.com>
Signed-off-by: Liu Shuoran <liushuoran@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Wed, 9 Dec 2015 00:05:09 +0000 (16:05 -0800)]
resize.f2fs: support to expand partition size
Now user can expand existing partition with resize.f2fs.
Currently, it doesn't support shrink an image.
For example,
# resize.f2fs -t [# of sectors] [image]
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Mike Frysinger [Mon, 18 Apr 2016 22:19:53 +0000 (18:19 -0400)]
fibmap: pull in sys/sysmacros.h for major/minor
These funcs are provided by sys/sysmacros.h, so include the header
directly. Building with alternative C libraries can fail otherwise
like so:
fibmap.c: In function 'print_stat':
fibmap.c:36:32: warning: implicit declaration of function 'major' [-Wimplicit-function-declaration]
printf("dev [%d:%d]\n", major(st->st_dev), minor(st->st_dev));
^
fibmap.c:36:51: warning: implicit declaration of function 'minor' [-Wimplicit-function-declaration]
printf("dev [%d:%d]\n", major(st->st_dev), minor(st->st_dev));
^
fibmap.o: In function 'print_stat':
tools/fibmap.c:36: undefined reference to 'minor'
tools/fibmap.c:36: undefined reference to 'major'
fibmap.o: In function 'stat_bdev':
tools/fibmap.c:59: undefined reference to 'minor'
tools/fibmap.c:59: undefined reference to 'major'
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Wed, 23 Mar 2016 18:50:39 +0000 (11:50 -0700)]
fsck.f2fs: check sanity of superblock and fix any misalignment
This patch detects any corrupted superblock and fix misalignment when it finds,
which is synced with the f2fs kernel module.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Wed, 23 Mar 2016 18:19:20 +0000 (11:19 -0700)]
fsck.f2fs: nullify the freed ckpt pointer
Otherwise, we get a double free error by:
In fsck/main.c,
545 out_err:
546 if (sbi->ckpt)
547 free(sbi->ckpt);
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Mon, 14 Mar 2016 06:16:59 +0000 (14:16 +0800)]
fsck.f2fs: set fix_on if error is detected
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Mon, 14 Mar 2016 06:16:57 +0000 (14:16 +0800)]
fsck.f2fs: check ino in nat entry and node footer
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Mon, 14 Mar 2016 06:16:55 +0000 (14:16 +0800)]
fsck.f2fs: cache all nat entries and check each of them
All nat entries are cached during building nat_area_bitmap, so that, in
fsck_chk_meta, we can get and check blk_addr and ino directly, to see if
they are in the valid range. Also, blk_addr is checked to see if the block
is valid in sit's valid maps.
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Mon, 14 Mar 2016 06:16:54 +0000 (14:16 +0800)]
fsck.f2fs: count the number of inodes during building nat_area_bitmap
The nid and ino of an inode are the same. So during building
nat_area_bitmap, we can know which nat entry represents an
inode, thus, we can count the number of inodes.
Then in fsck_chk_meta, the amount of inodes can be compared
with that recorded in CP.
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Sheng Yong [Mon, 14 Mar 2016 06:16:53 +0000 (14:16 +0800)]
fsck.f2fs: introduce -p option to check meta
This patch introduces a new option '-p' to do more checks on NAT/SIT areas.
'-p' has 2 levels: level 1 has the same sematics as '-a'; level 2 checks
NAT/SIT counters to see if they matches the status in SB and CP.
A new function, fsck_chk_meta, is called by '-p 1' to implement these
comparsion. If errors are detected, fix_on is set, which means fsck will
do a 'fsck -f' immediately.
Signed-off-by: Sheng Yong <shengyong1@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Jaegeuk Kim [Tue, 22 Mar 2016 20:37:44 +0000 (13:37 -0700)]
f2fs-tools: release 1.6.1
This version mostly fixes the bugs in fsck.f2fs.
Especially, this fixes a segfault bug when executing "fsck.f2fs -a".
Note that, some body codes (not interfaces) in libf2fs_format.la and libf2fs.la
were changed.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>