#define OBD_FAIL_PTLRPC_RESEND_RACE 0x525
#define OBD_FAIL_PTLRPC_ROUND_XID 0x530
#define OBD_FAIL_PTLRPC_CONNECT_RACE 0x531
+#define OBD_FAIL_NET_ERROR_RPC 0x532
#define OBD_FAIL_OBD_PING_NET 0x600
/* OBD_FAIL_OBD_LOG_CANCEL_NET 0x601 obsolete since 1.5 */
#define OBD_FAIL_OSP_CANT_PROCESS_LLOG 0x2105
#define OBD_FAIL_OSP_INVALID_LOGID 0x2106
#define OBD_FAIL_OSP_CON_EVENT_DELAY 0x2107
+#define OBD_FAIL_OSP_PRECREATE_PAUSE 0x2108
/* barrier */
#define OBD_FAIL_MGS_BARRIER_READ_NET 0x2200
if (rc) {
CERROR("%s: can't precreate: rc = %d\n", d->opd_obd->obd_name,
rc);
+ if (req->rq_net_err)
+ /* have osp_precreate_reserve() to wait for repeat */
+ rc = -ENOTCONN;
GOTO(out_req, rc);
}
LASSERT(req->rq_transno == 0);
osp_pre_update_status(d, rc);
wake_up(&d->opd_pre_user_waitq);
+ /* pause to let osp_precreate_reserve to go first */
+ CFS_FAIL_TIMEOUT(OBD_FAIL_OSP_PRECREATE_PAUSE, 2);
+
ptlrpc_req_finished(req);
RETURN(rc);
}
LASSERT(ev->type == LNET_EVENT_SEND || ev->type == LNET_EVENT_UNLINK);
LASSERT(ev->unlinked);
+ if (unlikely(lustre_msg_get_opc(req->rq_reqmsg) == cfs_fail_val &&
+ CFS_FAIL_CHECK_RESET(OBD_FAIL_NET_ERROR_RPC,
+ OBD_FAIL_OSP_PRECREATE_PAUSE |
+ CFS_FAIL_ONCE)))
+ ev->status = -ECONNABORTED;
+
DEBUG_REQ(D_NET, req, "type %d, status %d", ev->type, ev->status);
/* Do not update imp_next_ping for connection request */
}
run_test 820 "update max EA from open intent"
+test_822() {
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+
+ save_lustre_params mds1 \
+ "osp.$FSNAME-OST*-osc-MDT0000.max_create_count" > $p
+ do_facet $SINGLEMDS "$LCTL set_param -n \
+ osp.$FSNAME-OST*MDT0000.max_create_count=0"
+ do_facet $SINGLEMDS "$LCTL set_param -n \
+ osp.$FSNAME-OST0000*MDT0000.max_create_count=20000"
+
+ # wait for statfs update to clear OS_STATFS_NOPRECREATE
+ local maxage=$(do_facet mds1 $LCTL get_param -n \
+ osp.$FSNAME-OST0000*MDT0000.maxage)
+ sleep $((maxage + 1))
+
+ #define OBD_FAIL_NET_ERROR_RPC 0x532
+ do_facet mds1 "$LCTL set_param fail_loc=0x80000532 fail_val=5"
+
+ stack_trap "restore_lustre_params < $p; rm $p"
+
+ local count=$(do_facet $SINGLEMDS "lctl get_param -n \
+ osp.$FSNAME-OST0000*MDT0000.create_count")
+ for i in $(seq 1 $count); do
+ touch $DIR/$tfile.${i} || error "touch failed"
+ done
+}
+run_test 822 "test precreate failure"
+
#
# tests that do cleanup/setup should be run at the end
#