Details : In liblustre API, errno should be a negative value if error
happens.
+Severity : normal
+Bugzilla : 11544
+Description: ptlrpc_check_set() LBUG
+Details : In case of positive reply from server and failed client bulk
+ callback after bulk transfer shouldn't LBUG, but process this
+ request as erroneous.
+
--------------------------------------------------------------------------------
2007-05-03 Cluster File Systems, Inc. <info@clusterfs.com>
#define OBD_FAIL_PTLRPC_DROP_RPC 0x505
#define OBD_FAIL_PTLRPC_DELAY_SEND 0x506
#define OBD_FAIL_PTLRPC_DELAY_RECOV 0x507
+#define OBD_FAIL_PTLRPC_CLIENT_BULK_CB 0x508
#define OBD_FAIL_OBD_PING_NET 0x600
#define OBD_FAIL_OBD_LOG_CANCEL_NET 0x601
* was good after getting the REPLY for her GET or
* the ACK for her PUT. */
DEBUG_REQ(D_ERROR, req, "bulk transfer failed");
- LBUG();
+ req->rq_status = -EIO;
+ req->rq_phase = RQ_PHASE_INTERPRET;
+ GOTO(interpret, req->rq_status);
}
req->rq_phase = RQ_PHASE_INTERPRET;
struct ptlrpc_bulk_desc *desc = cbid->cbid_arg;
ENTRY;
+ if (OBD_FAIL_CHECK(OBD_FAIL_PTLRPC_CLIENT_BULK_CB))
+ ev->status = -EIO;
+
LASSERT ((desc->bd_type == BULK_PUT_SINK &&
ev->type == LNET_EVENT_PUT) ||
(desc->bd_type == BULK_GET_SOURCE &&
}
run_test 121 "read cancel race ========="
+test_122() { #bug #11544
+ #define OBD_FAIL_PTLRPC_CLIENT_BULK_CB 0x508
+ sysctl -w lustre.fail_loc=0x508
+ dd if=/dev/zero of=$DIR/$tfile count=1
+ sync
+ sysctl -w lustre.fail_loc=0
+}
+run_test 122 "fail client bulk callback (shouldn't LBUG)"
+
TMPDIR=$OLDTMPDIR
TMP=$OLDTMP
HOME=$OLDHOME