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

Fabio M. Di Nitto fabbione at ubuntu.com
Mon Oct 20 06:23:21 UTC 2008


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.

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;




More information about the kernel-team mailing list