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()
310 struct disk_events *ev = container_of(dwork, struct disk_events, dwork); in disk_events_workfn() local
312 disk_check_events(ev, &ev->clearing); in disk_events_workfn()
363 if (!disk->ev) in disk_events_poll_msecs_show()
365 return sprintf(buf, "%ld\n", disk->ev->poll_msecs); in disk_events_poll_msecs_show()
381 if (!disk->ev) in disk_events_poll_msecs_store()
385 disk->ev->poll_msecs = intv; in disk_events_poll_msecs_store()
404 struct disk_events *ev; in disk_events_set_dfl_poll_msecs() local
412 list_for_each_entry(ev, &disk_events, node) in disk_events_set_dfl_poll_msecs()
413 disk_flush_events(ev->disk, 0); in disk_events_set_dfl_poll_msecs()
434 struct disk_events *ev; in disk_alloc_events() local
439 ev = kzalloc(sizeof(*ev), GFP_KERNEL); in disk_alloc_events()
440 if (!ev) { in disk_alloc_events()
445 INIT_LIST_HEAD(&ev->node); in disk_alloc_events()
446 ev->disk = disk; in disk_alloc_events()
447 spin_lock_init(&ev->lock); in disk_alloc_events()
448 mutex_init(&ev->block_mutex); in disk_alloc_events()
449 ev->block = 1; in disk_alloc_events()
450 ev->poll_msecs = -1; in disk_alloc_events()
451 INIT_DELAYED_WORK(&ev->dwork, disk_events_workfn); in disk_alloc_events()
453 disk->ev = ev; in disk_alloc_events()
459 if (!disk->ev) in disk_add_events()
463 list_add_tail(&disk->ev->node, &disk_events); in disk_add_events()
475 if (disk->ev) { in disk_del_events()
479 list_del_init(&disk->ev->node); in disk_del_events()
487 WARN_ON_ONCE(disk->ev && disk->ev->block != 1); in disk_release_events()
488 kfree(disk->ev); in disk_release_events()