[Ocfs2-devel] [PATCH v2 1/2] ocfs2: dlmfs: not clear USER_LOCK_ATTACHED when destroy lock

Joseph Qi joseph.qi at linux.alibaba.com
Thu May 19 01:59:33 UTC 2022



On 5/19/22 7:52 AM, Junxiao Bi wrote:
> The following function is the only place that check USER_LOCK_ATTACHED,
> this flag is set when lock request is granted through user_ast() and
> only the following function will clear it.
> 
> Checking of this flag here is to make sure ocfs2_dlm_unlock is not
> issued if this lock is never granted. For example, lock file is created
> and then get removed, open file never happens.
> 
> Clearing the flag here is not necessary because this is the only function
> that checks it, if another flow is executing user_dlm_destroy_lock(), it
> will bail out at the beginning because of USER_LOCK_IN_TEARDOWN and never
> check USER_LOCK_ATTACHED.
> Drop the clear, so we don't need take care it for the following
> error handling patch.
> 
> int user_dlm_destroy_lock(struct user_lock_res *lockres)
> {
>     ...
> 
>     status = 0;
>     if (!(lockres->l_flags & USER_LOCK_ATTACHED)) {
>         spin_unlock(&lockres->l_lock);
>         goto bail;
>     }
> 
>     lockres->l_flags &= ~USER_LOCK_ATTACHED;
>     lockres->l_flags |= USER_LOCK_BUSY;
>     spin_unlock(&lockres->l_lock);
> 
> 	status = ocfs2_dlm_unlock(conn, &lockres->l_lksb, DLM_LKF_VALBLK);
>     if (status) {
>         user_log_dlm_error("ocfs2_dlm_unlock", status, lockres);
>         goto bail;
>     }
> 	...
> }
> 
> V1 discussion with Joseph:
> https://lore.kernel.org/all/7b620c53-0c45-da2c-829e-26195cbe7d4e@linux.alibaba.com/T/
> 
> Signed-off-by: Junxiao Bi <junxiao.bi at oracle.com>

Reviewed-by: Joseph Qi <joseph.qi at linux.alibaba.com>
> ---
>  fs/ocfs2/dlmfs/userdlm.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/fs/ocfs2/dlmfs/userdlm.c b/fs/ocfs2/dlmfs/userdlm.c
> index 29f183a15798..af0be612589c 100644
> --- a/fs/ocfs2/dlmfs/userdlm.c
> +++ b/fs/ocfs2/dlmfs/userdlm.c
> @@ -619,7 +619,6 @@ int user_dlm_destroy_lock(struct user_lock_res *lockres)
>  		goto bail;
>  	}
>  
> -	lockres->l_flags &= ~USER_LOCK_ATTACHED;
>  	lockres->l_flags |= USER_LOCK_BUSY;
>  	spin_unlock(&lockres->l_lock);
>  



More information about the Ocfs2-devel mailing list