Namjae Jeon <linkinj...@gmail.com> writes: > 2012/9/24, OGAWA Hirofumi <hirof...@mail.parknet.co.jp>: >> Namjae Jeon <linkinj...@gmail.com> writes: >> >>>> I see. fileid seems to be stat.ino on nfsd4. inode->i_ino is actually >>>> just a hash key of inode hash (exception is only in audit, iirc). >>>> >>>> So, what happens if we set "stat->ino = i_pos" on fat_getattr(). >>>> >>>> int fat_getattr(struct vfsmount *mnt, struct dentry *dentry, struct >>>> kstat >>>> *stat) >>>> { >>>> struct inode *inode = dentry->d_inode; >>>> generic_fillattr(inode, stat); >>>> stat->blksize = MSDOS_SB(inode->i_sb)->cluster_size; >>>> if (opts->nfs == FAT_NFS_LIMITED) { >>>> /* Use i_pos for ino. This is used as fileid of nfs. */ >>>> stat->ino = MSDOS_SB(inode->i_sb)->i_pos; >> >> stat->ino = fat_i_pos_read(MSDOS_SB(inode->i_sb), inode); >> >> Ouch, I forgot to use fat_i_pos_read(). >> > There is some unclear thing. > When I see first mail, I think maybe you don't want to use i_pos for > inode->ino. > FAT allocate inode->ino from i_unique on server side and If NFS client > use i_pos for inode->ino in fat_get_attr, inode numbers on each > client/server will still be mismatched. > > Would you plz give me hint ?
->i_ino is long. It can't hold i_pos fully on 32bit arch, so we can't use ->i_no to store i_pos, and changing ->i_ino is unnecessary. If getattr() returned i_pos as ino, nobody see ->i_ino anymore except internal of kernel. Furthermore I think there is no issue even if server and client didn't have same ino. Because client just uses FH (nfs4 seems to be using stat.ino though). -- OGAWA Hirofumi <hirof...@mail.parknet.co.jp> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/