packages (LINUX_2_6_37): kernel/kernel.spec, kernel/kernel-small_fixes.patc...

arekm arekm at pld-linux.org
Wed Mar 23 22:06:54 CET 2011


Author: arekm                        Date: Wed Mar 23 21:06:54 2011 GMT
Module: packages                      Tag: LINUX_2_6_37
---- Log message:
- rel 2; fix OOM at xfs mount with quotas enabled when there is many inodes

---- Files affected:
packages/kernel:
   kernel.spec (1.888.2.3 -> 1.888.2.4) , kernel-small_fixes.patch (1.21 -> 1.21.2.1) 

---- Diffs:

================================================================
Index: packages/kernel/kernel.spec
diff -u packages/kernel/kernel.spec:1.888.2.3 packages/kernel/kernel.spec:1.888.2.4
--- packages/kernel/kernel.spec:1.888.2.3	Wed Mar 23 18:06:34 2011
+++ packages/kernel/kernel.spec	Wed Mar 23 22:06:48 2011
@@ -89,7 +89,7 @@
 
 %define		basever		2.6.37
 %define		postver		.4
-%define		rel		1
+%define		rel		2
 
 %define		_enable_debug_packages			0
 
@@ -1538,6 +1538,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.888.2.4  2011/03/23 21:06:48  arekm
+- rel 2; fix OOM at xfs mount with quotas enabled when there is many inodes
+
 Revision 1.888.2.3  2011/03/23 17:06:34  arekm
 - update unionfs to http://download.filesystems.org/unionfs/unionfs-2.x/unionfs-2.5.8_for_2.6.37.2.diff.gz
 

================================================================
Index: packages/kernel/kernel-small_fixes.patch
diff -u packages/kernel/kernel-small_fixes.patch:1.21 packages/kernel/kernel-small_fixes.patch:1.21.2.1
--- packages/kernel/kernel-small_fixes.patch:1.21	Tue Mar  8 21:38:28 2011
+++ packages/kernel/kernel-small_fixes.patch	Wed Mar 23 22:06:48 2011
@@ -117,3 +117,72 @@
  	sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_SET);
  }
 
+--- linux-2.6.37/fs//xfs/linux-2.6/xfs_super.c.org	2011-03-23 09:08:50.511734576 +0100
++++ linux-2.6.37/fs//xfs/linux-2.6/xfs_super.c	2011-03-23 09:13:58.385845623 +0100
+@@ -1566,13 +1566,17 @@
+ 	if (error)
+ 		goto out_free_sb;
+ 
+-	error = xfs_mountfs(mp);
+-	if (error)
+-		goto out_filestream_unmount;
+-
+ 	if (mp->m_flags & XFS_MOUNT_TAGGED)
+ 		sb->s_flags |= MS_TAGGED;
+ 
++	/*
++	 * we must configure the block size in the superblock before we run the
++	 * full mount process as the mount process can lookup and cache inodes.
++	 * For the same reason we must also initialise the syncd and register
++	 * the inode cache shrinker so that inodes can be reclaimed during
++	 * operations like a quotacheck that iterate all inodes in the
++	 * filesystem.
++	 */
+ 	sb->s_magic = XFS_SB_MAGIC;
+ 	sb->s_blocksize = mp->m_sb.sb_blocksize;
+ 	sb->s_blocksize_bits = ffs(sb->s_blocksize) - 1;
+@@ -1580,6 +1584,16 @@
+ 	sb->s_time_gran = 1;
+ 	set_posix_acl_flag(sb);
+ 
++	error = xfs_syncd_init(mp);
++	if (error)
++		goto out_filestream_unmount;
++
++	xfs_inode_shrinker_register(mp);
++
++	error = xfs_mountfs(mp);
++	if (error)
++		goto out_syncd_stop;
++
+ 	root = igrab(VFS_I(mp->m_rootip));
+ 	if (!root) {
+ 		error = ENOENT;
+@@ -1595,14 +1609,11 @@
+ 		goto fail_vnrele;
+ 	}
+ 
+-	error = xfs_syncd_init(mp);
+-	if (error)
+-		goto fail_vnrele;
+-
+-	xfs_inode_shrinker_register(mp);
+-
+ 	return 0;
+ 
++ out_syncd_stop:
++	xfs_inode_shrinker_unregister(mp);
++	xfs_syncd_stop(mp);
+  out_filestream_unmount:
+ 	xfs_filestream_unmount(mp);
+  out_free_sb:
+@@ -1626,6 +1637,9 @@
+ 	}
+ 
+  fail_unmount:
++	xfs_inode_shrinker_unregister(mp);
++	xfs_syncd_stop(mp);
++
+ 	/*
+ 	 * Blow away any referenced inode in the filestreams cache.
+ 	 * This can and will cause log traffic as inodes go inactive
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel.spec?r1=1.888.2.3&r2=1.888.2.4&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-small_fixes.patch?r1=1.21&r2=1.21.2.1&f=u



More information about the pld-cvs-commit mailing list