[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1341150538-32047-15-git-send-email-wenqing.lz@taobao.com>
Date: Sun, 1 Jul 2012 21:48:37 +0800
From: Zheng Liu <gnehzuil.liu@...il.com>
To: linux-ext4@...r.kernel.org
Cc: Zheng Liu <wenqing.lz@...bao.com>
Subject: [PATCH 14/35 v3] debugfs: make filefrag cmd support inline data
From: Zheng Liu <wenqing.lz@...bao.com>
Inode with inline data doesn't have any fragmentations.
Signed-off-by: Zheng Liu <wenqing.lz@...bao.com>
---
debugfs/filefrag.c | 30 ++++++++++++++++++------------
1 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/debugfs/filefrag.c b/debugfs/filefrag.c
index 7f28bc0..c94396c 100644
--- a/debugfs/filefrag.c
+++ b/debugfs/filefrag.c
@@ -153,16 +153,18 @@ static void filefrag(ext2_ino_t ino, struct ext2_inode *inode,
fprintf(fs->f, "\n%s has %llu block(s), i_size is %llu\n",
fs->name, num_blocks, EXT2_I_SIZE(inode));
}
- print_header(fs);
- retval = ext2fs_block_iterate3(current_fs, ino,
- BLOCK_FLAG_READ_ONLY, NULL,
- filefrag_blocks_proc, fs);
- if (retval)
- com_err("ext2fs_block_iterate3", retval, 0);
-
- report_filefrag(fs);
- fprintf(fs->f, "%s: %d contiguous extents%s\n", fs->name, fs->ext,
- LINUX_S_ISDIR(inode->i_mode) ? " (dir)" : "");
+ if (!ext2fs_has_inline_data(current_fs, ino)) {
+ print_header(fs);
+ retval = ext2fs_block_iterate3(current_fs, ino,
+ BLOCK_FLAG_READ_ONLY, NULL,
+ filefrag_blocks_proc, fs);
+ if (retval)
+ com_err("ext2fs_block_iterate3", retval, 0);
+
+ report_filefrag(fs);
+ fprintf(fs->f, "%s: %d contiguous extents%s\n", fs->name, fs->ext,
+ LINUX_S_ISDIR(inode->i_mode) ? " (dir)" : "");
+ }
}
static int filefrag_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
@@ -240,8 +242,12 @@ static void dir_iterate(ext2_ino_t ino, struct filefrag_struct *fs)
fs->dir_name = fs->name;
while (1) {
- retval = ext2fs_dir_iterate2(current_fs, ino, 0,
- 0, filefrag_dir_proc, fs);
+ if (ext2fs_has_inline_data(current_fs, ino))
+ retval = ext2fs_inline_data_iterate2(current_fs, ino,
+ 0, 0, filefrag_dir_proc, fs);
+ else
+ retval = ext2fs_dir_iterate2(current_fs, ino, 0,
+ 0, filefrag_dir_proc, fs);
if (retval)
com_err("ext2fs_dir_iterate2", retval, 0);
if (p) {
--
1.7.4.1
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists