Lines Matching refs:td

774 static int open_table_device(struct table_device *td, dev_t dev,  in open_table_device()  argument
782 BUG_ON(td->dm_dev.bdev); in open_table_device()
784 bdev = blkdev_get_by_dev(dev, td->dm_dev.mode | FMODE_EXCL, _claim_ptr); in open_table_device()
790 blkdev_put(bdev, td->dm_dev.mode | FMODE_EXCL); in open_table_device()
794 td->dm_dev.bdev = bdev; in open_table_device()
801 static void close_table_device(struct table_device *td, struct mapped_device *md) in close_table_device() argument
803 if (!td->dm_dev.bdev) in close_table_device()
806 bd_unlink_disk_holder(td->dm_dev.bdev, dm_disk(md)); in close_table_device()
807 blkdev_put(td->dm_dev.bdev, td->dm_dev.mode | FMODE_EXCL); in close_table_device()
808 td->dm_dev.bdev = NULL; in close_table_device()
813 struct table_device *td; in find_table_device() local
815 list_for_each_entry(td, l, list) in find_table_device()
816 if (td->dm_dev.bdev->bd_dev == dev && td->dm_dev.mode == mode) in find_table_device()
817 return td; in find_table_device()
825 struct table_device *td; in dm_get_table_device() local
828 td = find_table_device(&md->table_devices, dev, mode); in dm_get_table_device()
829 if (!td) { in dm_get_table_device()
830 td = kmalloc(sizeof(*td), GFP_KERNEL); in dm_get_table_device()
831 if (!td) { in dm_get_table_device()
836 td->dm_dev.mode = mode; in dm_get_table_device()
837 td->dm_dev.bdev = NULL; in dm_get_table_device()
839 if ((r = open_table_device(td, dev, md))) { in dm_get_table_device()
841 kfree(td); in dm_get_table_device()
845 format_dev_t(td->dm_dev.name, dev); in dm_get_table_device()
847 atomic_set(&td->count, 0); in dm_get_table_device()
848 list_add(&td->list, &md->table_devices); in dm_get_table_device()
850 atomic_inc(&td->count); in dm_get_table_device()
853 *result = &td->dm_dev; in dm_get_table_device()
860 struct table_device *td = container_of(d, struct table_device, dm_dev); in dm_put_table_device() local
863 if (atomic_dec_and_test(&td->count)) { in dm_put_table_device()
864 close_table_device(td, md); in dm_put_table_device()
865 list_del(&td->list); in dm_put_table_device()
866 kfree(td); in dm_put_table_device()
877 struct table_device *td = list_entry(tmp, struct table_device, list); in free_table_devices() local
880 td->dm_dev.name, atomic_read(&td->count)); in free_table_devices()
881 kfree(td); in free_table_devices()