Re: NILFS: corrupt root inode after Turbo Mode?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Fri, 2012-10-19 at 12:14 +0200, Piotr Szymaniak wrote:
> On Fri, Oct 19, 2012 at 10:43:11AM +0400, Vyacheslav Dubeyko wrote:
> > As I can see, both dumps contains blocks of ifile with inodes
> > description.
> > 
> > I check previous e-mails and can see that maybe you dump not proper
> > block. Maybe it is my misspelling in some e-mail. It needed to dump
> > #734205 but as I can see you share dump of #743205 block. Firstly, to
> > check that block #734205 is really empty. Because if it is not empty
> > then the situation is different.
> 
> It looks more like my misspelling when I asked about how should I make
> raw dump and after that it already was 743* instead of 734*. So my fault
> here.
> 
> The dump looks like non-empty (attached), so I skipped this experiment
> below.
> 

Sorry, for delay with answer. I was slightly busy.

So, currently, I have such picture. Your initial report was:

On Tue, 2012-10-09 at 00:25 +0200, Piotr Szymaniak wrote:
> dmesg shows:
> (...)
> [43893.754525] segctord starting. Construction interval = 300 seconds, CP frequency < 30 seconds
> [43893.760245] NILFS: corrupt root inode.

This error message generates only in one place by
nilfs_get_root_dentry() method in super.c
(http://lxr.free-electrons.com/source/fs/nilfs2/super.c#L903):

903         if (!S_ISDIR(inode->i_mode) || !inode->i_blocks || !inode->i_size) {
904                 iput(inode);
905                 printk(KERN_ERR "NILFS: corrupt root inode.\n");
906                 ret = -EINVAL;
907                 goto out;
908         }

So, only corruption of any of three fields of inode can be a reason for
such error message, from my understanding. But from the dump of #734205
block I can see such content of root inode (ino = 2):

00000100  01 00 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00000110  08 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00000120  03 5a 62 02 03 5a 62 02  00 00 00 00 00 00 00 00  |.Zb..Zb.........|
00000130  ed 41 13 00 00 00 00 00  00 00 00 00 00 00 00 00  |.A..............|
00000140  8f aa 0a 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

[00000100] i_blocks = 0x1
[00000108] i_size = 0x1000
[00000130] i_mode = 0x41ed (040755)

It means that inode's content is placed in one block and this inode
describes folder. So, the on-disk inode is correct and should be read
correctly during mounting. I have compared vanilla kernel code with
https://github.com/raspberrypi/linux and can't see any significant
difference. Currently, I think that unstable functioning of SD-card
controller in the Turbo mode can be the reason of this error message but
maybe I haven't the clear picture.

Did you try to mount this NILFS2 volume on host machine in normal mode?
Do you have such error message with this NILFS2 volume in another
technical environment?

With the best regards,
Vyacheslav Dubeyko. 


--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux BTRFS]     [Linux CIFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux