Lines Matching refs:ev
39 static void disk_check_events(struct disk_events *ev,
1422 struct disk_events *ev = disk->ev; in disk_events_poll_jiffies() local
1430 if (ev->poll_msecs >= 0) in disk_events_poll_jiffies()
1431 intv_msecs = ev->poll_msecs; in disk_events_poll_jiffies()
1455 struct disk_events *ev = disk->ev; in disk_block_events() local
1459 if (!ev) in disk_block_events()
1466 mutex_lock(&ev->block_mutex); in disk_block_events()
1468 spin_lock_irqsave(&ev->lock, flags); in disk_block_events()
1469 cancel = !ev->block++; in disk_block_events()
1470 spin_unlock_irqrestore(&ev->lock, flags); in disk_block_events()
1473 cancel_delayed_work_sync(&disk->ev->dwork); in disk_block_events()
1475 mutex_unlock(&ev->block_mutex); in disk_block_events()
1480 struct disk_events *ev = disk->ev; in __disk_unblock_events() local
1484 spin_lock_irqsave(&ev->lock, flags); in __disk_unblock_events()
1486 if (WARN_ON_ONCE(ev->block <= 0)) in __disk_unblock_events()
1489 if (--ev->block) in __disk_unblock_events()
1497 set_timer_slack(&ev->dwork.timer, intv / 4); in __disk_unblock_events()
1500 &ev->dwork, 0); in __disk_unblock_events()
1503 &ev->dwork, intv); in __disk_unblock_events()
1505 spin_unlock_irqrestore(&ev->lock, flags); in __disk_unblock_events()
1520 if (disk->ev) in disk_unblock_events()
1538 struct disk_events *ev = disk->ev; in disk_flush_events() local
1540 if (!ev) in disk_flush_events()
1543 spin_lock_irq(&ev->lock); in disk_flush_events()
1544 ev->clearing |= mask; in disk_flush_events()
1545 if (!ev->block) in disk_flush_events()
1547 &ev->dwork, 0); in disk_flush_events()
1548 spin_unlock_irq(&ev->lock); in disk_flush_events()
1565 struct disk_events *ev = disk->ev; in disk_clear_events() local
1569 if (!ev) { in disk_clear_events()
1584 spin_lock_irq(&ev->lock); in disk_clear_events()
1585 clearing |= ev->clearing; in disk_clear_events()
1586 ev->clearing = 0; in disk_clear_events()
1587 spin_unlock_irq(&ev->lock); in disk_clear_events()
1589 disk_check_events(ev, &clearing); in disk_clear_events()
1594 __disk_unblock_events(disk, ev->clearing ? true : false); in disk_clear_events()
1597 spin_lock_irq(&ev->lock); in disk_clear_events()
1598 pending = ev->pending & mask; in disk_clear_events()
1599 ev->pending &= ~mask; in disk_clear_events()
1600 spin_unlock_irq(&ev->lock); in disk_clear_events()
1613 struct disk_events *ev = container_of(dwork, struct disk_events, dwork); in disk_events_workfn() local
1615 disk_check_events(ev, &ev->clearing); in disk_events_workfn()
1618 static void disk_check_events(struct disk_events *ev, in disk_check_events() argument
1621 struct gendisk *disk = ev->disk; in disk_check_events()
1632 spin_lock_irq(&ev->lock); in disk_check_events()
1634 events &= ~ev->pending; in disk_check_events()
1635 ev->pending |= events; in disk_check_events()
1639 if (!ev->block && intv) in disk_check_events()
1641 &ev->dwork, intv); in disk_check_events()
1643 spin_unlock_irq(&ev->lock); in disk_check_events()
1705 return sprintf(buf, "%ld\n", disk->ev->poll_msecs); in disk_events_poll_msecs_show()
1722 disk->ev->poll_msecs = intv; in disk_events_poll_msecs_store()
1750 struct disk_events *ev; in disk_events_set_dfl_poll_msecs() local
1759 list_for_each_entry(ev, &disk_events, node) in disk_events_set_dfl_poll_msecs()
1760 disk_flush_events(ev->disk, 0); in disk_events_set_dfl_poll_msecs()
1783 struct disk_events *ev; in disk_alloc_events() local
1788 ev = kzalloc(sizeof(*ev), GFP_KERNEL); in disk_alloc_events()
1789 if (!ev) { in disk_alloc_events()
1794 INIT_LIST_HEAD(&ev->node); in disk_alloc_events()
1795 ev->disk = disk; in disk_alloc_events()
1796 spin_lock_init(&ev->lock); in disk_alloc_events()
1797 mutex_init(&ev->block_mutex); in disk_alloc_events()
1798 ev->block = 1; in disk_alloc_events()
1799 ev->poll_msecs = -1; in disk_alloc_events()
1800 INIT_DELAYED_WORK(&ev->dwork, disk_events_workfn); in disk_alloc_events()
1802 disk->ev = ev; in disk_alloc_events()
1807 if (!disk->ev) in disk_add_events()
1816 list_add_tail(&disk->ev->node, &disk_events); in disk_add_events()
1828 if (!disk->ev) in disk_del_events()
1834 list_del_init(&disk->ev->node); in disk_del_events()
1843 WARN_ON_ONCE(disk->ev && disk->ev->block != 1); in disk_release_events()
1844 kfree(disk->ev); in disk_release_events()