rpms/kernel/F-9 ext4.git-025ef246287da1d16ac091fd65af58a496a3553b.patch, NONE, 1.1.2.1 ext4.git-a2e750f32230c9babd0ddf2c9d0b5aafd19a1447.patch, NONE, 1.1.2.1 kernel.spec, 1.891.2.33, 1.891.2.34 linux-2.6-ext4-ENOSPC-debug.patch, 1.1.2.1, NONE

Chuck Ebbert cebbert at fedoraproject.org
Fri Mar 6 04:22:07 UTC 2009


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv2746

Modified Files:
      Tag: private-fedora-9-2_6_27-branch
	kernel.spec 
Added Files:
      Tag: private-fedora-9-2_6_27-branch
	ext4.git-025ef246287da1d16ac091fd65af58a496a3553b.patch 
	ext4.git-a2e750f32230c9babd0ddf2c9d0b5aafd19a1447.patch 
Removed Files:
      Tag: private-fedora-9-2_6_27-branch
	linux-2.6-ext4-ENOSPC-debug.patch 
Log Message:
Add ext4 stable patch queue.
Drop linux-2.6-ext4-ENOSPC-debug.patch, replaced by upstream stable patch.

ext4.git-025ef246287da1d16ac091fd65af58a496a3553b.patch:

--- NEW FILE ext4.git-025ef246287da1d16ac091fd65af58a496a3553b.patch ---
From: Theodore Ts'o <tytso at mit.edu>
Date: Sat, 21 Feb 2009 17:13:24 +0000 (-0500)
Subject: ext4: Add fallback for find_group_flex
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftytso%2Fext4.git;a=commitdiff_plain;h=025ef246287da1d16ac091fd65af58a496a3553b

ext4: Add fallback for find_group_flex

This is a workaround for find_group_flex() which badly needs to be
replaced.  One of its problems (besides ignoring the Orlov algorithm)
is that it is a bit hyperactive about returning failure under
suspicious circumstances.  This can lead to spurious ENOSPC failures
even when there are inodes still available.

Work around this for now by retrying the search using
find_group_other() if find_group_flex() returns -1.  If
find_group_other() succeeds when find_group_flex() has failed, log a
warning message.

A better block/inode allocator that will fix this problem for real has
been queued up for the next merge window.

Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
(cherry picked from commit 05bf9e839d9de4e8a094274a0a2fd07beb47eaf1)
---

diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index b994854..cce841f 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -702,6 +702,13 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode * dir, int mode)
 
 	if (sbi->s_log_groups_per_flex) {
 		ret2 = find_group_flex(sb, dir, &group);
+		if (ret2 == -1) {
+			ret2 = find_group_other(sb, dir, &group);
+			if (ret2 == 0 && printk_ratelimit())
+				printk(KERN_NOTICE "ext4: find_group_flex "
+				       "failed, fallback succeeded dir %lu\n",
+				       dir->i_ino);
+		}
 		goto got_group;
 	}
 

ext4.git-a2e750f32230c9babd0ddf2c9d0b5aafd19a1447.patch:

--- NEW FILE ext4.git-a2e750f32230c9babd0ddf2c9d0b5aafd19a1447.patch ---
From: Jan Kara <jack at suse.cz>
Date: Mon, 23 Feb 2009 02:09:59 +0000 (-0500)
Subject: ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin()
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftytso%2Fext4.git;a=commitdiff_plain;h=a2e750f32230c9babd0ddf2c9d0b5aafd19a1447

ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin()

Functions ext4_write_begin() and ext4_da_write_begin() call
grab_cache_page_write_begin() without AOP_FLAG_NOFS. Thus it
can happen that page reclaim is triggered in that function
and it recurses back into the filesystem (or some other filesystem).
But this can lead to various problems as a transaction is already
started at that point. Add the necessary flag.

http://bugzilla.kernel.org/show_bug.cgi?id=11688

