Details
-
Bug
-
Resolution: Fixed
-
Blocker
-
Lustre 1.8.6
-
None
-
3
-
5080
Description
I found osc_precreate is not working in the expected way, we always precreate 32 objects for some reason.
After digging into code I found there is a bug:
we are using req::rq_async_args.space[0] to store original value of oscc_grow_count, and using req::rq_async_args.pointer_arg[0] to store oscc, however, ptlrpc_async_args is a union, which means req::rq_async_args.space[0] will always be overwritten by a ossc (a pointer), and osc_interpret_create will always get true on this condition "if (diff < (int) req->rq_async_args.space[0])" and reset oscc_grow_count to OST_MIN_PRECREATE and set OSCC_FLAG_LOW.
The fix will be very simple but it has big impact on performance of file creation so I set priority as "major", I will post patch for it very soon.
Attachments
Issue Links
- Trackbacks
-
Lustre 1.8.x known issues tracker While testing against Lustre b18 branch, we would hit known bugs which were already reported in Lustre Bugzilla https://bugzilla.lustre.org/. In order to move away from relying on Bugzilla, we would create a JIRA
Activity
Affects Version/s | New: Lustre 1.8.6 [ 10022 ] | |
Affects Version/s | Original: Lustre 1.8.x [ 10010 ] |
Fix Version/s | New: Lustre 2.1.0 [ 10021 ] | |
Resolution | New: Fixed [ 1 ] | |
Status | Original: Reopened [ 4 ] | New: Resolved [ 5 ] |
Landed for both 1.8.6 and 2.1 so I think that this can be marked RESOLVED. Please reopen if there is still any further work to complete