From be5ef474be66c7978b427421556b50e5a1b51077 Mon Sep 17 00:00:00 2001 From: Bobi Jam Date: Thu, 6 Nov 2014 20:44:27 +0800 Subject: [PATCH] LU-5823 clio: get rid of lov_stripe_md reference Get rid of lov_stripe_md reference in setting file's stripe info. Signed-off-by: Bobi Jam Change-Id: I303bfc98113bf1f086053225959001377879637a Signed-off-by: Jinshan Xiong Reviewed-on: http://review.whamcloud.com/12639 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: John L. Hammond Reviewed-by: Oleg Drokin --- lustre/llite/file.c | 15 --------------- lustre/mdt/mdt_open.c | 5 +++++ 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/lustre/llite/file.c b/lustre/llite/file.c index 1752da1..0315ebd 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -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) { - struct lov_stripe_md *lsm = NULL; 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; - 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); - 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); - ccc_inode_lsm_put(inode, lsm); -out: cl_lov_delay_create_clear(&file->f_flags); RETURN(rc); diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index 84f0e7e..1d414f4 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -1063,6 +1063,11 @@ static int mdt_open_by_fid_lock(struct mdt_thread_info *info, 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)) -- 1.8.3.1