[Cluster-devel] [PATCH] unlock page lock before doing a dq

Steven Whitehouse swhiteho at redhat.com
Sat Sep 8 15:04:40 UTC 2007


Hi,

The bug has been verified not to exist on the latest kernel, so I don't
think we need this patch,

Steve.

On Sat, 2007-09-08 at 10:25 -0400, Josef Bacik wrote:
> Hello,
> 
> There is a lockup condition where we get an error while perparing to write (such
> as ENOSPC) and we go to do the gfs2_glock_dq_m and the glock has been marked
> dirty.  Since we are already holding the page lock, we will deadlock because we
> will try to flush all the pages back to disk and try to take the pagelock again.
> Wendy you said I would be doing this in a transaction, but if there as error
> inside where we started the transaction, we goto out, where we stop the
> transaction first and then go on and unlock the page.  This fixes RH bz 280791.
> Thank you,
> 
> Josef
> 
> --- 18.34/fs/gfs2/ops_address.c.josef	2007-09-07 15:07:03.000000000 -0400
> +++ 18.34/fs/gfs2/ops_address.c	2007-09-07 15:12:45.000000000 -0400
> @@ -457,8 +457,10 @@ out_alloc_put:
>  			gfs2_alloc_put(ip);
>  		}
>  out_unlock:
> +		unlock_page(page);
>  		gfs2_glock_dq_m(1, &ip->i_gh);
>  		gfs2_holder_uninit(&ip->i_gh);
> +		lock_page(page);
>  	}
>  
>  	return error;
> 




More information about the Cluster-devel mailing list