Details
-
Bug
-
Resolution: Fixed
-
Major
-
Lustre 2.7.0
-
None
-
3
-
16422
Description
Do not return EWOULDBLOCK (EAGAIN) in lod_object_init, since lu_object_find_at is using EAGAIN to check whether the object is dying and waiting the object to be released.
struct lu_object *lu_object_find_at(const struct lu_env *env, struct lu_device *dev, const struct lu_fid *f, const struct lu_object_conf *conf) { struct lu_site_bkt_data *bkt; struct lu_object *obj; wait_queue_t wait; while (1) { if (conf != NULL && conf->loc_flags & LOC_F_NOWAIT) { obj = lu_object_find_try(env, dev, f, conf, NULL); return obj; } obj = lu_object_find_try(env, dev, f, conf, &wait); if (obj != ERR_PTR(-EAGAIN)) <--- Only wait here if the object is dying, obviously the failure(-EWOULDBLOCK) of lod_object_init should not wait here, otherwise it will cause list corruption. return obj;
Attachments
Issue Links
- is related to
-
LU-11761 blocked MDT mount and high cpu usage from lodXXXX_recYYYY threads
-
- Resolved
-
Activity
Resolution | New: Fixed [ 1 ] | |
Status | Original: Open [ 1 ] | New: Resolved [ 5 ] |
Fix Version/s | New: Lustre 2.7.0 [ 10631 ] |