diff options
author | Mike Snitzer <snitzer@redhat.com> | 2010-08-03 06:54:51 -0400 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2010-08-07 12:53:04 -0400 |
commit | edca4a380584a65a16839bdee33ec82244f0f88e (patch) | |
tree | f0e24d4712cf98eb5876157ae1f49bebc6d701ef | |
parent | f6c4c8e19a087dae7dc651ccbd1ff8b843eedee2 (diff) |
block: disallow FS recursion from sb_issue_discard allocation
Filesystems can call sb_issue_discard on a memory reclaim path
(e.g. ext4 calls sb_issue_discard during journal commit).
Use GFP_NOFS in sb_issue_discard to avoid recursing back into the FS.
Reported-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
-rw-r--r-- | include/linux/blkdev.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index a8b05fc80c6d..89c855c5655c 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -933,7 +933,7 @@ static inline int sb_issue_discard(struct super_block *sb, | |||
933 | { | 933 | { |
934 | block <<= (sb->s_blocksize_bits - 9); | 934 | block <<= (sb->s_blocksize_bits - 9); |
935 | nr_blocks <<= (sb->s_blocksize_bits - 9); | 935 | nr_blocks <<= (sb->s_blocksize_bits - 9); |
936 | return blkdev_issue_discard(sb->s_bdev, block, nr_blocks, GFP_KERNEL, | 936 | return blkdev_issue_discard(sb->s_bdev, block, nr_blocks, GFP_NOFS, |
937 | BLKDEV_IFL_WAIT | BLKDEV_IFL_BARRIER); | 937 | BLKDEV_IFL_WAIT | BLKDEV_IFL_BARRIER); |
938 | } | 938 | } |
939 | 939 | ||