Currently, when MDT umount/crash, it may not notify the MGS
to cleanup related barrier lock and bitmap. Then subsequent
barrier operation may find some stale barrier locks. It is
unnecessary to return failure by mgs_barrier_glimpse_lock()
for such case, the caller will handle that properly.
Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: I341fd648da2eebbaab729145d1f06c420fce6455
Reviewed-on: https://review.whamcloud.com/26455
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Niu Yawei <yawei.niu@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
ENTRY;
if (rc) {
- if (rc == -ENODEV)
+ if (rc == -ENODEV) {
/* The lock is useless, cancel it. */
ldlm_lock_cancel(ca->ca_lock);
+ rc = 0;
+ }
GOTO(out, rc);
}
strnlen(bc->bc_name, sizeof(bc->bc_name)) > 8))
RETURN(-EINVAL);
+ /* NOT allow barrier operations during recovery. */
+ if (unlikely(mgs->mgs_obd->obd_recovering))
+ RETURN(-EBUSY);
+
switch (bc->bc_cmd) {
case BC_FREEZE:
rc = mgs_barrier_freeze(env, mgs, bc);
run_test 409 "Large amount of cross-MDTs hard links on the same file"
prep_801() {
- start_full_debug_logging
- # cleanup unused barrier locks before test
-
[[ $(lustre_version_code mds1) -lt $(version_code 2.9.55) ]] ||
[[ $(lustre_version_code ost1) -lt $(version_code 2.9.55) ]] &&
skip "Need server version at least 2.9.55" & exit 0
-
- do_facet mgs $LCTL barrier_rescan $FSNAME ||
- error "Fail to prep barrier test env"
+ start_full_debug_logging
}
post_801() {