Lines Matching refs:bdev
40 struct block_device bdev; member
53 return &BDEV_I(inode)->bdev; in I_BDEV()
57 static void bdev_write_inode(struct block_device *bdev) in bdev_write_inode() argument
59 struct inode *inode = bdev->bd_inode; in bdev_write_inode()
70 bdevname(bdev, name), ret); in bdev_write_inode()
78 void kill_bdev(struct block_device *bdev) in kill_bdev() argument
80 struct address_space *mapping = bdev->bd_inode->i_mapping; in kill_bdev()
91 void invalidate_bdev(struct block_device *bdev) in invalidate_bdev() argument
93 struct address_space *mapping = bdev->bd_inode->i_mapping; in invalidate_bdev()
107 static void set_init_blocksize(struct block_device *bdev) in set_init_blocksize() argument
109 unsigned bsize = bdev_logical_block_size(bdev); in set_init_blocksize()
110 loff_t size = i_size_read(bdev->bd_inode); in set_init_blocksize()
117 bdev->bd_block_size = bsize; in set_init_blocksize()
118 bdev->bd_inode->i_blkbits = blksize_bits(bsize); in set_init_blocksize()
121 int set_blocksize(struct block_device *bdev, int size) in set_blocksize() argument
128 if (size < bdev_logical_block_size(bdev)) in set_blocksize()
132 if (bdev->bd_block_size != size) { in set_blocksize()
133 sync_blockdev(bdev); in set_blocksize()
134 bdev->bd_block_size = size; in set_blocksize()
135 bdev->bd_inode->i_blkbits = blksize_bits(size); in set_blocksize()
136 kill_bdev(bdev); in set_blocksize()
206 struct block_device *bdev = I_BDEV(bdev_file_inode(file)); in __blkdev_direct_IO_simple() local
215 (bdev_logical_block_size(bdev) - 1)) in __blkdev_direct_IO_simple()
228 bio_set_dev(&bio, bdev); in __blkdev_direct_IO_simple()
257 !blk_poll(bdev_get_queue(bdev), qc, true)) in __blkdev_direct_IO_simple()
292 struct block_device *bdev = I_BDEV(kiocb->ki_filp->f_mapping->host); in blkdev_iopoll() local
293 struct request_queue *q = bdev_get_queue(bdev); in blkdev_iopoll()
342 struct block_device *bdev = I_BDEV(inode); in __blkdev_direct_IO() local
353 (bdev_logical_block_size(bdev) - 1)) in __blkdev_direct_IO()
379 bio_set_dev(bio, bdev); in __blkdev_direct_IO()
451 !blk_poll(bdev_get_queue(bdev), qc, true)) in __blkdev_direct_IO()
485 int __sync_blockdev(struct block_device *bdev, int wait) in __sync_blockdev() argument
487 if (!bdev) in __sync_blockdev()
490 return filemap_flush(bdev->bd_inode->i_mapping); in __sync_blockdev()
491 return filemap_write_and_wait(bdev->bd_inode->i_mapping); in __sync_blockdev()
498 int sync_blockdev(struct block_device *bdev) in sync_blockdev() argument
500 return __sync_blockdev(bdev, 1); in sync_blockdev()
509 int fsync_bdev(struct block_device *bdev) in fsync_bdev() argument
511 struct super_block *sb = get_super(bdev); in fsync_bdev()
517 return sync_blockdev(bdev); in fsync_bdev()
533 struct super_block *freeze_bdev(struct block_device *bdev) in freeze_bdev() argument
538 mutex_lock(&bdev->bd_fsfreeze_mutex); in freeze_bdev()
539 if (++bdev->bd_fsfreeze_count > 1) { in freeze_bdev()
545 sb = get_super(bdev); in freeze_bdev()
548 mutex_unlock(&bdev->bd_fsfreeze_mutex); in freeze_bdev()
552 sb = get_active_super(bdev); in freeze_bdev()
561 bdev->bd_fsfreeze_count--; in freeze_bdev()
562 mutex_unlock(&bdev->bd_fsfreeze_mutex); in freeze_bdev()
567 sync_blockdev(bdev); in freeze_bdev()
568 mutex_unlock(&bdev->bd_fsfreeze_mutex); in freeze_bdev()
580 int thaw_bdev(struct block_device *bdev, struct super_block *sb) in thaw_bdev() argument
584 mutex_lock(&bdev->bd_fsfreeze_mutex); in thaw_bdev()
585 if (!bdev->bd_fsfreeze_count) in thaw_bdev()
589 if (--bdev->bd_fsfreeze_count > 0) in thaw_bdev()
600 bdev->bd_fsfreeze_count++; in thaw_bdev()
602 mutex_unlock(&bdev->bd_fsfreeze_mutex); in thaw_bdev()
663 struct block_device *bdev = I_BDEV(bd_inode); in blkdev_fsync() local
675 error = blkdev_issue_flush(bdev, GFP_KERNEL, NULL); in blkdev_fsync()
699 int bdev_read_page(struct block_device *bdev, sector_t sector, in bdev_read_page() argument
702 const struct block_device_operations *ops = bdev->bd_disk->fops; in bdev_read_page()
705 if (!ops->rw_page || bdev_get_integrity(bdev)) in bdev_read_page()
708 result = blk_queue_enter(bdev->bd_queue, 0); in bdev_read_page()
711 result = ops->rw_page(bdev, sector + get_start_sect(bdev), page, in bdev_read_page()
713 blk_queue_exit(bdev->bd_queue); in bdev_read_page()
737 int bdev_write_page(struct block_device *bdev, sector_t sector, in bdev_write_page() argument
741 const struct block_device_operations *ops = bdev->bd_disk->fops; in bdev_write_page()
743 if (!ops->rw_page || bdev_get_integrity(bdev)) in bdev_write_page()
745 result = blk_queue_enter(bdev->bd_queue, 0); in bdev_write_page()
750 result = ops->rw_page(bdev, sector + get_start_sect(bdev), page, in bdev_write_page()
758 blk_queue_exit(bdev->bd_queue); in bdev_write_page()
786 struct block_device *bdev = &ei->bdev; in init_once() local
788 memset(bdev, 0, sizeof(*bdev)); in init_once()
789 mutex_init(&bdev->bd_mutex); in init_once()
790 INIT_LIST_HEAD(&bdev->bd_list); in init_once()
792 INIT_LIST_HEAD(&bdev->bd_holder_disks); in init_once()
794 bdev->bd_bdi = &noop_backing_dev_info; in init_once()
797 mutex_init(&bdev->bd_fsfreeze_mutex); in init_once()
802 struct block_device *bdev = &BDEV_I(inode)->bdev; in bdev_evict_inode() local
807 list_del_init(&bdev->bd_list); in bdev_evict_inode()
811 if (bdev->bd_bdi != &noop_backing_dev_info) { in bdev_evict_inode()
812 bdi_put(bdev->bd_bdi); in bdev_evict_inode()
813 bdev->bd_bdi = &noop_backing_dev_info; in bdev_evict_inode()
874 return BDEV_I(inode)->bdev.bd_dev == *(dev_t *)data; in bdev_test()
879 BDEV_I(inode)->bdev.bd_dev = *(dev_t *)data; in bdev_set()
902 struct block_device *bdev; in bdget() local
911 bdev = &BDEV_I(inode)->bdev; in bdget()
914 bdev->bd_contains = NULL; in bdget()
915 bdev->bd_super = NULL; in bdget()
916 bdev->bd_inode = inode; in bdget()
917 bdev->bd_block_size = i_blocksize(inode); in bdget()
918 bdev->bd_part_count = 0; in bdget()
919 bdev->bd_invalidated = 0; in bdget()
922 inode->i_bdev = bdev; in bdget()
926 list_add(&bdev->bd_list, &all_bdevs); in bdget()
930 return bdev; in bdget()
939 struct block_device *bdgrab(struct block_device *bdev) in bdgrab() argument
941 ihold(bdev->bd_inode); in bdgrab()
942 return bdev; in bdgrab()
948 struct block_device *bdev; in nr_blockdev_pages() local
951 list_for_each_entry(bdev, &all_bdevs, bd_list) { in nr_blockdev_pages()
952 ret += bdev->bd_inode->i_mapping->nrpages; in nr_blockdev_pages()
958 void bdput(struct block_device *bdev) in bdput() argument
960 iput(bdev->bd_inode); in bdput()
967 struct block_device *bdev; in bd_acquire() local
970 bdev = inode->i_bdev; in bd_acquire()
971 if (bdev && !inode_unhashed(bdev->bd_inode)) { in bd_acquire()
972 bdgrab(bdev); in bd_acquire()
974 return bdev; in bd_acquire()
984 if (bdev) in bd_acquire()
987 bdev = bdget(inode->i_rdev); in bd_acquire()
988 if (bdev) { in bd_acquire()
997 bdgrab(bdev); in bd_acquire()
998 inode->i_bdev = bdev; in bd_acquire()
999 inode->i_mapping = bdev->bd_inode->i_mapping; in bd_acquire()
1003 return bdev; in bd_acquire()
1010 struct block_device *bdev = NULL; in bd_forget() local
1014 bdev = inode->i_bdev; in bd_forget()
1019 if (bdev) in bd_forget()
1020 bdput(bdev); in bd_forget()
1037 static bool bd_may_claim(struct block_device *bdev, struct block_device *whole, in bd_may_claim() argument
1040 if (bdev->bd_holder == holder) in bd_may_claim()
1042 else if (bdev->bd_holder != NULL) in bd_may_claim()
1044 else if (whole == bdev) in bd_may_claim()
1073 static int bd_prepare_to_claim(struct block_device *bdev, in bd_prepare_to_claim() argument
1078 if (!bd_may_claim(bdev, whole, holder)) in bd_prepare_to_claim()
1098 static struct gendisk *bdev_get_gendisk(struct block_device *bdev, int *partno) in bdev_get_gendisk() argument
1100 struct gendisk *disk = get_gendisk(bdev->bd_dev, partno); in bdev_get_gendisk()
1112 if (inode_unhashed(bdev->bd_inode)) { in bdev_get_gendisk()
1142 struct block_device *bd_start_claiming(struct block_device *bdev, void *holder) in bd_start_claiming() argument
1154 disk = bdev_get_gendisk(bdev, &partno); in bd_start_claiming()
1169 whole = bdgrab(bdev); in bd_start_claiming()
1178 err = bd_prepare_to_claim(bdev, whole, holder); in bd_start_claiming()
1209 void bd_finish_claiming(struct block_device *bdev, struct block_device *whole, in bd_finish_claiming() argument
1213 BUG_ON(!bd_may_claim(bdev, whole, holder)); in bd_finish_claiming()
1220 bdev->bd_holders++; in bd_finish_claiming()
1221 bdev->bd_holder = holder; in bd_finish_claiming()
1237 void bd_abort_claiming(struct block_device *bdev, struct block_device *whole, in bd_abort_claiming() argument
1253 static struct bd_holder_disk *bd_find_holder_disk(struct block_device *bdev, in bd_find_holder_disk() argument
1258 list_for_each_entry(holder, &bdev->bd_holder_disks, list) in bd_find_holder_disk()
1302 int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk) in bd_link_disk_holder() argument
1307 mutex_lock(&bdev->bd_mutex); in bd_link_disk_holder()
1309 WARN_ON_ONCE(!bdev->bd_holder); in bd_link_disk_holder()
1312 if (WARN_ON(!disk->slave_dir || !bdev->bd_part->holder_dir)) in bd_link_disk_holder()
1315 holder = bd_find_holder_disk(bdev, disk); in bd_link_disk_holder()
1331 ret = add_symlink(disk->slave_dir, &part_to_dev(bdev->bd_part)->kobj); in bd_link_disk_holder()
1335 ret = add_symlink(bdev->bd_part->holder_dir, &disk_to_dev(disk)->kobj); in bd_link_disk_holder()
1342 kobject_get(bdev->bd_part->holder_dir); in bd_link_disk_holder()
1344 list_add(&holder->list, &bdev->bd_holder_disks); in bd_link_disk_holder()
1348 del_symlink(disk->slave_dir, &part_to_dev(bdev->bd_part)->kobj); in bd_link_disk_holder()
1352 mutex_unlock(&bdev->bd_mutex); in bd_link_disk_holder()
1367 void bd_unlink_disk_holder(struct block_device *bdev, struct gendisk *disk) in bd_unlink_disk_holder() argument
1371 mutex_lock(&bdev->bd_mutex); in bd_unlink_disk_holder()
1373 holder = bd_find_holder_disk(bdev, disk); in bd_unlink_disk_holder()
1376 del_symlink(disk->slave_dir, &part_to_dev(bdev->bd_part)->kobj); in bd_unlink_disk_holder()
1377 del_symlink(bdev->bd_part->holder_dir, in bd_unlink_disk_holder()
1379 kobject_put(bdev->bd_part->holder_dir); in bd_unlink_disk_holder()
1384 mutex_unlock(&bdev->bd_mutex); in bd_unlink_disk_holder()
1399 static void flush_disk(struct block_device *bdev, bool kill_dirty) in flush_disk() argument
1401 if (__invalidate_device(bdev, kill_dirty)) { in flush_disk()
1404 bdev->bd_disk ? bdev->bd_disk->disk_name : ""); in flush_disk()
1407 if (!bdev->bd_disk) in flush_disk()
1409 if (disk_part_scan_enabled(bdev->bd_disk)) in flush_disk()
1410 bdev->bd_invalidated = 1; in flush_disk()
1423 void check_disk_size_change(struct gendisk *disk, struct block_device *bdev, in check_disk_size_change() argument
1429 bdev_size = i_size_read(bdev->bd_inode); in check_disk_size_change()
1436 i_size_write(bdev->bd_inode, disk_size); in check_disk_size_change()
1438 flush_disk(bdev, false); in check_disk_size_change()
1462 struct block_device *bdev = bdget_disk(disk, 0); in revalidate_disk() local
1464 if (!bdev) in revalidate_disk()
1467 mutex_lock(&bdev->bd_mutex); in revalidate_disk()
1468 check_disk_size_change(disk, bdev, ret == 0); in revalidate_disk()
1469 bdev->bd_invalidated = 0; in revalidate_disk()
1470 mutex_unlock(&bdev->bd_mutex); in revalidate_disk()
1471 bdput(bdev); in revalidate_disk()
1486 int check_disk_change(struct block_device *bdev) in check_disk_change() argument
1488 struct gendisk *disk = bdev->bd_disk; in check_disk_change()
1497 flush_disk(bdev, true); in check_disk_change()
1499 bdops->revalidate_disk(bdev->bd_disk); in check_disk_change()
1505 void bd_set_size(struct block_device *bdev, loff_t size) in bd_set_size() argument
1507 inode_lock(bdev->bd_inode); in bd_set_size()
1508 i_size_write(bdev->bd_inode, size); in bd_set_size()
1509 inode_unlock(bdev->bd_inode); in bd_set_size()
1513 static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part);
1522 static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part) in __blkdev_get() argument
1538 ret = devcgroup_inode_permission(bdev->bd_inode, perm); in __blkdev_get()
1540 bdput(bdev); in __blkdev_get()
1548 disk = bdev_get_gendisk(bdev, &partno); in __blkdev_get()
1553 mutex_lock_nested(&bdev->bd_mutex, for_part); in __blkdev_get()
1554 if (!bdev->bd_openers) { in __blkdev_get()
1556 bdev->bd_disk = disk; in __blkdev_get()
1557 bdev->bd_queue = disk->queue; in __blkdev_get()
1558 bdev->bd_contains = bdev; in __blkdev_get()
1559 bdev->bd_partno = partno; in __blkdev_get()
1563 bdev->bd_part = disk_get_part(disk, partno); in __blkdev_get()
1564 if (!bdev->bd_part) in __blkdev_get()
1569 ret = disk->fops->open(bdev, mode); in __blkdev_get()
1575 disk_put_part(bdev->bd_part); in __blkdev_get()
1576 bdev->bd_part = NULL; in __blkdev_get()
1577 bdev->bd_disk = NULL; in __blkdev_get()
1578 bdev->bd_queue = NULL; in __blkdev_get()
1579 mutex_unlock(&bdev->bd_mutex); in __blkdev_get()
1587 bd_set_size(bdev,(loff_t)get_capacity(disk)<<9); in __blkdev_get()
1588 set_init_blocksize(bdev); in __blkdev_get()
1597 if (bdev->bd_invalidated) { in __blkdev_get()
1599 rescan_partitions(disk, bdev); in __blkdev_get()
1601 invalidate_partitions(disk, bdev); in __blkdev_get()
1616 bdev->bd_contains = whole; in __blkdev_get()
1617 bdev->bd_part = disk_get_part(disk, partno); in __blkdev_get()
1619 !bdev->bd_part || !bdev->bd_part->nr_sects) { in __blkdev_get()
1623 bd_set_size(bdev, (loff_t)bdev->bd_part->nr_sects << 9); in __blkdev_get()
1624 set_init_blocksize(bdev); in __blkdev_get()
1627 if (bdev->bd_bdi == &noop_backing_dev_info) in __blkdev_get()
1628 bdev->bd_bdi = bdi_get(disk->queue->backing_dev_info); in __blkdev_get()
1630 if (bdev->bd_contains == bdev) { in __blkdev_get()
1632 if (bdev->bd_disk->fops->open) in __blkdev_get()
1633 ret = bdev->bd_disk->fops->open(bdev, mode); in __blkdev_get()
1635 if (bdev->bd_invalidated) { in __blkdev_get()
1637 rescan_partitions(bdev->bd_disk, bdev); in __blkdev_get()
1639 invalidate_partitions(bdev->bd_disk, bdev); in __blkdev_get()
1645 bdev->bd_openers++; in __blkdev_get()
1647 bdev->bd_part_count++; in __blkdev_get()
1648 mutex_unlock(&bdev->bd_mutex); in __blkdev_get()
1656 disk_put_part(bdev->bd_part); in __blkdev_get()
1657 bdev->bd_disk = NULL; in __blkdev_get()
1658 bdev->bd_part = NULL; in __blkdev_get()
1659 bdev->bd_queue = NULL; in __blkdev_get()
1660 if (bdev != bdev->bd_contains) in __blkdev_get()
1661 __blkdev_put(bdev->bd_contains, mode, 1); in __blkdev_get()
1662 bdev->bd_contains = NULL; in __blkdev_get()
1664 mutex_unlock(&bdev->bd_mutex); in __blkdev_get()
1668 bdput(bdev); in __blkdev_get()
1692 int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder) in blkdev_get() argument
1700 whole = bd_start_claiming(bdev, holder); in blkdev_get()
1702 bdput(bdev); in blkdev_get()
1707 res = __blkdev_get(bdev, mode, 0); in blkdev_get()
1713 mutex_lock(&bdev->bd_mutex); in blkdev_get()
1715 bd_finish_claiming(bdev, whole, holder); in blkdev_get()
1717 bd_abort_claiming(bdev, whole, holder); in blkdev_get()
1725 if (!res && (mode & FMODE_WRITE) && !bdev->bd_write_holder && in blkdev_get()
1727 bdev->bd_write_holder = true; in blkdev_get()
1731 mutex_unlock(&bdev->bd_mutex); in blkdev_get()
1759 struct block_device *bdev; in blkdev_get_by_path() local
1762 bdev = lookup_bdev(path); in blkdev_get_by_path()
1763 if (IS_ERR(bdev)) in blkdev_get_by_path()
1764 return bdev; in blkdev_get_by_path()
1766 err = blkdev_get(bdev, mode, holder); in blkdev_get_by_path()
1770 if ((mode & FMODE_WRITE) && bdev_read_only(bdev)) { in blkdev_get_by_path()
1771 blkdev_put(bdev, mode); in blkdev_get_by_path()
1775 return bdev; in blkdev_get_by_path()
1803 struct block_device *bdev; in blkdev_get_by_dev() local
1806 bdev = bdget(dev); in blkdev_get_by_dev()
1807 if (!bdev) in blkdev_get_by_dev()
1810 err = blkdev_get(bdev, mode, holder); in blkdev_get_by_dev()
1814 return bdev; in blkdev_get_by_dev()
1820 struct block_device *bdev; in blkdev_open() local
1839 bdev = bd_acquire(inode); in blkdev_open()
1840 if (bdev == NULL) in blkdev_open()
1843 filp->f_mapping = bdev->bd_inode->i_mapping; in blkdev_open()
1846 return blkdev_get(bdev, filp->f_mode, filp); in blkdev_open()
1849 static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part) in __blkdev_put() argument
1851 struct gendisk *disk = bdev->bd_disk; in __blkdev_put()
1854 mutex_lock_nested(&bdev->bd_mutex, for_part); in __blkdev_put()
1856 bdev->bd_part_count--; in __blkdev_put()
1858 if (!--bdev->bd_openers) { in __blkdev_put()
1859 WARN_ON_ONCE(bdev->bd_holders); in __blkdev_put()
1860 sync_blockdev(bdev); in __blkdev_put()
1861 kill_bdev(bdev); in __blkdev_put()
1863 bdev_write_inode(bdev); in __blkdev_put()
1865 if (bdev->bd_contains == bdev) { in __blkdev_put()
1869 if (!bdev->bd_openers) { in __blkdev_put()
1870 disk_put_part(bdev->bd_part); in __blkdev_put()
1871 bdev->bd_part = NULL; in __blkdev_put()
1872 bdev->bd_disk = NULL; in __blkdev_put()
1873 if (bdev != bdev->bd_contains) in __blkdev_put()
1874 victim = bdev->bd_contains; in __blkdev_put()
1875 bdev->bd_contains = NULL; in __blkdev_put()
1879 mutex_unlock(&bdev->bd_mutex); in __blkdev_put()
1880 bdput(bdev); in __blkdev_put()
1885 void blkdev_put(struct block_device *bdev, fmode_t mode) in blkdev_put() argument
1887 mutex_lock(&bdev->bd_mutex); in blkdev_put()
1899 WARN_ON_ONCE(--bdev->bd_holders < 0); in blkdev_put()
1900 WARN_ON_ONCE(--bdev->bd_contains->bd_holders < 0); in blkdev_put()
1903 if ((bdev_free = !bdev->bd_holders)) in blkdev_put()
1904 bdev->bd_holder = NULL; in blkdev_put()
1905 if (!bdev->bd_contains->bd_holders) in blkdev_put()
1906 bdev->bd_contains->bd_holder = NULL; in blkdev_put()
1914 if (bdev_free && bdev->bd_write_holder) { in blkdev_put()
1915 disk_unblock_events(bdev->bd_disk); in blkdev_put()
1916 bdev->bd_write_holder = false; in blkdev_put()
1925 disk_flush_events(bdev->bd_disk, DISK_EVENT_MEDIA_CHANGE); in blkdev_put()
1927 mutex_unlock(&bdev->bd_mutex); in blkdev_put()
1929 __blkdev_put(bdev, mode, 0); in blkdev_put()
1935 struct block_device *bdev = I_BDEV(bdev_file_inode(filp)); in blkdev_close() local
1936 blkdev_put(bdev, filp->f_mode); in blkdev_close()
1942 struct block_device *bdev = I_BDEV(bdev_file_inode(file)); in block_ioctl() local
1954 return blkdev_ioctl(bdev, mode, cmd, arg); in block_ioctl()
2020 struct super_block *super = BDEV_I(page->mapping->host)->bdev.bd_super; in blkdev_releasepage()
2054 struct block_device *bdev = I_BDEV(bdev_file_inode(file)); in blkdev_fallocate() local
2065 isize = i_size_read(bdev->bd_inode); in blkdev_fallocate()
2079 if ((start | len) & (bdev_logical_block_size(bdev) - 1)) in blkdev_fallocate()
2083 mapping = bdev->bd_inode->i_mapping; in blkdev_fallocate()
2089 error = blkdev_issue_zeroout(bdev, start >> 9, len >> 9, in blkdev_fallocate()
2093 error = blkdev_issue_zeroout(bdev, start >> 9, len >> 9, in blkdev_fallocate()
2097 error = blkdev_issue_discard(bdev, start >> 9, len >> 9, in blkdev_fallocate()
2134 int ioctl_by_bdev(struct block_device *bdev, unsigned cmd, unsigned long arg) in ioctl_by_bdev() argument
2139 res = blkdev_ioctl(bdev, 0, cmd, arg); in ioctl_by_bdev()
2156 struct block_device *bdev; in lookup_bdev() local
2176 bdev = bd_acquire(inode); in lookup_bdev()
2177 if (!bdev) in lookup_bdev()
2181 return bdev; in lookup_bdev()
2183 bdev = ERR_PTR(error); in lookup_bdev()
2188 int __invalidate_device(struct block_device *bdev, bool kill_dirty) in __invalidate_device() argument
2190 struct super_block *sb = get_super(bdev); in __invalidate_device()
2204 invalidate_bdev(bdev); in __invalidate_device()
2216 struct block_device *bdev; in iterate_bdevs() local
2237 bdev = I_BDEV(inode); in iterate_bdevs()
2239 mutex_lock(&bdev->bd_mutex); in iterate_bdevs()
2240 if (bdev->bd_openers) in iterate_bdevs()
2241 func(bdev, arg); in iterate_bdevs()
2242 mutex_unlock(&bdev->bd_mutex); in iterate_bdevs()