diff options
-rw-r--r-- | block/genhd.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/block/genhd.c b/block/genhd.c index 95822ae25cfe..3f0933077642 100644 --- a/block/genhd.c +++ b/block/genhd.c | |||
@@ -1508,10 +1508,18 @@ void disk_unblock_events(struct gendisk *disk) | |||
1508 | */ | 1508 | */ |
1509 | void disk_check_events(struct gendisk *disk) | 1509 | void 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 | } |
1516 | EXPORT_SYMBOL_GPL(disk_check_events); | 1524 | EXPORT_SYMBOL_GPL(disk_check_events); |
1517 | 1525 | ||