Lines Matching refs:ev

43 	struct disk_events *ev = disk->ev;  in disk_events_poll_jiffies()  local
50 if (ev->poll_msecs >= 0) in disk_events_poll_jiffies()
51 intv_msecs = ev->poll_msecs; in disk_events_poll_jiffies()
75 struct disk_events *ev = disk->ev; in disk_block_events() local
79 if (!ev) in disk_block_events()
86 mutex_lock(&ev->block_mutex); in disk_block_events()
88 spin_lock_irqsave(&ev->lock, flags); in disk_block_events()
89 cancel = !ev->block++; in disk_block_events()
90 spin_unlock_irqrestore(&ev->lock, flags); in disk_block_events()
93 cancel_delayed_work_sync(&disk->ev->dwork); in disk_block_events()
95 mutex_unlock(&ev->block_mutex); in disk_block_events()
100 struct disk_events *ev = disk->ev; in __disk_unblock_events() local
104 spin_lock_irqsave(&ev->lock, flags); in __disk_unblock_events()
106 if (WARN_ON_ONCE(ev->block <= 0)) in __disk_unblock_events()
109 if (--ev->block) in __disk_unblock_events()
115 &ev->dwork, 0); in __disk_unblock_events()
118 &ev->dwork, intv); in __disk_unblock_events()
120 spin_unlock_irqrestore(&ev->lock, flags); in __disk_unblock_events()
135 if (disk->ev) in disk_unblock_events()
153 struct disk_events *ev = disk->ev; in disk_flush_events() local
155 if (!ev) in disk_flush_events()
158 spin_lock_irq(&ev->lock); in disk_flush_events()
159 ev->clearing |= mask; in disk_flush_events()
160 if (!ev->block) in disk_flush_events()
162 &ev->dwork, 0); in disk_flush_events()
163 spin_unlock_irq(&ev->lock); in disk_flush_events()
184 static void disk_check_events(struct disk_events *ev, in disk_check_events() argument
187 struct gendisk *disk = ev->disk; in disk_check_events()
196 spin_lock_irq(&ev->lock); in disk_check_events()
198 events &= ~ev->pending; in disk_check_events()
199 ev->pending |= events; in disk_check_events()
203 if (!ev->block && intv) in disk_check_events()
205 &ev->dwork, intv); in disk_check_events()
207 spin_unlock_irq(&ev->lock); in disk_check_events()
229 struct disk_events *ev = disk->ev; in disk_clear_events() local
233 if (!ev) in disk_clear_events()
243 spin_lock_irq(&ev->lock); in disk_clear_events()
244 clearing |= ev->clearing; in disk_clear_events()
245 ev->clearing = 0; in disk_clear_events()
246 spin_unlock_irq(&ev->lock); in disk_clear_events()
248 disk_check_events(ev, &clearing); in disk_clear_events()
253 __disk_unblock_events(disk, ev->clearing ? true : false); in disk_clear_events()
256 spin_lock_irq(&ev->lock); in disk_clear_events()
257 pending = ev->pending & mask; in disk_clear_events()
258 ev->pending &= ~mask; in disk_clear_events()
259 spin_unlock_irq(&ev->lock); in disk_clear_events()
314 struct disk_events *ev = container_of(dwork, struct disk_events, dwork); in disk_events_workfn() local
316 disk_check_events(ev, &ev->clearing); in disk_events_workfn()
367 if (!disk->ev) in disk_events_poll_msecs_show()
369 return sprintf(buf, "%ld\n", disk->ev->poll_msecs); in disk_events_poll_msecs_show()
385 if (!disk->ev) in disk_events_poll_msecs_store()
389 disk->ev->poll_msecs = intv; in disk_events_poll_msecs_store()
408 struct disk_events *ev; in disk_events_set_dfl_poll_msecs() local
416 list_for_each_entry(ev, &disk_events, node) in disk_events_set_dfl_poll_msecs()
417 disk_flush_events(ev->disk, 0); in disk_events_set_dfl_poll_msecs()
438 struct disk_events *ev; in disk_alloc_events() local
443 ev = kzalloc(sizeof(*ev), GFP_KERNEL); in disk_alloc_events()
444 if (!ev) { in disk_alloc_events()
449 INIT_LIST_HEAD(&ev->node); in disk_alloc_events()
450 ev->disk = disk; in disk_alloc_events()
451 spin_lock_init(&ev->lock); in disk_alloc_events()
452 mutex_init(&ev->block_mutex); in disk_alloc_events()
453 ev->block = 1; in disk_alloc_events()
454 ev->poll_msecs = -1; in disk_alloc_events()
455 INIT_DELAYED_WORK(&ev->dwork, disk_events_workfn); in disk_alloc_events()
457 disk->ev = ev; in disk_alloc_events()
463 if (!disk->ev) in disk_add_events()
467 list_add_tail(&disk->ev->node, &disk_events); in disk_add_events()
479 if (disk->ev) { in disk_del_events()
483 list_del_init(&disk->ev->node); in disk_del_events()
491 WARN_ON_ONCE(disk->ev && disk->ev->block != 1); in disk_release_events()
492 kfree(disk->ev); in disk_release_events()