#define OBD_FAIL_MDS_STATFS_SPOOF 0x168
#define OBD_FAIL_MDS_REINT_OPEN 0x169
#define OBD_FAIL_MDS_REINT_OPEN2 0x16a
+#define OBD_FAIL_MDS_COMMITRW_DELAY 0x16b
/* layout lock */
#define OBD_FAIL_MDS_NO_LL_GETATTR 0x170
retry:
if (!dt_object_exists(dob))
GOTO(out, rc = -ENOENT);
- if (lu_object_is_dying(&mo->mot_header)) {
- /* Commit to stale object can be just skipped silently. */
- CDEBUG(D_INODE, "skip commit to stale object "DFID"\n",
- PFID(mdt_object_fid(mo)));
- GOTO(out, rc = 0);
- }
if (niocount == 0) {
rc = -EPROTO;
GOTO(out, rc);
}
+ CFS_FAIL_TIMEOUT(OBD_FAIL_MDS_COMMITRW_DELAY, cfs_fail_val);
+
th = dt_trans_create(env, dt);
if (IS_ERR(th))
GOTO(out, rc = PTR_ERR(th));
GOTO(out_stop, rc);
dt_write_lock(env, dob, 0);
+ if (lu_object_is_dying(&mo->mot_header)) {
+ /* Commit to stale object can be just skipped silently. */
+ CDEBUG(D_INODE, "skip commit to stale object "DFID"\n",
+ PFID(mdt_object_fid(mo)));
+ GOTO(unlock, rc = 0);
+ }
rc = dt_write_commit(env, dob, lnb, niocount, th, oa->o_size);
if (rc) {
restart = th->th_restart_tran;
}
run_test 273a "DoM: layout swapping should fail with DOM"
+test_273b() {
+ mkdir -p $DIR/$tdir
+ $LFS setstripe -E 1M -L mdt -E -1 -c -1 $DIR/$tdir
+
+#define OBD_FAIL_MDS_COMMITRW_DELAY 0x16b
+ do_facet mds1 $LCTL set_param fail_loc=0x8000016b fail_val=2
+
+ $MULTIOP $DIR/$tdir/$tfile Ouw2097152c
+}
+run_test 273b "DoM: race writeback and object destroy"
+
test_275() {
remote_ost_nodsh && skip "remote OST with nodsh"
[ $OST1_VERSION -lt $(version_code 2.10.57) ] &&