summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2006-07-11 09:50:54 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2006-07-11 09:50:54 -0400
commitf3bba03fd16e25a262323293e5a07dea173c89f7 (patch)
tree1a31ba15db8a4134b1095bac438e02b2203f9cc6
parent4340fe62531f7d1dafb6f5359ffe0378bdb0db80 (diff)
downloadop-kernel-dev-f3bba03fd16e25a262323293e5a07dea173c89f7.zip
op-kernel-dev-f3bba03fd16e25a262323293e5a07dea173c89f7.tar.gz
[GFS2] Fix deadlock in memory allocation
We must not call GFP_KERNEL memory allocations while we are holding the log lock (read or write) since that may trigger a log flush resulting in a deadlock. Eventually we need to fix the locking in log.c, for now this solves the problem at the expense of freeing up memory as fast as we would like to. This needs to be revisited later on. Cc: Kevin Anderson <kanderso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
-rw-r--r--fs/gfs2/meta_io.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/gfs2/meta_io.c b/fs/gfs2/meta_io.c
index cad44fd..42dfd32 100644
--- a/fs/gfs2/meta_io.c
+++ b/fs/gfs2/meta_io.c
@@ -75,7 +75,7 @@ struct inode *gfs2_aspace_get(struct gfs2_sbd *sdp)
aspace = new_inode(sdp->sd_vfs);
if (aspace) {
- mapping_set_gfp_mask(aspace->i_mapping, GFP_KERNEL);
+ mapping_set_gfp_mask(aspace->i_mapping, GFP_NOFS);
aspace->i_mapping->a_ops = &aspace_aops;
aspace->i_size = ~0ULL;
aspace->u.generic_ip = NULL;
OpenPOWER on IntegriCloud