Messages in this thread Patch in this message | | | From | Peng Tao <> | Subject | [PATCH 25/39] staging/lustre/lmv: choose right MDT for open by FID | Date | Fri, 15 Nov 2013 00:32:48 +0800 |
| |
From: wang di <di.wang@intel.com>
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 <di.wang@intel.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Peng Tao <bergwolf@gmail.com> Signed-off-by: Andreas Dilger <andreas.dilger@intel.com> --- 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
| |