Lines Matching refs:holder
1038 void *holder) in bd_may_claim() argument
1040 if (bdev->bd_holder == holder) in bd_may_claim()
1074 struct block_device *whole, void *holder) in bd_prepare_to_claim() argument
1078 if (!bd_may_claim(bdev, whole, holder)) in bd_prepare_to_claim()
1142 struct block_device *bd_start_claiming(struct block_device *bdev, void *holder) in bd_start_claiming() argument
1178 err = bd_prepare_to_claim(bdev, whole, holder); in bd_start_claiming()
1180 whole->bd_claiming = holder; in bd_start_claiming()
1191 static void bd_clear_claiming(struct block_device *whole, void *holder) in bd_clear_claiming() argument
1195 BUG_ON(whole->bd_claiming != holder); in bd_clear_claiming()
1210 void *holder) in bd_finish_claiming() argument
1213 BUG_ON(!bd_may_claim(bdev, whole, holder)); in bd_finish_claiming()
1221 bdev->bd_holder = holder; in bd_finish_claiming()
1222 bd_clear_claiming(whole, holder); in bd_finish_claiming()
1238 void *holder) in bd_abort_claiming() argument
1241 bd_clear_claiming(whole, holder); in bd_abort_claiming()
1256 struct bd_holder_disk *holder; in bd_find_holder_disk() local
1258 list_for_each_entry(holder, &bdev->bd_holder_disks, list) in bd_find_holder_disk()
1259 if (holder->disk == disk) in bd_find_holder_disk()
1260 return holder; in bd_find_holder_disk()
1304 struct bd_holder_disk *holder; in bd_link_disk_holder() local
1315 holder = bd_find_holder_disk(bdev, disk); in bd_link_disk_holder()
1316 if (holder) { in bd_link_disk_holder()
1317 holder->refcnt++; in bd_link_disk_holder()
1321 holder = kzalloc(sizeof(*holder), GFP_KERNEL); in bd_link_disk_holder()
1322 if (!holder) { in bd_link_disk_holder()
1327 INIT_LIST_HEAD(&holder->list); in bd_link_disk_holder()
1328 holder->disk = disk; in bd_link_disk_holder()
1329 holder->refcnt = 1; in bd_link_disk_holder()
1344 list_add(&holder->list, &bdev->bd_holder_disks); in bd_link_disk_holder()
1350 kfree(holder); in bd_link_disk_holder()
1369 struct bd_holder_disk *holder; in bd_unlink_disk_holder() local
1373 holder = bd_find_holder_disk(bdev, disk); in bd_unlink_disk_holder()
1375 if (!WARN_ON_ONCE(holder == NULL) && !--holder->refcnt) { in bd_unlink_disk_holder()
1380 list_del_init(&holder->list); in bd_unlink_disk_holder()
1381 kfree(holder); in bd_unlink_disk_holder()
1692 int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder) in blkdev_get() argument
1697 WARN_ON_ONCE((mode & FMODE_EXCL) && !holder); in blkdev_get()
1699 if ((mode & FMODE_EXCL) && holder) { in blkdev_get()
1700 whole = bd_start_claiming(bdev, holder); in blkdev_get()
1715 bd_finish_claiming(bdev, whole, holder); in blkdev_get()
1717 bd_abort_claiming(bdev, whole, holder); in blkdev_get()
1757 void *holder) in blkdev_get_by_path() argument
1766 err = blkdev_get(bdev, mode, holder); in blkdev_get_by_path()
1801 struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder) in blkdev_get_by_dev() argument
1810 err = blkdev_get(bdev, mode, holder); in blkdev_get_by_dev()