master - gfs-kernel: bz 458765 - In linux-2.6.26 / 2.03.06, GFS1 can't create more than 4kb file (fwd)

Stefan Bader stefan.bader at canonical.com
Mon Oct 20 08:27:14 UTC 2008


Fabio M. Di Nitto wrote:
> Hi guys,
> 
> we recently found a serious regression in GFS1 kernel module as shipped 
> in 2.6.26 and 2.6.27.
> 
> The following patch fix the problem.
> 
> Please apply urgently.
> 
Applied. Thanks

Stefan
> Fabio
> 
> --
> I'm going to make him an offer he can't refuse.
> 
> ---------- Forwarded message ----------
> Date: Mon, 20 Oct 2008 05:24:53 +0000 (UTC)
> From: Abhijith Das <adas at fedoraproject.org>
> To: cluster-cvs-relay at redhat.com
> Subject: master - gfs-kernel: bz 458765 - In linux-2.6.26 / 2.03.06,
>      GFS1 can't create more than 4kb file
> 
> Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=e85d18d96a209bd05688045cb85cecc2df928ab5
> Commit:        e85d18d96a209bd05688045cb85cecc2df928ab5
> Parent:        3882892c0793af277f92de5cd2efeec7faa24081
> Author:        Abhijith Das <adas at redhat.com>
> AuthorDate:    Mon Oct 20 00:21:45 2008 -0500
> Committer:     Abhijith Das <adas at redhat.com>
> CommitterDate: Mon Oct 20 00:22:29 2008 -0500
> 
> gfs-kernel: bz 458765 - In linux-2.6.26 / 2.03.06, GFS1 can't create more than 4kb file
> 
> Temporary workaround fix to make gfs1 work properly
> in upstream kernels until we do it the right way by
> using the new aops write_begin/write_end instead of
> the prepare_write/commit_write interface that we
> currently use.
> ---
>   gfs-kernel/src/gfs/ops_address.c |    5 +++++
>   1 files changed, 5 insertions(+), 0 deletions(-)
> 
> diff --git a/gfs-kernel/src/gfs/ops_address.c b/gfs-kernel/src/gfs/ops_address.c
> index 98c3384..0a9c7cd 100644
> --- a/gfs-kernel/src/gfs/ops_address.c
> +++ b/gfs-kernel/src/gfs/ops_address.c
> @@ -379,9 +379,14 @@ gfs_commit_write(struct file *file, struct page *page,
>   		if (inode->i_size < file_size)
>   			i_size_write(inode, file_size);
>   	} else {
> +		loff_t pos = ((loff_t)page->index << PAGE_CACHE_SHIFT) + to;
>   		error = block_commit_write(page, from, to);
>   		if (error)
>   			goto fail;
> +		if (pos > inode->i_size) {
> +			i_size_write(inode, pos);
> +			mark_inode_dirty(inode);
> +		}
>   	}
> 
>   	ip->gfs_file_aops.commit_write = NULL;
> 


-- 

When all other means of communication fail, try words!






More information about the kernel-team mailing list