Whamcloud - gitweb
LU-6059 llite: unlock inode size in ll_lov_setstripe_ea_info() 67/13167/3
authorJohn L. Hammond <john.hammond@intel.com>
Mon, 22 Dec 2014 15:46:54 +0000 (09:46 -0600)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 7 Jan 2015 17:01:15 +0000 (17:01 +0000)
In ll_lov_setstripe_ea_info() release the inode size lock on all
appropriate exit paths.

Signed-off-by: John L. Hammond <john.hammond@intel.com>
Change-Id: Iba3bd560db0c7a718721d40da447126405ab0858
Reviewed-on: http://review.whamcloud.com/13167
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
lustre/llite/file.c

index 518609f..a0f64ce 100644 (file)
@@ -1433,8 +1433,11 @@ int ll_lov_setstripe_ea_info(struct inode *inode, struct file *file,
                             int lum_size)
 {
        struct lov_stripe_md *lsm = NULL;
                             int lum_size)
 {
        struct lov_stripe_md *lsm = NULL;
-       struct lookup_intent oit = {.it_op = IT_OPEN, .it_flags = flags};
-       int rc = 0;
+       struct lookup_intent oit = {
+               .it_op = IT_OPEN,
+               .it_flags = flags | MDS_OPEN_BY_FID,
+       };
+       int rc;
        ENTRY;
 
        lsm = ccc_inode_lsm_get(inode);
        ENTRY;
 
        lsm = ccc_inode_lsm_get(inode);
@@ -1446,13 +1449,13 @@ int ll_lov_setstripe_ea_info(struct inode *inode, struct file *file,
        }
 
        ll_inode_size_lock(inode);
        }
 
        ll_inode_size_lock(inode);
-       oit.it_flags |= MDS_OPEN_BY_FID;
        rc = ll_intent_file_open(file, lum, lum_size, &oit);
        rc = ll_intent_file_open(file, lum, lum_size, &oit);
-       if (rc)
+       if (rc < 0)
                GOTO(out_unlock, rc);
                GOTO(out_unlock, rc);
+
        rc = oit.d.lustre.it_status;
        if (rc < 0)
        rc = oit.d.lustre.it_status;
        if (rc < 0)
-               GOTO(out_req_free, rc);
+               GOTO(out_unlock, rc);
 
        ll_release_openhandle(file->f_dentry, &oit);
 
 
        ll_release_openhandle(file->f_dentry, &oit);
 
@@ -1462,10 +1465,8 @@ out_unlock:
        ccc_inode_lsm_put(inode, lsm);
 out:
        cl_lov_delay_create_clear(&file->f_flags);
        ccc_inode_lsm_put(inode, lsm);
 out:
        cl_lov_delay_create_clear(&file->f_flags);
+
        RETURN(rc);
        RETURN(rc);
-out_req_free:
-       ptlrpc_req_finished((struct ptlrpc_request *) oit.d.lustre.it_data);
-       goto out;
 }
 
 int ll_lov_getstripe_ea_info(struct inode *inode, const char *filename,
 }
 
 int ll_lov_getstripe_ea_info(struct inode *inode, const char *filename,