diff options
author | Mike Snitzer <snitzer@redhat.com> | 2010-08-03 12:54:51 +0200 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2010-08-07 18:53:04 +0200 |
commit | edca4a380584a65a16839bdee33ec82244f0f88e (patch) | |
tree | f0e24d4712cf98eb5876157ae1f49bebc6d701ef | |
parent | f6c4c8e19a087dae7dc651ccbd1ff8b843eedee2 (diff) | |
download | op-kernel-dev-edca4a380584a65a16839bdee33ec82244f0f88e.zip op-kernel-dev-edca4a380584a65a16839bdee33ec82244f0f88e.tar.gz |
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 a8b05fc..89c855c 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, { block <<= (sb->s_blocksize_bits - 9); nr_blocks <<= (sb->s_blocksize_bits - 9); - return blkdev_issue_discard(sb->s_bdev, block, nr_blocks, GFP_KERNEL, + return blkdev_issue_discard(sb->s_bdev, block, nr_blocks, GFP_NOFS, BLKDEV_IFL_WAIT | BLKDEV_IFL_BARRIER); } |