Details
-
Bug
-
Resolution: Fixed
-
Minor
-
None
-
None
-
None
-
1
-
3
-
Orion
-
4947
Description
Seen while running acc-sm:
== sanity test 64b: check out-of-space detection on client =========================================== 03:50:40 (1311072640) STRIPECOUNT=2 ORIGFREE=292008 MAXFREE=800000 BEFORE dd started lustre-OST0000 avl=146676 grnt=38592 diff=108084 lustre-OST0001 avl=145332 grnt=9804 diff=135528 ERROR: dd not return ENOSPC LOG: dd: writing `/mnt/lustre/oosfile': Protocol error LOG: 291009+0 records in LOG: 291008+0 records out LOG: 297992192 bytes (298 MB) copied, 38.9363 seconds, 7.7 MB/s AFTER dd lustre-OST0000 avl=1580 grnt=1332 diff=248 FULL lustre-OST0001 avl=32 grnt=0 diff=32 FULL LOG file dd: writing `/mnt/lustre/oosfile': Protocol error
The problem lies in check_write_rcs():
static int check_write_rcs(struct ptlrpc_request *req, int requested_nob, int niocount, obd_count page_count, struct brw_page **pga) { int i; __u32 *remote_rcs; ... if (remote_rcs[i] < 0) return(remote_rcs[i]); if (remote_rcs[i] != 0) { CDEBUG(D_INFO, "rc[%d] invalid (%d) req %p\n", i, remote_rcs[i], req); return(-EPROTO); }
The check remote_rcs[i] < 0 is always false since remote_rcs[i] is unsigned.