Lines Matching refs:whole
755 static bool bd_may_claim(struct block_device *bdev, struct block_device *whole, in bd_may_claim() argument
765 else if (whole->bd_holder == bd_may_claim) in bd_may_claim()
767 else if (whole->bd_holder != NULL) in bd_may_claim()
792 struct block_device *whole, void *holder) in bd_prepare_to_claim() argument
796 if (!bd_may_claim(bdev, whole, holder)) in bd_prepare_to_claim()
800 if (whole->bd_claiming) { in bd_prepare_to_claim()
801 wait_queue_head_t *wq = bit_waitqueue(&whole->bd_claiming, 0); in bd_prepare_to_claim()
843 struct block_device *whole; in bd_start_claiming() local
865 whole = bdget_disk(disk, 0); in bd_start_claiming()
867 whole = bdgrab(bdev); in bd_start_claiming()
871 if (!whole) in bd_start_claiming()
877 err = bd_prepare_to_claim(bdev, whole, holder); in bd_start_claiming()
879 whole->bd_claiming = holder; in bd_start_claiming()
881 return whole; in bd_start_claiming()
884 bdput(whole); in bd_start_claiming()
1251 struct block_device *whole; in __blkdev_get() local
1252 whole = bdget_disk(disk, 0); in __blkdev_get()
1254 if (!whole) in __blkdev_get()
1257 ret = __blkdev_get(whole, mode, 1); in __blkdev_get()
1260 bdev->bd_contains = whole; in __blkdev_get()
1342 struct block_device *whole = NULL; in blkdev_get() local
1348 whole = bd_start_claiming(bdev, holder); in blkdev_get()
1349 if (IS_ERR(whole)) { in blkdev_get()
1351 return PTR_ERR(whole); in blkdev_get()
1357 if (whole) { in blkdev_get()
1358 struct gendisk *disk = whole->bd_disk; in blkdev_get()
1365 BUG_ON(!bd_may_claim(bdev, whole, holder)); in blkdev_get()
1372 whole->bd_holders++; in blkdev_get()
1373 whole->bd_holder = bd_may_claim; in blkdev_get()
1379 BUG_ON(whole->bd_claiming != holder); in blkdev_get()
1380 whole->bd_claiming = NULL; in blkdev_get()
1381 wake_up_bit(&whole->bd_claiming, 0); in blkdev_get()
1399 bdput(whole); in blkdev_get()