From 27cfca1ec98e91261b1a5355d10a8996464b63af Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Tue, 17 Mar 1998 22:05:47 +0000 Subject: Look Ma' what I found on my harddisk ... o New faster syscalls for 2.1.x, too o Upgrade to 2.1.89. Don't try to run this. It's flaky as hell. But feel free to debug ... --- include/linux/nfsd/nfsfh.h | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'include/linux/nfsd/nfsfh.h') diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h index f0577b05d..3e3410776 100644 --- a/include/linux/nfsd/nfsfh.h +++ b/include/linux/nfsd/nfsfh.h @@ -70,6 +70,8 @@ typedef struct svc_fh { * Shorthand for dprintk()'s */ #define SVCFH_DENTRY(f) ((f)->fh_dentry) +#define SVCFH_INO(f) ((f)->fh_handle.fh_ino) +#define SVCFH_DEV(f) ((f)->fh_handle.fh_dev) /* * Function prototypes @@ -114,12 +116,16 @@ fh_lock(struct svc_fh *fhp) dfprintk(FILEOP, "nfsd: fh_lock(%x/%ld) locked = %d\n", SVCFH_DEV(fhp), SVCFH_INO(fhp), fhp->fh_locked); */ - if (!fhp->fh_locked) { - down(&inode->i_sem); - if (!fhp->fh_pre_mtime) - fhp->fh_pre_mtime = inode->i_mtime; - fhp->fh_locked = 1; + if (fhp->fh_locked) { + printk(KERN_WARNING "fh_lock: %s/%s already locked!\n", + fhp->fh_dentry->d_parent->d_name.name, + fhp->fh_dentry->d_name.name); + return; } + down(&inode->i_sem); + if (!fhp->fh_pre_mtime) + fhp->fh_pre_mtime = inode->i_mtime; + fhp->fh_locked = 1; } /* @@ -128,9 +134,8 @@ fh_lock(struct svc_fh *fhp) static inline void fh_unlock(struct svc_fh *fhp) { - struct inode *inode = fhp->fh_dentry->d_inode; - if (fhp->fh_locked) { + struct inode *inode = fhp->fh_dentry->d_inode; if (!fhp->fh_post_version) fhp->fh_post_version = inode->i_version; fhp->fh_locked = 0; -- cgit v1.2.3