Lines Matching refs:td

741 static int open_table_device(struct table_device *td, dev_t dev,  in open_table_device()  argument
749 BUG_ON(td->dm_dev.bdev); in open_table_device()
751 bdev = blkdev_get_by_dev(dev, td->dm_dev.mode | FMODE_EXCL, _claim_ptr); in open_table_device()
757 blkdev_put(bdev, td->dm_dev.mode | FMODE_EXCL); in open_table_device()
761 td->dm_dev.bdev = bdev; in open_table_device()
768 static void close_table_device(struct table_device *td, struct mapped_device *md) in close_table_device() argument
770 if (!td->dm_dev.bdev) in close_table_device()
773 bd_unlink_disk_holder(td->dm_dev.bdev, dm_disk(md)); in close_table_device()
774 blkdev_put(td->dm_dev.bdev, td->dm_dev.mode | FMODE_EXCL); in close_table_device()
775 td->dm_dev.bdev = NULL; in close_table_device()
780 struct table_device *td; in find_table_device() local
782 list_for_each_entry(td, l, list) in find_table_device()
783 if (td->dm_dev.bdev->bd_dev == dev && td->dm_dev.mode == mode) in find_table_device()
784 return td; in find_table_device()
792 struct table_device *td; in dm_get_table_device() local
795 td = find_table_device(&md->table_devices, dev, mode); in dm_get_table_device()
796 if (!td) { in dm_get_table_device()
797 td = kmalloc(sizeof(*td), GFP_KERNEL); in dm_get_table_device()
798 if (!td) { in dm_get_table_device()
803 td->dm_dev.mode = mode; in dm_get_table_device()
804 td->dm_dev.bdev = NULL; in dm_get_table_device()
806 if ((r = open_table_device(td, dev, md))) { in dm_get_table_device()
808 kfree(td); in dm_get_table_device()
812 format_dev_t(td->dm_dev.name, dev); in dm_get_table_device()
814 atomic_set(&td->count, 0); in dm_get_table_device()
815 list_add(&td->list, &md->table_devices); in dm_get_table_device()
817 atomic_inc(&td->count); in dm_get_table_device()
820 *result = &td->dm_dev; in dm_get_table_device()
827 struct table_device *td = container_of(d, struct table_device, dm_dev); in dm_put_table_device() local
830 if (atomic_dec_and_test(&td->count)) { in dm_put_table_device()
831 close_table_device(td, md); in dm_put_table_device()
832 list_del(&td->list); in dm_put_table_device()
833 kfree(td); in dm_put_table_device()
844 struct table_device *td = list_entry(tmp, struct table_device, list); in free_table_devices() local
847 td->dm_dev.name, atomic_read(&td->count)); in free_table_devices()
848 kfree(td); in free_table_devices()