From 5b308ecdc3509bfeaf20adc4f97402bd2c4457a7 Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Thu, 9 Jun 2011 20:43:54 +0200 Subject: [PATCH] --- yaml --- r: 254002 b: refs/heads/master c: a9dce2a3b4f0686dd66cb44d4826a59508bce969 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/block/genhd.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index ce8ababe4005..1c2a8496509f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ab4bd22d3cce6977dc039664cc2d052e3147d662 +refs/heads/master: a9dce2a3b4f0686dd66cb44d4826a59508bce969 diff --git a/trunk/block/genhd.c b/trunk/block/genhd.c index 95822ae25cfe..3f0933077642 100644 --- a/trunk/block/genhd.c +++ b/trunk/block/genhd.c @@ -1508,10 +1508,18 @@ void disk_unblock_events(struct gendisk *disk) */ void disk_check_events(struct gendisk *disk) { - if (disk->ev) { - __disk_block_events(disk, false); - __disk_unblock_events(disk, true); + struct disk_events *ev = disk->ev; + unsigned long flags; + + if (!ev) + return; + + spin_lock_irqsave(&ev->lock, flags); + if (!ev->block) { + cancel_delayed_work(&ev->dwork); + queue_delayed_work(system_nrt_wq, &ev->dwork, 0); } + spin_unlock_irqrestore(&ev->lock, flags); } EXPORT_SYMBOL_GPL(disk_check_events);