diff options
Diffstat (limited to 'block/blk-lib.c')
-rw-r--r-- | block/blk-lib.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/block/blk-lib.c b/block/blk-lib.c index 2da76c999ef3..97a733cf3d5f 100644 --- a/block/blk-lib.c +++ b/block/blk-lib.c | |||
@@ -119,6 +119,14 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector, | |||
119 | 119 | ||
120 | atomic_inc(&bb.done); | 120 | atomic_inc(&bb.done); |
121 | submit_bio(type, bio); | 121 | submit_bio(type, bio); |
122 | |||
123 | /* | ||
124 | * We can loop for a long time in here, if someone does | ||
125 | * full device discards (like mkfs). Be nice and allow | ||
126 | * us to schedule out to avoid softlocking if preempt | ||
127 | * is disabled. | ||
128 | */ | ||
129 | cond_resched(); | ||
122 | } | 130 | } |
123 | blk_finish_plug(&plug); | 131 | blk_finish_plug(&plug); |
124 | 132 | ||