[Cluster-devel] [PATCH] Fix freeze of cluster-2.03.11

Fabio M. Di Nitto fabbione at fabbione.net
Mon Apr 20 13:14:45 UTC 2009


Hi,

On Mon, 2009-04-20 at 14:27 +0200, Kadlecsik Jozsef wrote:
> Hi,
> 
> I reported on the linux-cluster mailing list (see thread
> https://www.redhat.com/archives/linux-cluster/2009-March/msg00176.html)
> that version cluster-2.03.11 freezes.
> 
> As Wendy Cheng pointed out, the reason for this is that the filesystem API 
> of the kernel changed and "put_inode" was replaced by "drop_inode": while 
> "put_inode" was called without holding any lock, "drop_inode" is called 
> under inode_lock held but the called gfs_sync_page_i may block
> (https://www.redhat.com/archives/linux-cluster/2009-April/msg00060.html).
> 
> The patch below (applied in gfs-kernel/src/gfs/) fixes the bug by 
> releasing the lock before calling gfs_sync_page_i and locking it back 
> after the function call:
> 
> --- gfs-orig/ops_super.c	2009-01-22 13:33:51.000000000 +0100
> +++ gfs/ops_super.c	2009-04-06 13:07:06.000000000 +0200
> @@ -9,6 +9,7 @@
>  #include <linux/statfs.h>
>  #include <linux/seq_file.h>
>  #include <linux/mount.h>
> +#include <linux/writeback.h>
>  
>  #include "gfs.h"
>  #include "dio.h"
> @@ -68,8 +69,11 @@
>  	if (ip &&
>  	    !inode->i_nlink &&
>  	    S_ISREG(inode->i_mode) &&
> -	    !sdp->sd_args.ar_localcaching)
> +	    !sdp->sd_args.ar_localcaching) {
> +	    	spin_unlock(&inode_lock);
>  		gfs_sync_page_i(inode, DIO_START | DIO_WAIT);
> +		spin_lock(&inode_lock);
> +	}
>  	generic_drop_inode(inode);
>  }
>  
> 
> Additionally, the line
> 
> EXPORT_SYMBOL(inode_lock);
> 
> must be added to fs/inode.c in order to the inode_lock symbol get 
> exported.

thanks a lot for you effort but we will need to find another solution.

it's been a long time since gfs1 required extra exported symbols from
the kernel and asking distributions to do that again is not really an
option (not sure if there any other option either).

I'll let the gfs guys look at it.

Thanks again!
Fabio




More information about the Cluster-devel mailing list