Whamcloud - gitweb
LU-5823 clio: get rid of lov_stripe_md reference 39/12639/10
authorBobi Jam <bobijam.xu@intel.com>
Thu, 6 Nov 2014 12:44:27 +0000 (20:44 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 6 Apr 2015 01:00:21 +0000 (01:00 +0000)
Get rid of lov_stripe_md reference in setting file's stripe info.

Signed-off-by: Bobi Jam <bobijam.xu@intel.com>
Change-Id: I303bfc98113bf1f086053225959001377879637a
Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-on: http://review.whamcloud.com/12639
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/llite/file.c
lustre/mdt/mdt_open.c

index 1752da1..0315ebd 100644 (file)
@@ -1304,7 +1304,6 @@ int ll_lov_setstripe_ea_info(struct inode *inode, struct file *file,
                              __u64  flags, struct lov_user_md *lum,
                             int lum_size)
 {
                              __u64  flags, struct lov_user_md *lum,
                             int lum_size)
 {
-       struct lov_stripe_md *lsm = NULL;
        struct lookup_intent oit = {
                .it_op = IT_OPEN,
                .it_flags = flags | MDS_OPEN_BY_FID,
        struct lookup_intent oit = {
                .it_op = IT_OPEN,
                .it_flags = flags | MDS_OPEN_BY_FID,
@@ -1312,30 +1311,16 @@ int ll_lov_setstripe_ea_info(struct inode *inode, struct file *file,
        int rc;
        ENTRY;
 
        int rc;
        ENTRY;
 
-       lsm = ccc_inode_lsm_get(inode);
-       if (lsm != NULL) {
-               ccc_inode_lsm_put(inode, lsm);
-               CDEBUG(D_IOCTL, "stripe already exists for inode "DFID"\n",
-                      PFID(ll_inode2fid(inode)));
-               GOTO(out, rc = -EEXIST);
-       }
-
        ll_inode_size_lock(inode);
        rc = ll_intent_file_open(file, lum, lum_size, &oit);
        if (rc < 0)
                GOTO(out_unlock, rc);
 
        ll_inode_size_lock(inode);
        rc = ll_intent_file_open(file, lum, lum_size, &oit);
        if (rc < 0)
                GOTO(out_unlock, rc);
 
-       rc = oit.d.lustre.it_status;
-       if (rc < 0)
-               GOTO(out_unlock, rc);
-
        ll_release_openhandle(file->f_dentry, &oit);
 
 out_unlock:
        ll_inode_size_unlock(inode);
        ll_intent_release(&oit);
        ll_release_openhandle(file->f_dentry, &oit);
 
 out_unlock:
        ll_inode_size_unlock(inode);
        ll_intent_release(&oit);
-       ccc_inode_lsm_put(inode, lsm);
-out:
        cl_lov_delay_create_clear(&file->f_flags);
 
        RETURN(rc);
        cl_lov_delay_create_clear(&file->f_flags);
 
        RETURN(rc);
index 84f0e7e..1d414f4 100644 (file)
@@ -1063,6 +1063,11 @@ static int mdt_open_by_fid_lock(struct mdt_thread_info *info,
        if (rc)
                GOTO(out, rc);
 
        if (rc)
                GOTO(out, rc);
 
+       /* We should not change file's existing LOV EA */
+       if (S_ISREG(lu_object_attr(&o->mot_obj)) &&
+           flags & MDS_OPEN_HAS_EA && ma->ma_valid & MA_LOV)
+               GOTO(out, rc = -EEXIST);
+
        /* If a release request, check file flags are fine and ask for an
         * exclusive open access. */
        if (flags & MDS_OPEN_RELEASE && !mdt_hsm_release_allow(ma))
        /* If a release request, check file flags are fine and ask for an
         * exclusive open access. */
        if (flags & MDS_OPEN_RELEASE && !mdt_hsm_release_allow(ma))