Re: [PATCH v3 2/5] fat: allocate persistent inode numbers

From: Namjae Jeon
Date: Mon Sep 24 2012 - 00:11:11 EST


2012/9/22, OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>:
> Namjae Jeon <linkinjeon@xxxxxxxxx> writes:
>
>> - inode->i_ino = iunique(sb, MSDOS_ROOT_INO);
>> + if (MSDOS_SB(sb)->options.nfs == FAT_NFS_LIMITED)
>> + inode->i_ino = i_pos;
>> + else
>> + inode->i_ino = iunique(sb, MSDOS_ROOT_INO);
>> inode->i_version = 1;
>> err = fat_fill_inode(inode, de);
>> if (err) {
>
> I think we don't need this. Because FH and ino is not necessary to have
> relation.
>
> Can we re-introduce ->encode_fh() handler, and export i_pos again? With
> this, I think we can get i_pos correctly. Otherwise, ino may not contain
> all bits of i_pos.
I already tried to fix this issue using encode_fh without stable ino before.
But I reached conclusion that we should use stable inode number.

e.g. If we rebuild inode number using i_pos of fh, inode number is
changed by i_unique.
And It is not match with inode number of FH on NFS client. So estale
error will happen.

Thanks.
> --
> OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/