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>
This commit is contained in:
parent
f6c4c8e19a
commit
edca4a3805
@ -933,7 +933,7 @@ static inline int sb_issue_discard(struct super_block *sb,
|
|||||||
{
|
{
|
||||||
block <<= (sb->s_blocksize_bits - 9);
|
block <<= (sb->s_blocksize_bits - 9);
|
||||||
nr_blocks <<= (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);
|
BLKDEV_IFL_WAIT | BLKDEV_IFL_BARRIER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user