Hi Yuri,

I found a bug in an inode routine when I was looking at the problem
you reported.  The attached patch is the bugfix for that.

I think this is _not_ the cause of your corruption problem.  (in
either case I will send this upstream at some time)

If you apply this, you may see "NILFS: get root inode failed" error
instead of "NILFS: corrupt root inode.".

Regards,
Ryusuke Konishi
--
From: Ryusuke Konishi <[email protected]>

nilfs2: fix ignored error code in __nilfs_read_inode()

The __nilfs_read_inode function is ignoring the error code returned
from nilfs_read_inode_common(), and wrongly delivers a success code
(zero) when it escapes from the function in erroneous cases.

This adds the missing error handling.

Signed-off-by: Ryusuke Konishi <[email protected]>
---
 fs/nilfs2/inode.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
index fe9d8f2..807e584 100644
--- a/fs/nilfs2/inode.c
+++ b/fs/nilfs2/inode.c
@@ -430,7 +430,8 @@ static int __nilfs_read_inode(struct super_block *sb, 
unsigned long ino,
 
        raw_inode = nilfs_ifile_map_inode(sbi->s_ifile, ino, bh);
 
-       if (nilfs_read_inode_common(inode, raw_inode))
+       err = nilfs_read_inode_common(inode, raw_inode);
+       if (err)
                goto failed_unmap;
 
        if (S_ISREG(inode->i_mode)) {
_______________________________________________
users mailing list
[email protected]
https://www.nilfs.org/mailman/listinfo/users

Reply via email to