Signed-off-by: Jan Kara <jack at suse.cz>
Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
(cherry picked from commit ebd3610b110bbb18ea6f9f2aeed1e1068c537227)
---

diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 7b063d4..b233ade 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -1372,6 +1372,10 @@ retry:
   		goto out;
 	}
 
+	/* We cannot recurse into the filesystem as the transaction is already
+	 * started */
+	flags |= AOP_FLAG_NOFS;
+
 	page = grab_cache_page_write_begin(mapping, index, flags);
 	if (!page) {
 		ext4_journal_stop(handle);
@@ -1381,7 +1385,7 @@ retry:
 	*pagep = page;
 
 	ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
-							ext4_get_block);
+				ext4_get_block);
 
 	if (!ret && ext4_should_journal_data(inode)) {
 		ret = walk_page_buffers(handle, page_buffers(page),
@@ -2465,6 +2469,9 @@ retry:
 		ret = PTR_ERR(handle);
 		goto out;
 	}
+	/* We cannot recurse into the filesystem as the transaction is already
+	 * started */
+	flags |= AOP_FLAG_NOFS;
 
 	page = grab_cache_page_write_begin(mapping, index, flags);
 	if (!page) {


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/kernel.spec,v
retrieving revision 1.891.2.33
retrieving revision 1.891.2.34
diff -u -r1.891.2.33 -r1.891.2.34
--- kernel.spec	5 Mar 2009 18:54:06 -0000	1.891.2.33
+++ kernel.spec	6 Mar 2009 04:21:36 -0000	1.891.2.34
@@ -739,7 +739,6 @@
 
 Patch2902: linux-2.6.27-ext4-rename-ext4dev-to-ext4.patch
 Patch2903: linux-2.6.27.9-ext4-cap-check-delay.patch
-Patch2904: linux-2.6-ext4-ENOSPC-debug.patch
 
 # next round of ext4 patches for -stable
 Patch2910: ext4.git-765ba56963fc62e060678a4c2e788ca46722bf6a.patch
@@ -752,6 +751,10 @@
 # fix problems(s) in ext4 queue
 Patch2920: ext4.git-fixes.patch
 
+# more ext4 patches for stable
+Patch2930: ext4.git-025ef246287da1d16ac091fd65af58a496a3553b.patch
+Patch2931: ext4.git-a2e750f32230c9babd0ddf2c9d0b5aafd19a1447.patch
+
 # Add better support for DMI-based autoloading
 Patch3110: linux-2.6-dmi-autoload.patch
 
@@ -1332,7 +1335,6 @@
 # Filesystem patches
 ApplyPatch linux-2.6.27-ext4-rename-ext4dev-to-ext4.patch
 ApplyPatch linux-2.6.27.9-ext4-cap-check-delay.patch
-ApplyPatch linux-2.6-ext4-ENOSPC-debug.patch
 
 ApplyPatch ext4.git-765ba56963fc62e060678a4c2e788ca46722bf6a.patch
 ApplyPatch ext4.git-b9eab5ac8eeff5be74ceed5cda3ab590399d89ef.patch
@@ -1344,6 +1346,9 @@
 
 ApplyPatch ext4.git-fixes.patch
 
+ApplyPatch ext4.git-025ef246287da1d16ac091fd65af58a496a3553b.patch
+ApplyPatch ext4.git-a2e750f32230c9babd0ddf2c9d0b5aafd19a1447.patch
+
 # linux1394 git patches
 ApplyPatch linux-2.6-firewire-git-update.patch
 
@@ -1958,6 +1963,10 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Thu Mar 05 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.27.19-78.2.34
+- Add ext4 stable patch queue.
+- Drop linux-2.6-ext4-ENOSPC-debug.patch, replaced by upstream stable patch.
+
 * Thu Mar 05 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.27.19-78.2.33
 - Add ALSA HDA probe_mask quirks from 2.6.29-rc7
 


--- linux-2.6-ext4-ENOSPC-debug.patch DELETED ---




More information about the fedora-extras-commits mailing list