Details
-
Bug
-
Resolution: Fixed
-
Critical
-
Lustre 2.7.0
-
3
-
16873
Description
In ll_lov_setstripe_ea_info() we forget to call ll_inode_size_unlock() in the out_req_free error path:
ll_inode_size_lock(inode); oit.it_flags |= MDS_OPEN_BY_FID; rc = ll_intent_file_open(file, lum, lum_size, &oit); if (rc) GOTO(out_unlock, rc); rc = oit.d.lustre.it_status; if (rc < 0) GOTO(out_req_free, rc); ll_release_openhandle(file->f_dentry, &oit); out_unlock: ll_inode_size_unlock(inode); ll_intent_release(&oit); ccc_inode_lsm_put(inode, lsm); out: cl_lov_delay_create_clear(&file->f_flags); RETURN(rc); out_req_free: ptlrpc_req_finished((struct ptlrpc_request *) oit.d.lustre.it_data); goto out; }
This was found via code inspection. I didn't check if this path is reachable.