diff options
-rw-r--r-- | METADATA | 6 | ||||
-rw-r--r-- | fsck/dump.c | 2 | ||||
-rw-r--r-- | fsck/main.c | 5 | ||||
-rw-r--r-- | tools/f2fs_io/f2fs_io.c | 23 |
4 files changed, 24 insertions, 12 deletions
@@ -8,13 +8,13 @@ third_party { license_type: RESTRICTED last_upgrade_date { year: 2024 - month: 5 - day: 24 + month: 6 + day: 26 } homepage: "https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git/" identifier { type: "Git" value: "https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git" - version: "c1a97862b05d8a736ad8719939395c61bd71c982" + version: "584ebc710bc0779381595135e0686492c3908a20" } } diff --git a/fsck/dump.c b/fsck/dump.c index 90e3e0e..8d5613e 100644 --- a/fsck/dump.c +++ b/fsck/dump.c @@ -479,7 +479,7 @@ static int dump_inode_blk(struct f2fs_sb_info *sbi, u32 nid, if ((node_blk->i.i_inline & F2FS_INLINE_DATA)) { DBG(3, "ino[0x%x] has inline data!\n", nid); /* recover from inline data */ - dev_write_dump(((unsigned char *)node_blk) + INLINE_DATA_OFFSET, + dev_write_dump(inline_data_addr(node_blk), 0, MAX_INLINE_DATA(node_blk)); ret = -1; goto dump_xattr; diff --git a/fsck/main.c b/fsck/main.c index 6edc902..c13e287 100644 --- a/fsck/main.c +++ b/fsck/main.c @@ -97,6 +97,11 @@ void dump_usage() MSG(0, " -S sparse_mode\n"); MSG(0, " -a [SSA dump segno from #1~#2 (decimal), for all 0~-1]\n"); MSG(0, " -b blk_addr (in 4KB)\n"); + MSG(0, " -r dump out from the root inode\n"); + MSG(0, " -f do not prompt before dumping\n"); + MSG(0, " -y alias for -f\n"); + MSG(0, " -o dump inodes to the given path\n"); + MSG(0, " -P preserve mode/owner/group for dumped inode\n"); MSG(0, " -V print the version number and exit\n"); exit(1); diff --git a/tools/f2fs_io/f2fs_io.c b/tools/f2fs_io/f2fs_io.c index a7b593a..ff3a918 100644 --- a/tools/f2fs_io/f2fs_io.c +++ b/tools/f2fs_io/f2fs_io.c @@ -539,7 +539,7 @@ static void do_fallocate(int argc, char **argv, const struct cmd_desc *cmd) if (!strcmp(argv[0], "1")) mode |= FALLOC_FL_KEEP_SIZE; - offset = atoi(argv[1]); + offset = atoll(argv[1]); length = atoll(argv[2]); fd = xopen(argv[3], O_RDWR, 0); @@ -867,8 +867,15 @@ static void do_read(int argc, char **argv, const struct cmd_desc *cmd) if (!do_mmap) { for (i = 0; i < count; i++) { ret = pread(fd, buf, buf_size, offset + buf_size * i); - if (ret != buf_size) + if (ret != buf_size) { + printf("pread expected: %"PRIu64", readed: %"PRIu64"\n", + buf_size, ret); + if (ret > 0) { + read_cnt += ret; + memcpy(print_buf, buf, print_bytes); + } break; + } read_cnt += ret; if (i == 0) @@ -957,7 +964,7 @@ static void do_randread(int argc, char **argv, const struct cmd_desc *cmd) #define fiemap_desc "get block address in file" #define fiemap_help \ -"f2fs_io fiemap [offset in 4kb] [count] [file_path]\n\n"\ +"f2fs_io fiemap [offset in 4kb] [count in 4kb] [file_path]\n\n"\ #if defined(HAVE_LINUX_FIEMAP_H) && defined(HAVE_LINUX_FS_H) static void do_fiemap(int argc, char **argv, const struct cmd_desc *cmd) @@ -1546,9 +1553,9 @@ static void do_move_range(int argc, char **argv, const struct cmd_desc *cmd) fd = xopen(argv[1], O_RDWR, 0); range.dst_fd = xopen(argv[2], O_RDWR | O_CREAT, 0644); - range.pos_in = atoi(argv[3]); - range.pos_out = atoi(argv[4]); - range.len = atoi(argv[5]); + range.pos_in = atoll(argv[3]); + range.pos_out = atoll(argv[4]); + range.len = atoll(argv[5]); ret = ioctl(fd, F2FS_IOC_MOVE_RANGE, &range); if (ret < 0) @@ -1726,7 +1733,7 @@ static void do_lseek(int argc, char **argv, const struct cmd_desc *cmd) exit(1); } - offset = atoi(argv[2]); + offset = atoll(argv[2]); if (!strcmp(argv[1], "set")) whence = SEEK_SET; @@ -1746,7 +1753,7 @@ static void do_lseek(int argc, char **argv, const struct cmd_desc *cmd) ret = lseek(fd, offset, whence); if (ret < 0) die_errno("lseek failed"); - printf("returned offset=%ld\n", ret); + printf("returned offset=%lld\n", (long long)ret); exit(0); } |