Lines Matching refs:whole
1037 static bool bd_may_claim(struct block_device *bdev, struct block_device *whole, in bd_may_claim() argument
1044 else if (whole == bdev) in bd_may_claim()
1047 else if (whole->bd_holder == bd_may_claim) in bd_may_claim()
1049 else if (whole->bd_holder != NULL) 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()
1082 if (whole->bd_claiming) { in bd_prepare_to_claim()
1083 wait_queue_head_t *wq = bit_waitqueue(&whole->bd_claiming, 0); in bd_prepare_to_claim()
1145 struct block_device *whole; in bd_start_claiming() local
1167 whole = bdget_disk(disk, 0); in bd_start_claiming()
1169 whole = bdgrab(bdev); in bd_start_claiming()
1172 if (!whole) in bd_start_claiming()
1178 err = bd_prepare_to_claim(bdev, whole, holder); in bd_start_claiming()
1180 whole->bd_claiming = holder; in bd_start_claiming()
1182 return whole; in bd_start_claiming()
1185 bdput(whole); 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()
1196 whole->bd_claiming = NULL; in bd_clear_claiming()
1197 wake_up_bit(&whole->bd_claiming, 0); in bd_clear_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()
1218 whole->bd_holders++; in bd_finish_claiming()
1219 whole->bd_holder = bd_may_claim; in bd_finish_claiming()
1222 bd_clear_claiming(whole, holder); in bd_finish_claiming()
1237 void bd_abort_claiming(struct block_device *bdev, struct block_device *whole, in bd_abort_claiming() argument
1241 bd_clear_claiming(whole, holder); in bd_abort_claiming()
1607 struct block_device *whole; in __blkdev_get() local
1608 whole = bdget_disk(disk, 0); in __blkdev_get()
1610 if (!whole) in __blkdev_get()
1613 ret = __blkdev_get(whole, mode, 1); in __blkdev_get()
1616 bdev->bd_contains = whole; in __blkdev_get()
1694 struct block_device *whole = NULL; in blkdev_get() local
1700 whole = bd_start_claiming(bdev, holder); in blkdev_get()
1701 if (IS_ERR(whole)) { in blkdev_get()
1703 return PTR_ERR(whole); in blkdev_get()
1709 if (whole) { in blkdev_get()
1710 struct gendisk *disk = whole->bd_disk; in blkdev_get()
1715 bd_finish_claiming(bdev, whole, holder); in blkdev_get()
1717 bd_abort_claiming(bdev, whole, holder); in blkdev_get()
1732 bdput(whole); in blkdev_get()