From: wang di <[email protected]> If the open is by FID, LMV should locate MDT by the FID of the file/directory, instead of its parent.
Lustre-change: http://review.whamcloud.com/7253 Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3712 Signed-off-by: wang di <[email protected]> Reviewed-by: Oleg Drokin <[email protected]> Signed-off-by: Peng Tao <[email protected]> Signed-off-by: Andreas Dilger <[email protected]> --- drivers/staging/lustre/lustre/lmv/lmv_intent.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/staging/lustre/lustre/lmv/lmv_intent.c b/drivers/staging/lustre/lustre/lmv/lmv_intent.c index 511b3b4..9d25fc4 100644 --- a/drivers/staging/lustre/lustre/lmv/lmv_intent.c +++ b/drivers/staging/lustre/lustre/lmv/lmv_intent.c @@ -167,7 +167,13 @@ int lmv_intent_open(struct obd_export *exp, struct md_op_data *op_data, struct mdt_body *body; int rc; - 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); -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

