Namjae Jeon <linkinj...@gmail.com> writes: > + if (inode == NULL && MSDOS_SB(sb)->options.nfs == FAT_NFS_LIMITED) { > + struct buffer_head *bh = NULL; > + struct msdos_dir_entry *de ; > + loff_t i_pos = (loff_t)ino; > + int bits = MSDOS_SB(sb)->dir_per_block_bits; > + loff_t blocknr = i_pos >> bits; > + bh = sb_bread(sb, blocknr); > + if (!bh) { > + fat_msg(sb, KERN_ERR, > + "unable to read block(%llu) for building NFS > inode", > + (llu)blocknr); > + return inode; > + } > + de = (struct msdos_dir_entry *)bh->b_data; > + /* If a file is deleted on server and client is not updated > + * yet, we must not build the inode upon a lookup call. > + */ > + if (de[i_pos&((1<<bits)-1)].name[0] == DELETED_FLAG)
IS_FREE() would be better. > + > + inode = NULL; > + else > + inode = fat_build_inode(sb, &de[i_pos&((1<<bits)-1)], > + i_pos); > + brelse(bh); > + } > > return inode; > } 1 << bits == sbi->dir_per_block It would be better to add helper to decode i_pos to blocknr and offset. And it should be shared on fat_write_inode and this. -- 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/