Whamcloud - gitweb
LU-3186 lmv: do not need allocate FID for open by FID
authorwang di <di.wang@intel.com>
Mon, 3 Feb 2014 02:06:14 +0000 (18:06 -0800)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 22 Apr 2013 15:52:55 +0000 (11:52 -0400)
We do not need allocate FID or set op_fid2 if it is for
Open by FID, otherwise, it will cause the MDT to open
the file with new FID.

Signed-off-by: wang di <di.wang@intel.com>
Change-Id: I67e5a52c643228a6d8bd0190ca1a78b047fd1e7a
Reviewed-on: http://review.whamcloud.com/6099
Reviewed-by: Fan Yong <fan.yong@intel.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/lmv/lmv_intent.c

index 14f49d3..47722b4 100644 (file)
@@ -179,7 +179,10 @@ int lmv_intent_open(struct obd_export *exp, struct md_op_data *op_data,
        if (IS_ERR(tgt))
                RETURN(PTR_ERR(tgt));
 
        if (IS_ERR(tgt))
                RETURN(PTR_ERR(tgt));
 
-       if (it->it_op & IT_CREAT) {
+       /* If it is ready to open the file by FID, do not need
+        * allocate FID at all, otherwise it will confuse MDT */
+       if ((it->it_op & IT_CREAT) &&
+           !(it->it_flags & MDS_OPEN_BY_FID)) {
                /*
                 * For open with IT_CREATE and for IT_CREATE cases allocate new
                 * fid and setup FLD for it.
                /*
                 * For open with IT_CREATE and for IT_CREATE cases allocate new
                 * fid and setup FLD for it.