aboutsummaryrefslogtreecommitdiffstats
path: root/block/genhd.c
diff options
context:
space:
mode:
Diffstat (limited to 'block/genhd.c')
-rw-r--r--block/genhd.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/block/genhd.c b/block/genhd.c
index 95822ae25cf..3f093307764 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -1508,10 +1508,18 @@ void disk_unblock_events(struct gendisk *disk)
1508 */ 1508 */
1509void disk_check_events(struct gendisk *disk) 1509void disk_check_events(struct gendisk *disk)
1510{ 1510{
1511 if (disk->ev) { 1511 struct disk_events *ev = disk->ev;
1512 __disk_block_events(disk, false); 1512 unsigned long flags;
1513 __disk_unblock_events(disk, true); 1513
1514 if (!ev)
1515 return;
1516
1517 spin_lock_irqsave(&ev->lock, flags);
1518 if (!ev->block) {
1519 cancel_delayed_work(&ev->dwork);
1520 queue_delayed_work(system_nrt_wq, &ev->dwork, 0);
1514 } 1521 }
1522 spin_unlock_irqrestore(&ev->lock, flags);
1515} 1523}
1516EXPORT_SYMBOL_GPL(disk_check_events); 1524EXPORT_SYMBOL_GPL(disk_check_events);
1517 1525