diff options
author | Josef Bacik <jbacik@redhat.com> | 2008-04-09 09:33:41 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2008-04-10 04:55:26 -0400 |
commit | 16c5f06f15ad4e5a5d6e90b78ffb1ac14319e445 (patch) | |
tree | 84204e44e0246e9a3f4db23223a5209105fde368 /fs/gfs2/inode.c | |
parent | 773adff8e983cba1f5844c3be3be224ca6645f26 (diff) |
[GFS2] fix GFP_KERNEL misuses
There are several places where GFP_KERNEL allocations happen under a glock,
which will result in hangs if we're under memory pressure and go to re-enter the
fs in order to flush stuff out. This patch changes the culprits to GFS_NOFS to
keep this problem from happening. Thank you,
Signed-off-by: Josef Bacik <jbacik@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/inode.c')
-rw-r--r-- | fs/gfs2/inode.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index dcae2aa83f13..3a9ef526c308 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c | |||
@@ -1231,7 +1231,7 @@ int gfs2_readlinki(struct gfs2_inode *ip, char **buf, unsigned int *len) | |||
1231 | 1231 | ||
1232 | x = ip->i_di.di_size + 1; | 1232 | x = ip->i_di.di_size + 1; |
1233 | if (x > *len) { | 1233 | if (x > *len) { |
1234 | *buf = kmalloc(x, GFP_KERNEL); | 1234 | *buf = kmalloc(x, GFP_NOFS); |
1235 | if (!*buf) { | 1235 | if (!*buf) { |
1236 | error = -ENOMEM; | 1236 | error = -ENOMEM; |
1237 | goto out_brelse; | 1237 | goto out_brelse; |