* Note that reiserfs quotas are disabled on SLES 10 in this kernel.
Severity : normal
+Bugzilla : 3462
+Description: Fix a replay issue
+Details : In some cases, older replay request will revert the
+ mcd->mcd_last_xid on MDS which is used to record the client's
+ latest sent request.
+
+Severity : normal
Bugzilla : 13969
Description: Update to RHEL5 kernel 2.6.18-8.1.15.el5.
mcd->mcd_last_close_data = cpu_to_le32(op_data);
} else {
prev_transno = le64_to_cpu(mcd->mcd_last_transno);
- mcd->mcd_last_transno = cpu_to_le64(transno);
- mcd->mcd_last_xid = cpu_to_le64(req->rq_xid);
- mcd->mcd_last_result = cpu_to_le32(rc);
- mcd->mcd_last_data = cpu_to_le32(op_data);
+ if (((lustre_msg_get_flags(req->rq_reqmsg) &
+ (MSG_RESENT | MSG_REPLAY)) == 0) ||
+ (transno > prev_transno)) {
+ mcd->mcd_last_transno = cpu_to_le64(transno);
+ mcd->mcd_last_xid = cpu_to_le64(req->rq_xid);
+ mcd->mcd_last_result = cpu_to_le32(rc);
+ mcd->mcd_last_data = cpu_to_le32(op_data);
+ }
}
/* update the server data to not lose the greatest transno. Bug 11125 */
if ((transno == 0) && (prev_transno == mds->mds_last_transno))
}
run_test 53e "|X| open reply while two MDC requests in flight"
+test_53f() {
+ mkdir -p $DIR/${tdir}-1
+ mkdir -p $DIR/${tdir}-2
+ multiop $DIR/${tdir}-1/f O_c &
+ close_pid=$!
+
+ do_facet mds "sysctl -w lustre.fail_loc=0x80000119"
+ mcreate $DIR/${tdir}-2/f &
+ open_pid=$!
+ sleep 1
+
+ do_facet mds "sysctl -w lustre.fail_loc=0x8000013b"
+ kill -USR1 $close_pid
+ cancel_lru_locks MDC
+
+ replay_barrier_nodf mds
+ fail_nodf mds
+ wait $open_pid || return 1
+ sleep 2
+ #close should be gone
+ [ -d /proc/$close_pid ] && return 2
+ do_facet mds "sysctl -w lustre.fail_loc=0"
+
+ $CHECKSTAT -t file $DIR/${tdir}-1/f || return 3
+ $CHECKSTAT -t file $DIR/${tdir}-2/f || return 4
+ rm -rf $DIR/${tdir}-*
+}
+run_test 53f "|X| open reply and close reply while two MDC requests in flight"
+
+test_53g() {
+ mkdir -p $DIR/${tdir}-1
+ mkdir -p $DIR/${tdir}-2
+ multiop $DIR/${tdir}-1/f O_c &
+ close_pid=$!
+
+ do_facet mds "sysctl -w lustre.fail_loc=0x80000119"
+ mcreate $DIR/${tdir}-2/f &
+ open_pid=$!
+ sleep 1
+
+ do_facet mds "sysctl -w lustre.fail_loc=0x80000115"
+ kill -USR1 $close_pid
+ cancel_lru_locks MDC # force the close
+
+ do_facet mds "sysctl -w lustre.fail_loc=0"
+ replay_barrier_nodf mds
+ fail_nodf mds
+ wait $open_pid || return 1
+ sleep 2
+ # close should be gone
+ [ -d /proc/$close_pid ] && return 2
+
+ $CHECKSTAT -t file $DIR/${tdir}-1/f || return 3
+ $CHECKSTAT -t file $DIR/${tdir}-2/f || return 4
+ rm -rf $DIR/${tdir}-*
+}
+run_test 53g "|X| drop open reply and close request while close and open are both in flight"
+
test_53h() {
mkdir -p $DIR/${tdir}-1
mkdir -p $DIR/${tdir}-2