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