X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=include%2Flinux%2Fnfsd%2Fnfsfh.h;h=0798b7781a6e89dbfd258b72e521511cd7d9134a;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=069257ea99a0fe4c92de7ccc4a993d88b35774ea;hpb=3944158a6d33f94668dbd6bdc32ff5c67bb53ec2;p=linux-2.6.git diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h index 069257ea9..0798b7781 100644 --- a/include/linux/nfsd/nfsfh.h +++ b/include/linux/nfsd/nfsfh.h @@ -16,6 +16,7 @@ #include #ifdef __KERNEL__ +# include # include # include # include @@ -269,8 +270,14 @@ fill_post_wcc(struct svc_fh *fhp) fhp->fh_post_uid = inode->i_uid; fhp->fh_post_gid = inode->i_gid; fhp->fh_post_size = inode->i_size; - fhp->fh_post_blksize = BLOCK_SIZE; - fhp->fh_post_blocks = inode->i_blocks; + if (inode->i_blksize) { + fhp->fh_post_blksize = inode->i_blksize; + fhp->fh_post_blocks = inode->i_blocks; + } else { + fhp->fh_post_blksize = BLOCK_SIZE; + /* how much do we care for accuracy with MinixFS? */ + fhp->fh_post_blocks = (inode->i_size+511) >> 9; + } fhp->fh_post_rdev[0] = htonl((u32)imajor(inode)); fhp->fh_post_rdev[1] = htonl((u32)iminor(inode)); fhp->fh_post_atime = inode->i_atime; @@ -290,9 +297,8 @@ fill_post_wcc(struct svc_fh *fhp) * vfs.c:nfsd_rename as it needs to grab 2 i_mutex's at once * so, any changes here should be reflected there. */ - static inline void -fh_lock_nested(struct svc_fh *fhp, unsigned int subclass) +fh_lock(struct svc_fh *fhp) { struct dentry *dentry = fhp->fh_dentry; struct inode *inode; @@ -311,17 +317,11 @@ fh_lock_nested(struct svc_fh *fhp, unsigned int subclass) } inode = dentry->d_inode; - mutex_lock_nested(&inode->i_mutex, subclass); + mutex_lock(&inode->i_mutex); fill_pre_wcc(fhp); fhp->fh_locked = 1; } -static inline void -fh_lock(struct svc_fh *fhp) -{ - fh_lock_nested(fhp, I_MUTEX_NORMAL); -} - /* * Unlock a file handle/inode */