aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--METADATA6
-rw-r--r--fsck/dump.c2
-rw-r--r--fsck/main.c5
-rw-r--r--tools/f2fs_io/f2fs_io.c23
4 files changed, 24 insertions, 12 deletions
diff --git a/METADATA b/METADATA
index ea3542f..754e8b6 100644
--- a/METADATA
+++ b/METADATA
@@ -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);
}