Commit 70aa1554 authored by Ritesh Harjani's avatar Ritesh Harjani Committed by Theodore Ts'o

ext4: make ext_debug() implementation to use pr_debug()

ext_debug() msgs could be helpful, provided those could be enabled
without recompiling kernel and also if we could selectively enable
only required prints for case by case debugging.

So make ext_debug() implementation use pr_debug().
Also change ext_debug() to be defined with CONFIG_EXT4_DEBUG.
So EXT_DEBUG macro now mostly remain for below 3 functions.
ext4_ext_show_path/leaf/move() (whose print msgs use ext_debug()
which again could be dynamically enabled using pr_debug())

This also changes the ext_debug() to take inode as a parameter
to add inode no. in all of it's msgs.
Prints additional info like process name / pid, superblock id etc.
This also removes any explicit function names passed in ext_debug().
Since ext_debug() on it's own prints file, func and line no.
Signed-off-by: default avatarRitesh Harjani <riteshh@linux.ibm.com>
Link: https://lore.kernel.org/r/d31dc189b0aeda9384fe7665e36da7cd8c61571f.1589086800.git.riteshh@linux.ibm.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent d3df1453
...@@ -99,7 +99,7 @@ config EXT4_DEBUG ...@@ -99,7 +99,7 @@ config EXT4_DEBUG
Enables run-time debugging support for the ext4 filesystem. Enables run-time debugging support for the ext4 filesystem.
If you select Y here, then you will be able to turn on debugging If you select Y here, then you will be able to turn on debugging
using dynamic debug control for mb_debug() msgs. using dynamic debug control for mb_debug() / ext_debug() msgs.
config EXT4_KUNIT_TESTS config EXT4_KUNIT_TESTS
tristate "KUnit tests for ext4" tristate "KUnit tests for ext4"
......
...@@ -80,14 +80,22 @@ ...@@ -80,14 +80,22 @@
#define ext4_debug(fmt, ...) no_printk(fmt, ##__VA_ARGS__) #define ext4_debug(fmt, ...) no_printk(fmt, ##__VA_ARGS__)
#endif #endif
/* /*
* Turn on EXT_DEBUG to get lots of info about extents operations. * Turn on EXT_DEBUG to enable ext4_ext_show_path/leaf/move in extents.c
*/ */
#define EXT_DEBUG__ #define EXT_DEBUG__
#ifdef EXT_DEBUG
#define ext_debug(fmt, ...) printk(fmt, ##__VA_ARGS__) /*
* Dynamic printk for controlled extents debugging.
*/
#ifdef CONFIG_EXT4_DEBUG
#define ext_debug(ino, fmt, ...) \
pr_debug("[%s/%d] EXT4-fs (%s): ino %lu: (%s, %d): %s:" fmt, \
current->comm, task_pid_nr(current), \
ino->i_sb->s_id, ino->i_ino, __FILE__, __LINE__, \
__func__, ##__VA_ARGS__)
#else #else
#define ext_debug(fmt, ...) no_printk(fmt, ##__VA_ARGS__) #define ext_debug(ino, fmt, ...) no_printk(fmt, ##__VA_ARGS__)
#endif #endif
/* data type for block offset of block group */ /* data type for block offset of block group */
......
...@@ -607,22 +607,22 @@ static void ext4_ext_show_path(struct inode *inode, struct ext4_ext_path *path) ...@@ -607,22 +607,22 @@ static void ext4_ext_show_path(struct inode *inode, struct ext4_ext_path *path)
{ {
int k, l = path->p_depth; int k, l = path->p_depth;
ext_debug("path:"); ext_debug(inode, "path:");
for (k = 0; k <= l; k++, path++) { for (k = 0; k <= l; k++, path++) {
if (path->p_idx) { if (path->p_idx) {
ext_debug(" %d->%llu", ext_debug(inode, " %d->%llu",
le32_to_cpu(path->p_idx->ei_block), le32_to_cpu(path->p_idx->ei_block),
ext4_idx_pblock(path->p_idx)); ext4_idx_pblock(path->p_idx));
} else if (path->p_ext) { } else if (path->p_ext) {
ext_debug(" %d:[%d]%d:%llu ", ext_debug(inode, " %d:[%d]%d:%llu ",
le32_to_cpu(path->p_ext->ee_block), le32_to_cpu(path->p_ext->ee_block),
ext4_ext_is_unwritten(path->p_ext), ext4_ext_is_unwritten(path->p_ext),
ext4_ext_get_actual_len(path->p_ext), ext4_ext_get_actual_len(path->p_ext),
ext4_ext_pblock(path->p_ext)); ext4_ext_pblock(path->p_ext));
} else } else
ext_debug(" []"); ext_debug(inode, " []");
} }
ext_debug("\n"); ext_debug(inode, "\n");
} }
static void ext4_ext_show_leaf(struct inode *inode, struct ext4_ext_path *path) static void ext4_ext_show_leaf(struct inode *inode, struct ext4_ext_path *path)
...@@ -638,14 +638,14 @@ static void ext4_ext_show_leaf(struct inode *inode, struct ext4_ext_path *path) ...@@ -638,14 +638,14 @@ static void ext4_ext_show_leaf(struct inode *inode, struct ext4_ext_path *path)
eh = path[depth].p_hdr; eh = path[depth].p_hdr;
ex = EXT_FIRST_EXTENT(eh); ex = EXT_FIRST_EXTENT(eh);
ext_debug("Displaying leaf extents for inode %lu\n", inode->i_ino); ext_debug(inode, "Displaying leaf extents\n");
for (i = 0; i < le16_to_cpu(eh->eh_entries); i++, ex++) { for (i = 0; i < le16_to_cpu(eh->eh_entries); i++, ex++) {
ext_debug("%d:[%d]%d:%llu ", le32_to_cpu(ex->ee_block), ext_debug(inode, "%d:[%d]%d:%llu ", le32_to_cpu(ex->ee_block),
ext4_ext_is_unwritten(ex), ext4_ext_is_unwritten(ex),
ext4_ext_get_actual_len(ex), ext4_ext_pblock(ex)); ext4_ext_get_actual_len(ex), ext4_ext_pblock(ex));
} }
ext_debug("\n"); ext_debug(inode, "\n");
} }
static void ext4_ext_show_move(struct inode *inode, struct ext4_ext_path *path, static void ext4_ext_show_move(struct inode *inode, struct ext4_ext_path *path,
...@@ -658,10 +658,9 @@ static void ext4_ext_show_move(struct inode *inode, struct ext4_ext_path *path, ...@@ -658,10 +658,9 @@ static void ext4_ext_show_move(struct inode *inode, struct ext4_ext_path *path,
struct ext4_extent_idx *idx; struct ext4_extent_idx *idx;
idx = path[level].p_idx; idx = path[level].p_idx;
while (idx <= EXT_MAX_INDEX(path[level].p_hdr)) { while (idx <= EXT_MAX_INDEX(path[level].p_hdr)) {
ext_debug("%d: move %d:%llu in new index %llu\n", level, ext_debug(inode, "%d: move %d:%llu in new index %llu\n",
le32_to_cpu(idx->ei_block), level, le32_to_cpu(idx->ei_block),
ext4_idx_pblock(idx), ext4_idx_pblock(idx), newblock);
newblock);
idx++; idx++;
} }
...@@ -670,7 +669,7 @@ static void ext4_ext_show_move(struct inode *inode, struct ext4_ext_path *path, ...@@ -670,7 +669,7 @@ static void ext4_ext_show_move(struct inode *inode, struct ext4_ext_path *path,
ex = path[depth].p_ext; ex = path[depth].p_ext;
while (ex <= EXT_MAX_EXTENT(path[depth].p_hdr)) { while (ex <= EXT_MAX_EXTENT(path[depth].p_hdr)) {
ext_debug("move %d:%llu:[%d]%d in new leaf %llu\n", ext_debug(inode, "move %d:%llu:[%d]%d in new leaf %llu\n",
le32_to_cpu(ex->ee_block), le32_to_cpu(ex->ee_block),
ext4_ext_pblock(ex), ext4_ext_pblock(ex),
ext4_ext_is_unwritten(ex), ext4_ext_is_unwritten(ex),
...@@ -714,7 +713,7 @@ ext4_ext_binsearch_idx(struct inode *inode, ...@@ -714,7 +713,7 @@ ext4_ext_binsearch_idx(struct inode *inode,
struct ext4_extent_idx *r, *l, *m; struct ext4_extent_idx *r, *l, *m;
ext_debug("binsearch for %u(idx): ", block); ext_debug(inode, "binsearch for %u(idx): ", block);
l = EXT_FIRST_INDEX(eh) + 1; l = EXT_FIRST_INDEX(eh) + 1;
r = EXT_LAST_INDEX(eh); r = EXT_LAST_INDEX(eh);
...@@ -724,13 +723,13 @@ ext4_ext_binsearch_idx(struct inode *inode, ...@@ -724,13 +723,13 @@ ext4_ext_binsearch_idx(struct inode *inode,
r = m - 1; r = m - 1;
else else
l = m + 1; l = m + 1;
ext_debug("%p(%u):%p(%u):%p(%u) ", l, le32_to_cpu(l->ei_block), ext_debug(inode, "%p(%u):%p(%u):%p(%u) ", l,
m, le32_to_cpu(m->ei_block), le32_to_cpu(l->ei_block), m, le32_to_cpu(m->ei_block),
r, le32_to_cpu(r->ei_block)); r, le32_to_cpu(r->ei_block));
} }
path->p_idx = l - 1; path->p_idx = l - 1;
ext_debug(" -> %u->%lld ", le32_to_cpu(path->p_idx->ei_block), ext_debug(inode, " -> %u->%lld ", le32_to_cpu(path->p_idx->ei_block),
ext4_idx_pblock(path->p_idx)); ext4_idx_pblock(path->p_idx));
#ifdef CHECK_BINSEARCH #ifdef CHECK_BINSEARCH
...@@ -781,7 +780,7 @@ ext4_ext_binsearch(struct inode *inode, ...@@ -781,7 +780,7 @@ ext4_ext_binsearch(struct inode *inode,
return; return;
} }
ext_debug("binsearch for %u: ", block); ext_debug(inode, "binsearch for %u: ", block);
l = EXT_FIRST_EXTENT(eh) + 1; l = EXT_FIRST_EXTENT(eh) + 1;
r = EXT_LAST_EXTENT(eh); r = EXT_LAST_EXTENT(eh);
...@@ -792,13 +791,13 @@ ext4_ext_binsearch(struct inode *inode, ...@@ -792,13 +791,13 @@ ext4_ext_binsearch(struct inode *inode,
r = m - 1; r = m - 1;
else else
l = m + 1; l = m + 1;
ext_debug("%p(%u):%p(%u):%p(%u) ", l, le32_to_cpu(l->ee_block), ext_debug(inode, "%p(%u):%p(%u):%p(%u) ", l,
m, le32_to_cpu(m->ee_block), le32_to_cpu(l->ee_block), m, le32_to_cpu(m->ee_block),
r, le32_to_cpu(r->ee_block)); r, le32_to_cpu(r->ee_block));
} }
path->p_ext = l - 1; path->p_ext = l - 1;
ext_debug(" -> %d:%llu:[%d]%d ", ext_debug(inode, " -> %d:%llu:[%d]%d ",
le32_to_cpu(path->p_ext->ee_block), le32_to_cpu(path->p_ext->ee_block),
ext4_ext_pblock(path->p_ext), ext4_ext_pblock(path->p_ext),
ext4_ext_is_unwritten(path->p_ext), ext4_ext_is_unwritten(path->p_ext),
...@@ -881,7 +880,7 @@ ext4_find_extent(struct inode *inode, ext4_lblk_t block, ...@@ -881,7 +880,7 @@ ext4_find_extent(struct inode *inode, ext4_lblk_t block,
ext4_cache_extents(inode, eh); ext4_cache_extents(inode, eh);
/* walk through the tree */ /* walk through the tree */
while (i) { while (i) {
ext_debug("depth %d: num %d, max %d\n", ext_debug(inode, "depth %d: num %d, max %d\n",
ppos, le16_to_cpu(eh->eh_entries), le16_to_cpu(eh->eh_max)); ppos, le16_to_cpu(eh->eh_entries), le16_to_cpu(eh->eh_max));
ext4_ext_binsearch_idx(inode, path + ppos, block); ext4_ext_binsearch_idx(inode, path + ppos, block);
...@@ -958,18 +957,20 @@ static int ext4_ext_insert_index(handle_t *handle, struct inode *inode, ...@@ -958,18 +957,20 @@ static int ext4_ext_insert_index(handle_t *handle, struct inode *inode,
if (logical > le32_to_cpu(curp->p_idx->ei_block)) { if (logical > le32_to_cpu(curp->p_idx->ei_block)) {
/* insert after */ /* insert after */
ext_debug("insert new index %d after: %llu\n", logical, ptr); ext_debug(inode, "insert new index %d after: %llu\n",
logical, ptr);
ix = curp->p_idx + 1; ix = curp->p_idx + 1;
} else { } else {
/* insert before */ /* insert before */
ext_debug("insert new index %d before: %llu\n", logical, ptr); ext_debug(inode, "insert new index %d before: %llu\n",
logical, ptr);
ix = curp->p_idx; ix = curp->p_idx;
} }
len = EXT_LAST_INDEX(curp->p_hdr) - ix + 1; len = EXT_LAST_INDEX(curp->p_hdr) - ix + 1;
BUG_ON(len < 0); BUG_ON(len < 0);
if (len > 0) { if (len > 0) {
ext_debug("insert new index %d: " ext_debug(inode, "insert new index %d: "
"move %d indices from 0x%p to 0x%p\n", "move %d indices from 0x%p to 0x%p\n",
logical, len, ix, ix + 1); logical, len, ix, ix + 1);
memmove(ix + 1, ix, len * sizeof(struct ext4_extent_idx)); memmove(ix + 1, ix, len * sizeof(struct ext4_extent_idx));
...@@ -1036,12 +1037,12 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode, ...@@ -1036,12 +1037,12 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode,
} }
if (path[depth].p_ext != EXT_MAX_EXTENT(path[depth].p_hdr)) { if (path[depth].p_ext != EXT_MAX_EXTENT(path[depth].p_hdr)) {
border = path[depth].p_ext[1].ee_block; border = path[depth].p_ext[1].ee_block;
ext_debug("leaf will be split." ext_debug(inode, "leaf will be split."
" next leaf starts at %d\n", " next leaf starts at %d\n",
le32_to_cpu(border)); le32_to_cpu(border));
} else { } else {
border = newext->ee_block; border = newext->ee_block;
ext_debug("leaf will be added." ext_debug(inode, "leaf will be added."
" next leaf starts at %d\n", " next leaf starts at %d\n",
le32_to_cpu(border)); le32_to_cpu(border));
} }
...@@ -1063,7 +1064,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode, ...@@ -1063,7 +1064,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode,
return -ENOMEM; return -ENOMEM;
/* allocate all needed blocks */ /* allocate all needed blocks */
ext_debug("allocate %d blocks for indexes/leaf\n", depth - at); ext_debug(inode, "allocate %d blocks for indexes/leaf\n", depth - at);
for (a = 0; a < depth - at; a++) { for (a = 0; a < depth - at; a++) {
newblock = ext4_ext_new_meta_block(handle, inode, path, newblock = ext4_ext_new_meta_block(handle, inode, path,
newext, &err, flags); newext, &err, flags);
...@@ -1149,7 +1150,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode, ...@@ -1149,7 +1150,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode,
goto cleanup; goto cleanup;
} }
if (k) if (k)
ext_debug("create %d intermediate indices\n", k); ext_debug(inode, "create %d intermediate indices\n", k);
/* insert new index into current index block */ /* insert new index into current index block */
/* current depth stored in i var */ /* current depth stored in i var */
i = depth - 1; i = depth - 1;
...@@ -1176,7 +1177,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode, ...@@ -1176,7 +1177,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode,
fidx->ei_block = border; fidx->ei_block = border;
ext4_idx_store_pblock(fidx, oldblock); ext4_idx_store_pblock(fidx, oldblock);
ext_debug("int.index at %d (block %llu): %u -> %llu\n", ext_debug(inode, "int.index at %d (block %llu): %u -> %llu\n",
i, newblock, le32_to_cpu(border), oldblock); i, newblock, le32_to_cpu(border), oldblock);
/* move remainder of path[i] to the new index block */ /* move remainder of path[i] to the new index block */
...@@ -1190,7 +1191,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode, ...@@ -1190,7 +1191,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode,
} }
/* start copy indexes */ /* start copy indexes */
m = EXT_MAX_INDEX(path[i].p_hdr) - path[i].p_idx++; m = EXT_MAX_INDEX(path[i].p_hdr) - path[i].p_idx++;
ext_debug("cur 0x%p, last 0x%p\n", path[i].p_idx, ext_debug(inode, "cur 0x%p, last 0x%p\n", path[i].p_idx,
EXT_MAX_INDEX(path[i].p_hdr)); EXT_MAX_INDEX(path[i].p_hdr));
ext4_ext_show_move(inode, path, newblock, i); ext4_ext_show_move(inode, path, newblock, i);
if (m) { if (m) {
...@@ -1327,7 +1328,7 @@ static int ext4_ext_grow_indepth(handle_t *handle, struct inode *inode, ...@@ -1327,7 +1328,7 @@ static int ext4_ext_grow_indepth(handle_t *handle, struct inode *inode,
EXT_FIRST_INDEX(neh)->ei_block = EXT_FIRST_INDEX(neh)->ei_block =
EXT_FIRST_EXTENT(neh)->ee_block; EXT_FIRST_EXTENT(neh)->ee_block;
} }
ext_debug("new root: num %d(%d), lblock %d, ptr %llu\n", ext_debug(inode, "new root: num %d(%d), lblock %d, ptr %llu\n",
le16_to_cpu(neh->eh_entries), le16_to_cpu(neh->eh_max), le16_to_cpu(neh->eh_entries), le16_to_cpu(neh->eh_max),
le32_to_cpu(EXT_FIRST_INDEX(neh)->ei_block), le32_to_cpu(EXT_FIRST_INDEX(neh)->ei_block),
ext4_idx_pblock(EXT_FIRST_INDEX(neh))); ext4_idx_pblock(EXT_FIRST_INDEX(neh)));
...@@ -1969,7 +1970,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, ...@@ -1969,7 +1970,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
/* Try to append newex to the ex */ /* Try to append newex to the ex */
if (ext4_can_extents_be_merged(inode, ex, newext)) { if (ext4_can_extents_be_merged(inode, ex, newext)) {
ext_debug("append [%d]%d block to %u:[%d]%d" ext_debug(inode, "append [%d]%d block to %u:[%d]%d"
"(from %llu)\n", "(from %llu)\n",
ext4_ext_is_unwritten(newext), ext4_ext_is_unwritten(newext),
ext4_ext_get_actual_len(newext), ext4_ext_get_actual_len(newext),
...@@ -1994,7 +1995,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, ...@@ -1994,7 +1995,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
prepend: prepend:
/* Try to prepend newex to the ex */ /* Try to prepend newex to the ex */
if (ext4_can_extents_be_merged(inode, newext, ex)) { if (ext4_can_extents_be_merged(inode, newext, ex)) {
ext_debug("prepend %u[%d]%d block to %u:[%d]%d" ext_debug(inode, "prepend %u[%d]%d block to %u:[%d]%d"
"(from %llu)\n", "(from %llu)\n",
le32_to_cpu(newext->ee_block), le32_to_cpu(newext->ee_block),
ext4_ext_is_unwritten(newext), ext4_ext_is_unwritten(newext),
...@@ -2032,7 +2033,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, ...@@ -2032,7 +2033,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
if (le32_to_cpu(newext->ee_block) > le32_to_cpu(fex->ee_block)) if (le32_to_cpu(newext->ee_block) > le32_to_cpu(fex->ee_block))
next = ext4_ext_next_leaf_block(path); next = ext4_ext_next_leaf_block(path);
if (next != EXT_MAX_BLOCKS) { if (next != EXT_MAX_BLOCKS) {
ext_debug("next leaf block - %u\n", next); ext_debug(inode, "next leaf block - %u\n", next);
BUG_ON(npath != NULL); BUG_ON(npath != NULL);
npath = ext4_find_extent(inode, next, NULL, gb_flags); npath = ext4_find_extent(inode, next, NULL, gb_flags);
if (IS_ERR(npath)) if (IS_ERR(npath))
...@@ -2040,12 +2041,12 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, ...@@ -2040,12 +2041,12 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
BUG_ON(npath->p_depth != path->p_depth); BUG_ON(npath->p_depth != path->p_depth);
eh = npath[depth].p_hdr; eh = npath[depth].p_hdr;
if (le16_to_cpu(eh->eh_entries) < le16_to_cpu(eh->eh_max)) { if (le16_to_cpu(eh->eh_entries) < le16_to_cpu(eh->eh_max)) {
ext_debug("next leaf isn't full(%d)\n", ext_debug(inode, "next leaf isn't full(%d)\n",
le16_to_cpu(eh->eh_entries)); le16_to_cpu(eh->eh_entries));
path = npath; path = npath;
goto has_space; goto has_space;
} }
ext_debug("next leaf has no free space(%d,%d)\n", ext_debug(inode, "next leaf has no free space(%d,%d)\n",
le16_to_cpu(eh->eh_entries), le16_to_cpu(eh->eh_max)); le16_to_cpu(eh->eh_entries), le16_to_cpu(eh->eh_max));
} }
...@@ -2071,7 +2072,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, ...@@ -2071,7 +2072,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
if (!nearex) { if (!nearex) {
/* there is no extent in this leaf, create first one */ /* there is no extent in this leaf, create first one */
ext_debug("first extent in the leaf: %u:%llu:[%d]%d\n", ext_debug(inode, "first extent in the leaf: %u:%llu:[%d]%d\n",
le32_to_cpu(newext->ee_block), le32_to_cpu(newext->ee_block),
ext4_ext_pblock(newext), ext4_ext_pblock(newext),
ext4_ext_is_unwritten(newext), ext4_ext_is_unwritten(newext),
...@@ -2081,7 +2082,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, ...@@ -2081,7 +2082,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
if (le32_to_cpu(newext->ee_block) if (le32_to_cpu(newext->ee_block)
> le32_to_cpu(nearex->ee_block)) { > le32_to_cpu(nearex->ee_block)) {
/* Insert after */ /* Insert after */
ext_debug("insert %u:%llu:[%d]%d before: " ext_debug(inode, "insert %u:%llu:[%d]%d before: "
"nearest %p\n", "nearest %p\n",
le32_to_cpu(newext->ee_block), le32_to_cpu(newext->ee_block),
ext4_ext_pblock(newext), ext4_ext_pblock(newext),
...@@ -2092,7 +2093,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, ...@@ -2092,7 +2093,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
} else { } else {
/* Insert before */ /* Insert before */
BUG_ON(newext->ee_block == nearex->ee_block); BUG_ON(newext->ee_block == nearex->ee_block);
ext_debug("insert %u:%llu:[%d]%d after: " ext_debug(inode, "insert %u:%llu:[%d]%d after: "
"nearest %p\n", "nearest %p\n",
le32_to_cpu(newext->ee_block), le32_to_cpu(newext->ee_block),
ext4_ext_pblock(newext), ext4_ext_pblock(newext),
...@@ -2102,7 +2103,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, ...@@ -2102,7 +2103,7 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode,
} }
len = EXT_LAST_EXTENT(eh) - nearex + 1; len = EXT_LAST_EXTENT(eh) - nearex + 1;
if (len > 0) { if (len > 0) {
ext_debug("insert %u:%llu:[%d]%d: " ext_debug(inode, "insert %u:%llu:[%d]%d: "
"move %d extents from 0x%p to 0x%p\n", "move %d extents from 0x%p to 0x%p\n",
le32_to_cpu(newext->ee_block), le32_to_cpu(newext->ee_block),
ext4_ext_pblock(newext), ext4_ext_pblock(newext),
...@@ -2246,7 +2247,7 @@ ext4_ext_put_gap_in_cache(struct inode *inode, ext4_lblk_t hole_start, ...@@ -2246,7 +2247,7 @@ ext4_ext_put_gap_in_cache(struct inode *inode, ext4_lblk_t hole_start,
return; return;
hole_len = min(es.es_lblk - hole_start, hole_len); hole_len = min(es.es_lblk - hole_start, hole_len);
} }
ext_debug(" -> %u:%u\n", hole_start, hole_len); ext_debug(inode, " -> %u:%u\n", hole_start, hole_len);
ext4_es_insert_extent(inode, hole_start, hole_len, ~0, ext4_es_insert_extent(inode, hole_start, hole_len, ~0,
EXTENT_STATUS_HOLE); EXTENT_STATUS_HOLE);
} }
...@@ -2283,7 +2284,7 @@ static int ext4_ext_rm_idx(handle_t *handle, struct inode *inode, ...@@ -2283,7 +2284,7 @@ static int ext4_ext_rm_idx(handle_t *handle, struct inode *inode,
err = ext4_ext_dirty(handle, inode, path); err = ext4_ext_dirty(handle, inode, path);
if (err) if (err)
return err; return err;
ext_debug("index is empty, remove it, free block %llu\n", leaf); ext_debug(inode, "index is empty, remove it, free block %llu\n", leaf);
trace_ext4_ext_rm_idx(inode, leaf); trace_ext4_ext_rm_idx(inode, leaf);
ext4_free_blocks(handle, inode, NULL, leaf, 1, ext4_free_blocks(handle, inode, NULL, leaf, 1,
...@@ -2562,7 +2563,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode, ...@@ -2562,7 +2563,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode,
ext4_fsblk_t pblk; ext4_fsblk_t pblk;
/* the header must be checked already in ext4_ext_remove_space() */ /* the header must be checked already in ext4_ext_remove_space() */
ext_debug("truncate since %u in leaf to %u\n", start, end); ext_debug(inode, "truncate since %u in leaf to %u\n", start, end);
if (!path[depth].p_hdr) if (!path[depth].p_hdr)
path[depth].p_hdr = ext_block_hdr(path[depth].p_bh); path[depth].p_hdr = ext_block_hdr(path[depth].p_bh);
eh = path[depth].p_hdr; eh = path[depth].p_hdr;
...@@ -2588,7 +2589,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode, ...@@ -2588,7 +2589,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode,
else else
unwritten = 0; unwritten = 0;
ext_debug("remove ext %u:[%d]%d\n", ex_ee_block, ext_debug(inode, "remove ext %u:[%d]%d\n", ex_ee_block,
unwritten, ex_ee_len); unwritten, ex_ee_len);
path[depth].p_ext = ex; path[depth].p_ext = ex;
...@@ -2596,7 +2597,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode, ...@@ -2596,7 +2597,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode,
b = ex_ee_block+ex_ee_len - 1 < end ? b = ex_ee_block+ex_ee_len - 1 < end ?
ex_ee_block+ex_ee_len - 1 : end; ex_ee_block+ex_ee_len - 1 : end;
ext_debug(" border %u:%u\n", a, b); ext_debug(inode, " border %u:%u\n", a, b);
/* If this extent is beyond the end of the hole, skip it */ /* If this extent is beyond the end of the hole, skip it */
if (end < ex_ee_block) { if (end < ex_ee_block) {
...@@ -2705,7 +2706,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode, ...@@ -2705,7 +2706,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode,
if (err) if (err)
goto out; goto out;
ext_debug("new extent: %u:%u:%llu\n", ex_ee_block, num, ext_debug(inode, "new extent: %u:%u:%llu\n", ex_ee_block, num,
ext4_ext_pblock(ex)); ext4_ext_pblock(ex));
ex--; ex--;
ex_ee_block = le32_to_cpu(ex->ee_block); ex_ee_block = le32_to_cpu(ex->ee_block);
...@@ -2782,7 +2783,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start, ...@@ -2782,7 +2783,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start,
partial.lblk = 0; partial.lblk = 0;
partial.state = initial; partial.state = initial;
ext_debug("truncate since %u to %u\n", start, end); ext_debug(inode, "truncate since %u to %u\n", start, end);
/* probably first extent we're gonna free will be last in block */ /* probably first extent we're gonna free will be last in block */
handle = ext4_journal_start_with_revoke(inode, EXT4_HT_TRUNCATE, handle = ext4_journal_start_with_revoke(inode, EXT4_HT_TRUNCATE,
...@@ -2924,7 +2925,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start, ...@@ -2924,7 +2925,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start,
/* this is index block */ /* this is index block */
if (!path[i].p_hdr) { if (!path[i].p_hdr) {
ext_debug("initialize header\n"); ext_debug(inode, "initialize header\n");
path[i].p_hdr = ext_block_hdr(path[i].p_bh); path[i].p_hdr = ext_block_hdr(path[i].p_bh);
} }
...@@ -2932,7 +2933,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start, ...@@ -2932,7 +2933,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start,
/* this level hasn't been touched yet */ /* this level hasn't been touched yet */
path[i].p_idx = EXT_LAST_INDEX(path[i].p_hdr); path[i].p_idx = EXT_LAST_INDEX(path[i].p_hdr);
path[i].p_block = le16_to_cpu(path[i].p_hdr->eh_entries)+1; path[i].p_block = le16_to_cpu(path[i].p_hdr->eh_entries)+1;
ext_debug("init index ptr: hdr 0x%p, num %d\n", ext_debug(inode, "init index ptr: hdr 0x%p, num %d\n",
path[i].p_hdr, path[i].p_hdr,
le16_to_cpu(path[i].p_hdr->eh_entries)); le16_to_cpu(path[i].p_hdr->eh_entries));
} else { } else {
...@@ -2940,13 +2941,13 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start, ...@@ -2940,13 +2941,13 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start,
path[i].p_idx--; path[i].p_idx--;
} }
ext_debug("level %d - index, first 0x%p, cur 0x%p\n", ext_debug(inode, "level %d - index, first 0x%p, cur 0x%p\n",
i, EXT_FIRST_INDEX(path[i].p_hdr), i, EXT_FIRST_INDEX(path[i].p_hdr),
path[i].p_idx); path[i].p_idx);
if (ext4_ext_more_to_rm(path + i)) { if (ext4_ext_more_to_rm(path + i)) {
struct buffer_head *bh; struct buffer_head *bh;
/* go to the next level */ /* go to the next level */
ext_debug("move to level %d (block %llu)\n", ext_debug(inode, "move to level %d (block %llu)\n",
i + 1, ext4_idx_pblock(path[i].p_idx)); i + 1, ext4_idx_pblock(path[i].p_idx));
memset(path + i + 1, 0, sizeof(*path)); memset(path + i + 1, 0, sizeof(*path));
bh = read_extent_tree_block(inode, bh = read_extent_tree_block(inode,
...@@ -2982,7 +2983,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start, ...@@ -2982,7 +2983,7 @@ int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start,
brelse(path[i].p_bh); brelse(path[i].p_bh);
path[i].p_bh = NULL; path[i].p_bh = NULL;
i--; i--;
ext_debug("return to level %d\n", i); ext_debug(inode, "return to level %d\n", i);
} }
} }
...@@ -3150,8 +3151,7 @@ static int ext4_split_extent_at(handle_t *handle, ...@@ -3150,8 +3151,7 @@ static int ext4_split_extent_at(handle_t *handle,
BUG_ON((split_flag & (EXT4_EXT_DATA_VALID1 | EXT4_EXT_DATA_VALID2)) == BUG_ON((split_flag & (EXT4_EXT_DATA_VALID1 | EXT4_EXT_DATA_VALID2)) ==
(EXT4_EXT_DATA_VALID1 | EXT4_EXT_DATA_VALID2)); (EXT4_EXT_DATA_VALID1 | EXT4_EXT_DATA_VALID2));
ext_debug("ext4_split_extents_at: inode %lu, logical" ext_debug(inode, "logical block %llu\n", (unsigned long long)split);
"block %llu\n", inode->i_ino, (unsigned long long)split);
ext4_ext_show_leaf(inode, path); ext4_ext_show_leaf(inode, path);
...@@ -3388,8 +3388,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle, ...@@ -3388,8 +3388,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle,
int err = 0; int err = 0;
int split_flag = EXT4_EXT_DATA_VALID2; int split_flag = EXT4_EXT_DATA_VALID2;
ext_debug("ext4_ext_convert_to_initialized: inode %lu, logical" ext_debug(inode, "logical block %llu, max_blocks %u\n",
"block %llu, max_blocks %u\n", inode->i_ino,
(unsigned long long)map->m_lblk, map_len); (unsigned long long)map->m_lblk, map_len);
sbi = EXT4_SB(inode->i_sb); sbi = EXT4_SB(inode->i_sb);
...@@ -3642,8 +3641,7 @@ static int ext4_split_convert_extents(handle_t *handle, ...@@ -3642,8 +3641,7 @@ static int ext4_split_convert_extents(handle_t *handle,
unsigned int ee_len; unsigned int ee_len;
int split_flag = 0, depth; int split_flag = 0, depth;
ext_debug("%s: inode %lu, logical block %llu, max_blocks %u\n", ext_debug(inode, "logical block %llu, max_blocks %u\n",
__func__, inode->i_ino,
(unsigned long long)map->m_lblk, map->m_len); (unsigned long long)map->m_lblk, map->m_len);
eof_block = (EXT4_I(inode)->i_disksize + inode->i_sb->s_blocksize - 1) eof_block = (EXT4_I(inode)->i_disksize + inode->i_sb->s_blocksize - 1)
...@@ -3689,8 +3687,7 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, ...@@ -3689,8 +3687,7 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle,
ee_block = le32_to_cpu(ex->ee_block); ee_block = le32_to_cpu(ex->ee_block);
ee_len = ext4_ext_get_actual_len(ex); ee_len = ext4_ext_get_actual_len(ex);
ext_debug("ext4_convert_unwritten_extents_endio: inode %lu, logical" ext_debug(inode, "logical block %llu, max_blocks %u\n",
"block %llu, max_blocks %u\n", inode->i_ino,
(unsigned long long)ee_block, ee_len); (unsigned long long)ee_block, ee_len);
/* If extent is larger than requested it is a clear sign that we still /* If extent is larger than requested it is a clear sign that we still
...@@ -3760,8 +3757,7 @@ convert_initialized_extent(handle_t *handle, struct inode *inode, ...@@ -3760,8 +3757,7 @@ convert_initialized_extent(handle_t *handle, struct inode *inode,
ee_block = le32_to_cpu(ex->ee_block); ee_block = le32_to_cpu(ex->ee_block);
ee_len = ext4_ext_get_actual_len(ex); ee_len = ext4_ext_get_actual_len(ex);
ext_debug("%s: inode %lu, logical" ext_debug(inode, "logical block %llu, max_blocks %u\n",
"block %llu, max_blocks %u\n", __func__, inode->i_ino,
(unsigned long long)ee_block, ee_len); (unsigned long long)ee_block, ee_len);
if (ee_block != map->m_lblk || ee_len > map->m_len) { if (ee_block != map->m_lblk || ee_len > map->m_len) {
...@@ -3817,10 +3813,9 @@ ext4_ext_handle_unwritten_extents(handle_t *handle, struct inode *inode, ...@@ -3817,10 +3813,9 @@ ext4_ext_handle_unwritten_extents(handle_t *handle, struct inode *inode,
int ret = 0; int ret = 0;
int err = 0; int err = 0;
ext_debug("ext4_ext_handle_unwritten_extents: inode %lu, logical " ext_debug(inode, "logical block %llu, max_blocks %u, flags 0x%x, allocated %u\n",
"block %llu, max_blocks %u, flags %x, allocated %u\n", (unsigned long long)map->m_lblk, map->m_len, flags,
inode->i_ino, (unsigned long long)map->m_lblk, map->m_len, allocated);
flags, allocated);
ext4_ext_show_leaf(inode, path); ext4_ext_show_leaf(inode, path);
/* /*
...@@ -4057,8 +4052,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, ...@@ -4057,8 +4052,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode,
struct ext4_allocation_request ar; struct ext4_allocation_request ar;
ext4_lblk_t cluster_offset; ext4_lblk_t cluster_offset;
ext_debug("blocks %u/%u requested for inode %lu\n", ext_debug(inode, "blocks %u/%u requested\n", map->m_lblk, map->m_len);
map->m_lblk, map->m_len, inode->i_ino);
trace_ext4_ext_map_blocks_enter(inode, map->m_lblk, map->m_len, flags); trace_ext4_ext_map_blocks_enter(inode, map->m_lblk, map->m_len, flags);
/* find extent for this block */ /* find extent for this block */
...@@ -4105,8 +4099,8 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, ...@@ -4105,8 +4099,8 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode,
newblock = map->m_lblk - ee_block + ee_start; newblock = map->m_lblk - ee_block + ee_start;
/* number of remaining blocks in the extent */ /* number of remaining blocks in the extent */
allocated = ee_len - (map->m_lblk - ee_block); allocated = ee_len - (map->m_lblk - ee_block);
ext_debug("%u fit into %u:%d -> %llu\n", map->m_lblk, ext_debug(inode, "%u fit into %u:%d -> %llu\n",
ee_block, ee_len, newblock); map->m_lblk, ee_block, ee_len, newblock);
/* /*
* If the extent is initialized check whether the * If the extent is initialized check whether the
...@@ -4246,7 +4240,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, ...@@ -4246,7 +4240,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode,
goto out2; goto out2;
allocated_clusters = ar.len; allocated_clusters = ar.len;
ar.len = EXT4_C2B(sbi, ar.len) - offset; ar.len = EXT4_C2B(sbi, ar.len) - offset;
ext_debug("allocate new block: goal %llu, found %llu/%u, requested %u\n", ext_debug(inode, "allocate new block: goal %llu, found %llu/%u, requested %u\n",
ar.goal, newblock, ar.len, allocated); ar.goal, newblock, ar.len, allocated);
if (ar.len > allocated) if (ar.len > allocated)
ar.len = allocated; ar.len = allocated;
......
...@@ -501,9 +501,8 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, ...@@ -501,9 +501,8 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode,
#endif #endif
map->m_flags = 0; map->m_flags = 0;
ext_debug("ext4_map_blocks(): inode %lu, flag %d, max_blocks %u," ext_debug(inode, "flag 0x%x, max_blocks %u, logical block %lu\n",
"logical block %lu\n", inode->i_ino, flags, map->m_len, flags, map->m_len, (unsigned long) map->m_lblk);
(unsigned long) map->m_lblk);
/* /*
* ext4_map_blocks returns an int, and m_len is an unsigned int * ext4_map_blocks returns an int, and m_len is an unsigned int
...@@ -734,8 +733,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, ...@@ -734,8 +733,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode,
} }
if (retval < 0) if (retval < 0)
ext_debug("failed for inode %lu with err %d\n", ext_debug(inode, "failed with err %d\n", retval);
inode->i_ino, retval);
return retval; return retval;
} }
...@@ -1691,8 +1689,7 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock, ...@@ -1691,8 +1689,7 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock,
invalid_block = ~0; invalid_block = ~0;
map->m_flags = 0; map->m_flags = 0;
ext_debug("ext4_da_map_blocks(): inode %lu, max_blocks %u," ext_debug(inode, "max_blocks %u, logical block %lu\n", map->m_len,
"logical block %lu\n", inode->i_ino, map->m_len,
(unsigned long) map->m_lblk); (unsigned long) map->m_lblk);
/* Lookup extent status tree firstly */ /* Lookup extent status tree firstly */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment