]> git.ipfire.org Git - people/ms/linux.git/blobdiff - fs/nfsd/nfsfh.h
Merge branch 'for-6.0/dax' into libnvdimm-fixes
[people/ms/linux.git] / fs / nfsd / nfsfh.h
index fb9d358a267e5f7bd1af4b39267624fd2b7baa48..c3ae6414fc5cfd6ac953ca007ad244c6383ff436 100644 (file)
@@ -81,7 +81,6 @@ typedef struct svc_fh {
        struct dentry *         fh_dentry;      /* validated dentry */
        struct svc_export *     fh_export;      /* export pointer */
 
-       bool                    fh_locked;      /* inode locked by us */
        bool                    fh_want_write;  /* remount protection taken */
        bool                    fh_no_wcc;      /* no wcc data needed */
        bool                    fh_no_atomic_attr;
@@ -93,7 +92,7 @@ typedef struct svc_fh {
        bool                    fh_post_saved;  /* post-op attrs saved */
        bool                    fh_pre_saved;   /* pre-op attrs saved */
 
-       /* Pre-op attributes saved during fh_lock */
+       /* Pre-op attributes saved when inode is locked */
        __u64                   fh_pre_size;    /* size before operation */
        struct timespec64       fh_pre_mtime;   /* mtime before oper */
        struct timespec64       fh_pre_ctime;   /* ctime before oper */
@@ -103,7 +102,7 @@ typedef struct svc_fh {
         */
        u64                     fh_pre_change;
 
-       /* Post-op attributes saved in fh_unlock */
+       /* Post-op attributes saved in fh_fill_post_attrs() */
        struct kstat            fh_post_attr;   /* full attrs after operation */
        u64                     fh_post_change; /* nfsv4 change; see above */
 } svc_fh;
@@ -223,8 +222,8 @@ void        fh_put(struct svc_fh *);
 static __inline__ struct svc_fh *
 fh_copy(struct svc_fh *dst, struct svc_fh *src)
 {
-       WARN_ON(src->fh_dentry || src->fh_locked);
-                       
+       WARN_ON(src->fh_dentry);
+
        *dst = *src;
        return dst;
 }
@@ -322,52 +321,5 @@ static inline u64 nfsd4_change_attribute(struct kstat *stat,
 
 extern void fh_fill_pre_attrs(struct svc_fh *fhp);
 extern void fh_fill_post_attrs(struct svc_fh *fhp);
-
-
-/*
- * Lock a file handle/inode
- * NOTE: both fh_lock and fh_unlock are done "by hand" in
- * 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)
-{
-       struct dentry   *dentry = fhp->fh_dentry;
-       struct inode    *inode;
-
-       BUG_ON(!dentry);
-
-       if (fhp->fh_locked) {
-               printk(KERN_WARNING "fh_lock: %pd2 already locked!\n",
-                       dentry);
-               return;
-       }
-
-       inode = d_inode(dentry);
-       inode_lock_nested(inode, subclass);
-       fh_fill_pre_attrs(fhp);
-       fhp->fh_locked = true;
-}
-
-static inline void
-fh_lock(struct svc_fh *fhp)
-{
-       fh_lock_nested(fhp, I_MUTEX_NORMAL);
-}
-
-/*
- * Unlock a file handle/inode
- */
-static inline void
-fh_unlock(struct svc_fh *fhp)
-{
-       if (fhp->fh_locked) {
-               fh_fill_post_attrs(fhp);
-               inode_unlock(d_inode(fhp->fh_dentry));
-               fhp->fh_locked = false;
-       }
-}
-
+extern void fh_fill_both_attrs(struct svc_fh *fhp);
 #endif /* _LINUX_NFSD_NFSFH_H */