Lines Matching refs:ev
40 static void disk_check_events(struct disk_events *ev,
1428 struct disk_events *ev = disk->ev; in disk_events_poll_jiffies() local
1436 if (ev->poll_msecs >= 0) in disk_events_poll_jiffies()
1437 intv_msecs = ev->poll_msecs; in disk_events_poll_jiffies()
1461 struct disk_events *ev = disk->ev; in disk_block_events() local
1465 if (!ev) in disk_block_events()
1472 mutex_lock(&ev->block_mutex); in disk_block_events()
1474 spin_lock_irqsave(&ev->lock, flags); in disk_block_events()
1475 cancel = !ev->block++; in disk_block_events()
1476 spin_unlock_irqrestore(&ev->lock, flags); in disk_block_events()
1479 cancel_delayed_work_sync(&disk->ev->dwork); in disk_block_events()
1481 mutex_unlock(&ev->block_mutex); in disk_block_events()
1486 struct disk_events *ev = disk->ev; in __disk_unblock_events() local
1490 spin_lock_irqsave(&ev->lock, flags); in __disk_unblock_events()
1492 if (WARN_ON_ONCE(ev->block <= 0)) in __disk_unblock_events()
1495 if (--ev->block) in __disk_unblock_events()
1503 set_timer_slack(&ev->dwork.timer, intv / 4); in __disk_unblock_events()
1506 &ev->dwork, 0); in __disk_unblock_events()
1509 &ev->dwork, intv); in __disk_unblock_events()
1511 spin_unlock_irqrestore(&ev->lock, flags); in __disk_unblock_events()
1526 if (disk->ev) in disk_unblock_events()
1544 struct disk_events *ev = disk->ev; in disk_flush_events() local
1546 if (!ev) in disk_flush_events()
1549 spin_lock_irq(&ev->lock); in disk_flush_events()
1550 ev->clearing |= mask; in disk_flush_events()
1551 if (!ev->block) in disk_flush_events()
1553 &ev->dwork, 0); in disk_flush_events()
1554 spin_unlock_irq(&ev->lock); in disk_flush_events()
1571 struct disk_events *ev = disk->ev; in disk_clear_events() local
1575 if (!ev) { in disk_clear_events()
1590 spin_lock_irq(&ev->lock); in disk_clear_events()
1591 clearing |= ev->clearing; in disk_clear_events()
1592 ev->clearing = 0; in disk_clear_events()
1593 spin_unlock_irq(&ev->lock); in disk_clear_events()
1595 disk_check_events(ev, &clearing); in disk_clear_events()
1600 __disk_unblock_events(disk, ev->clearing ? true : false); in disk_clear_events()
1603 spin_lock_irq(&ev->lock); in disk_clear_events()
1604 pending = ev->pending & mask; in disk_clear_events()
1605 ev->pending &= ~mask; in disk_clear_events()
1606 spin_unlock_irq(&ev->lock); in disk_clear_events()
1619 struct disk_events *ev = container_of(dwork, struct disk_events, dwork); in disk_events_workfn() local
1621 disk_check_events(ev, &ev->clearing); in disk_events_workfn()
1624 static void disk_check_events(struct disk_events *ev, in disk_check_events() argument
1627 struct gendisk *disk = ev->disk; in disk_check_events()
1638 spin_lock_irq(&ev->lock); in disk_check_events()
1640 events &= ~ev->pending; in disk_check_events()
1641 ev->pending |= events; in disk_check_events()
1645 if (!ev->block && intv) in disk_check_events()
1647 &ev->dwork, intv); in disk_check_events()
1649 spin_unlock_irq(&ev->lock); in disk_check_events()
1711 return sprintf(buf, "%ld\n", disk->ev->poll_msecs); in disk_events_poll_msecs_show()
1728 disk->ev->poll_msecs = intv; in disk_events_poll_msecs_store()
1756 struct disk_events *ev; in disk_events_set_dfl_poll_msecs() local
1765 list_for_each_entry(ev, &disk_events, node) in disk_events_set_dfl_poll_msecs()
1766 disk_flush_events(ev->disk, 0); in disk_events_set_dfl_poll_msecs()
1789 struct disk_events *ev; in disk_alloc_events() local
1794 ev = kzalloc(sizeof(*ev), GFP_KERNEL); in disk_alloc_events()
1795 if (!ev) { in disk_alloc_events()
1800 INIT_LIST_HEAD(&ev->node); in disk_alloc_events()
1801 ev->disk = disk; in disk_alloc_events()
1802 spin_lock_init(&ev->lock); in disk_alloc_events()
1803 mutex_init(&ev->block_mutex); in disk_alloc_events()
1804 ev->block = 1; in disk_alloc_events()
1805 ev->poll_msecs = -1; in disk_alloc_events()
1806 INIT_DELAYED_WORK(&ev->dwork, disk_events_workfn); in disk_alloc_events()
1808 disk->ev = ev; in disk_alloc_events()
1813 if (!disk->ev) in disk_add_events()
1822 list_add_tail(&disk->ev->node, &disk_events); in disk_add_events()
1834 if (!disk->ev) in disk_del_events()
1840 list_del_init(&disk->ev->node); in disk_del_events()
1849 WARN_ON_ONCE(disk->ev && disk->ev->block != 1); in disk_release_events()
1850 kfree(disk->ev); in disk_release_events()