mdt_finish_open() fails on exclusive create check as
there isn't an infrormation that the file was created.
Set DISP_OPEN_CREATE for exclusive open replay,
as we know that the original request has succeeded.
Change-Id: Idc71db76b757670b91b3bb1718870a018a805ed2
HPE-bug-id: LUS-9358
Signed-off-by: Andriy Skulysh <c17819@cray.com>
Reviewed-by: Vitaly Fertman <c17818@cray.com>
Reviewed-by: Alexander Zarochentsev <c17826@cray.com>
Reviewed-on: https://review.whamcloud.com/45254
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Alexander Zarochentsev <alexander.zarochentsev@hpe.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
mdt_set_disposition(info, rep, (DISP_IT_EXECD |
DISP_LOOKUP_EXECD |
DISP_LOOKUP_POS));
mdt_set_disposition(info, rep, (DISP_IT_EXECD |
DISP_LOOKUP_EXECD |
DISP_LOOKUP_POS));
+ if ((open_flags & MDS_OPEN_EXCL) &&
+ (open_flags & MDS_OPEN_CREAT))
+ mdt_set_disposition(info, rep,
+ DISP_OPEN_CREATE);
+
mdt_prep_ma_buf_from_rep(info, o, ma);
rc = mdt_attr_get_complex(info, o, ma);
if (rc == 0)
mdt_prep_ma_buf_from_rep(info, o, ma);
rc = mdt_attr_get_complex(info, o, ma);
if (rc == 0)
}
run_test 2d "setdirstripe replay"
}
run_test 2d "setdirstripe replay"
+test_2e() {
+ testid=$(echo $TESTNAME | tr '_' ' ')
+ #define OBD_FAIL_MDS_CLOSE_NET_REP 0x13b
+ do_facet $SINGLEMDS "$LCTL set_param fail_loc=0x8000013b"
+ openfile -f O_CREAT:O_EXCL $DIR/$tfile &
+ sleep 1
+ replay_barrier $SINGLEMDS
+ fail $SINGLEMDS
+ wait
+ $CHECKSTAT -t file $DIR/$tfile ||
+ error "$CHECKSTAT $DIR/$tfile attribute check failed"
+ dmesg | tac | sed "/$testid/,$ d" | \
+ grep "Open request replay failed with -17" &&
+ error "open replay failed" || true
+}
+run_test 2e "O_CREAT|O_EXCL create replay"
+
test_3a() {
local file=$DIR/$tfile
replay_barrier $SINGLEMDS
test_3a() {
local file=$DIR/$tfile
replay_barrier $SINGLEMDS