}
 
 
-int ext4_check_dir_entry(const char *function, struct inode *dir,
-                        struct ext4_dir_entry_2 *de,
-                        struct buffer_head *bh,
-                        unsigned int offset)
+int __ext4_check_dir_entry(const char *function, unsigned int line,
+                          struct inode *dir,
+                          struct ext4_dir_entry_2 *de,
+                          struct buffer_head *bh,
+                          unsigned int offset)
 {
        const char *error_msg = NULL;
        const int rlen = ext4_rec_len_from_disk(de->rec_len,
                while (!error && filp->f_pos < inode->i_size
                       && offset < sb->s_blocksize) {
                        de = (struct ext4_dir_entry_2 *) (bh->b_data + offset);
-                       if (!ext4_check_dir_entry("ext4_readdir", inode, de,
+                       if (!ext4_check_dir_entry(inode, de,
                                                  bh, offset)) {
                                /*
                                 * On error, skip the f_pos to the next block
 
                ext4_init_block_bitmap(sb, NULL, group, desc)
 
 /* dir.c */
-extern int ext4_check_dir_entry(const char *, struct inode *,
-                               struct ext4_dir_entry_2 *,
-                               struct buffer_head *, unsigned int);
+extern int __ext4_check_dir_entry(const char *, unsigned int, struct inode *,
+                                 struct ext4_dir_entry_2 *,
+                                 struct buffer_head *, unsigned int);
+#define ext4_check_dir_entry(dir, de, bh, offset) \
+       __ext4_check_dir_entry(__func__, __LINE__, (dir), (de), (bh), (offset))
 extern int ext4_htree_store_dirent(struct file *dir_file, __u32 hash,
                                    __u32 minor_hash,
                                    struct ext4_dir_entry_2 *dirent);
 
                                           dir->i_sb->s_blocksize -
                                           EXT4_DIR_REC_LEN(0));
        for (; de < top; de = ext4_next_entry(de, dir->i_sb->s_blocksize)) {
-               if (!ext4_check_dir_entry("htree_dirblock_to_tree", dir, de, bh,
+               if (!ext4_check_dir_entry(dir, de, bh,
                                        (block<<EXT4_BLOCK_SIZE_BITS(dir->i_sb))
                                                +((char *)de - bh->b_data))) {
                        /* On error, skip the f_pos to the next block. */
                if ((char *) de + namelen <= dlimit &&
                    ext4_match (namelen, name, de)) {
                        /* found a match - just to be sure, do a full check */
-                       if (!ext4_check_dir_entry("ext4_find_entry",
-                                                 dir, de, bh, offset))
+                       if (!ext4_check_dir_entry(dir, de, bh, offset))
                                return -1;
                        *res_dir = de;
                        return 1;
                        int off = (block << EXT4_BLOCK_SIZE_BITS(sb))
                                  + ((char *) de - bh->b_data);
 
-                       if (!ext4_check_dir_entry(__func__, dir, de, bh, off)) {
+                       if (!ext4_check_dir_entry(dir, de, bh, off)) {
                                brelse(bh);
                                *err = ERR_BAD_DX_DIR;
                                goto errout;
                de = (struct ext4_dir_entry_2 *)bh->b_data;
                top = bh->b_data + blocksize - reclen;
                while ((char *) de <= top) {
-                       if (!ext4_check_dir_entry("ext4_add_entry", dir, de,
-                                                 bh, offset))
+                       if (!ext4_check_dir_entry(dir, de, bh, offset))
                                return -EIO;
                        if (ext4_match(namelen, name, de))
                                return -EEXIST;
        pde = NULL;
        de = (struct ext4_dir_entry_2 *) bh->b_data;
        while (i < bh->b_size) {
-               if (!ext4_check_dir_entry("ext4_delete_entry", dir, de, bh, i))
+               if (!ext4_check_dir_entry(dir, de, bh, i))
                        return -EIO;
                if (de == de_del)  {
                        BUFFER_TRACE(bh, "get_write_access");
                        }
                        de = (struct ext4_dir_entry_2 *) bh->b_data;
                }
-               if (!ext4_check_dir_entry("empty_dir", inode, de, bh, offset)) {
+               if (!ext4_check_dir_entry(inode, de, bh, offset)) {
                        de = (struct ext4_dir_entry_2 *)(bh->b_data +
                                                         sb->s_blocksize);
                        offset = (offset | (sb->s_blocksize - 1)) + 1;