[Ocfs2-commits] smushran commits r3095 - branches/ocfs2-1.2/fs/ocfs2
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Tue May 6 13:31:14 PDT 2008
Author: smushran
Date: 2008-05-06 13:31:14 -0700 (Tue, 06 May 2008)
New Revision: 3095
Modified:
branches/ocfs2-1.2/fs/ocfs2/localalloc.c
Log:
ocfs2: Use GFP_NOFS in kmalloc during localalloc window move
Mainline commit 4ba1c5bfd2e5a6c9528eb7777b66c297e70f61ca
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date: Fri Apr 18 15:03:59 2008 -0700
kmalloc() during a localalloc window move can trigger the mm to prune
the dcache which inturn can trigger the fs to delete an inode causing
it start a recursive transaction.
The fix also makes the change in kmalloc during localalloc shutdown
just to be safe.
Fixes oss bugzilla#901
http://oss.oracle.com/bugzilla/show_bug.cgi?id=901
Signed-off-by: jlbec
Modified: branches/ocfs2-1.2/fs/ocfs2/localalloc.c
===================================================================
--- branches/ocfs2-1.2/fs/ocfs2/localalloc.c 2008-05-02 21:28:00 UTC (rev 3094)
+++ branches/ocfs2-1.2/fs/ocfs2/localalloc.c 2008-05-06 20:31:14 UTC (rev 3095)
@@ -255,7 +255,7 @@
bh = osb->local_alloc_bh;
alloc = (struct ocfs2_dinode *) bh->b_data;
- alloc_copy = kmalloc(bh->b_size, GFP_KERNEL);
+ alloc_copy = kmalloc(bh->b_size, GFP_NOFS);
if (!alloc_copy) {
status = -ENOMEM;
goto bail;
@@ -908,7 +908,7 @@
* local alloc shutdown won't try to double free main bitmap
* bits. Make a copy so the sync function knows which bits to
* free. */
- alloc_copy = kmalloc(osb->local_alloc_bh->b_size, GFP_KERNEL);
+ alloc_copy = kmalloc(osb->local_alloc_bh->b_size, GFP_NOFS);
if (!alloc_copy) {
status = -ENOMEM;
mlog_errno(status);
More information about the Ocfs2-commits
mailing list