In some rare cases (replay of file open with O_LOV_DELAY_CREATE
when object found dead on mdt) mdt_prep_ma_buf_from_rep() can
be called twice (in either mdt_reint_open() and mdt_open_by_fid())
during the same request handling.
So remove assert checking if LMV or LOV has already been found and
set in ma.
Signed-off-by: Bruno Faccini <bruno.faccini@intel.com>
Change-Id: I78e0456ea59c37cab4276383c75c4fa5cc9f4829
Reviewed-on: https://review.whamcloud.com/36611
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Patrick Farrell <farr0186@gmail.com>
Reviewed-by: Lai Siyao <lai.siyao@whamcloud.com>
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
struct mdt_object *obj,
struct md_attr *ma)
{
- LASSERT(ma->ma_lmv == NULL && ma->ma_lmm == NULL);
+ if (ma->ma_lmv || ma->ma_lmm) {
+ CDEBUG(D_INFO, DFID " %s already set.\n",
+ PFID(mdt_object_fid(obj)),
+ ma->ma_lmv ? (ma->ma_lmm ? "ma_lmv and ma_lmm"
+ : "ma_lmv")
+ : "ma_lmm");
+ return;
+ }
+
if (S_ISDIR(obj->mot_header.loh_attr)) {
ma->ma_lmv = req_capsule_server_get(info->mti_pill,
&RMF_MDT_MD);