OSDN Git Service

lustre: switch ll_release_openhandle() to struct inode *
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 21 Oct 2014 00:39:57 +0000 (20:39 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 3 Nov 2014 20:21:13 +0000 (15:21 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/staging/lustre/lustre/llite/file.c
drivers/staging/lustre/lustre/llite/llite_internal.h
drivers/staging/lustre/lustre/llite/namei.c

index dd8e505..567874f 100644 (file)
@@ -430,7 +430,7 @@ static int ll_intent_file_open(struct dentry *dentry, void *lmm,
                if (!it_disposition(itp, DISP_OPEN_OPEN) ||
                     it_open_error(DISP_OPEN_OPEN, itp))
                        goto out;
-               ll_release_openhandle(dentry, itp);
+               ll_release_openhandle(inode, itp);
                goto out;
        }
 
@@ -620,7 +620,7 @@ restart:
                                goto out_openerr;
                        }
 
-                       ll_release_openhandle(file->f_dentry, it);
+                       ll_release_openhandle(inode, it);
                }
                (*och_usecount)++;
 
@@ -1366,7 +1366,7 @@ int ll_lov_setstripe_ea_info(struct inode *inode, struct dentry *dentry,
        if (rc < 0)
                goto out_req_free;
 
-       ll_release_openhandle(dentry, &oit);
+       ll_release_openhandle(inode, &oit);
 
 out_unlock:
        ll_inode_size_unlock(inode);
@@ -1622,22 +1622,21 @@ int ll_put_grouplock(struct inode *inode, struct file *file, unsigned long arg)
 /**
  * Close inode open handle
  *
- * \param dentry [in]     dentry which contains the inode
+ * \param inode  [in]     inode in question
  * \param it     [in,out] intent which contains open info and result
  *
  * \retval 0     success
  * \retval <0    failure
  */
-int ll_release_openhandle(struct dentry *dentry, struct lookup_intent *it)
+int ll_release_openhandle(struct inode *inode, struct lookup_intent *it)
 {
-       struct inode *inode = dentry->d_inode;
        struct obd_client_handle *och;
        int rc;
 
        LASSERT(inode);
 
        /* Root ? Do nothing. */
-       if (dentry->d_inode->i_sb->s_root == dentry)
+       if (inode->i_sb->s_root->d_inode == inode)
                return 0;
 
        /* No open handle to close? Move away */
index 40dd3b5..77d1c12 100644 (file)
@@ -748,7 +748,7 @@ int ll_file_release(struct inode *inode, struct file *file);
 int ll_glimpse_ioctl(struct ll_sb_info *sbi,
                     struct lov_stripe_md *lsm, lstat_t *st);
 void ll_ioepoch_open(struct ll_inode_info *lli, __u64 ioepoch);
-int ll_release_openhandle(struct dentry *, struct lookup_intent *);
+int ll_release_openhandle(struct inode *, struct lookup_intent *);
 int ll_md_real_close(struct inode *inode, fmode_t fmode);
 void ll_ioepoch_close(struct inode *inode, struct md_op_data *op_data,
                      struct obd_client_handle **och, unsigned long flags);
index 2d13483..016ed2d 100644 (file)
@@ -563,7 +563,7 @@ static struct dentry *ll_lookup_it(struct inode *parent, struct dentry *dentry,
        if ((it->it_op & IT_OPEN) && dentry->d_inode &&
            !S_ISREG(dentry->d_inode->i_mode) &&
            !S_ISDIR(dentry->d_inode->i_mode)) {
-               ll_release_openhandle(dentry, it);
+               ll_release_openhandle(dentry->d_inode, it);
        }
        ll_lookup_finish_locks(it, dentry);