If the open is by FID, LMV should locate MDT by the FID
of the file/directory, instead of its parent.
Signed-off-by: wang di <di.wang@intel.com>
Change-Id: If7815de8cab0cf28b521decccda3c5f0f1aed73c
Reviewed-on: http://review.whamcloud.com/7253
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
- tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1);
+ /* Note: client might open with some random flags(sanity 33b), so we can
+ * not make sure op_fid2 is being initialized with BY_FID flag */
+ if (it->it_flags & MDS_OPEN_BY_FID && fid_is_sane(&op_data->op_fid2))
+ tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid2);
+ else
+ tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1);
+
if (IS_ERR(tgt))
RETURN(PTR_ERR(tgt));
if (IS_ERR(tgt))
RETURN(PTR_ERR(tgt));