Lines Matching refs:osdev
99 struct osdblk_device *osdev; /* associated blkdev */ member
199 static int osdblk_get_obj_size(struct osdblk_device *osdev, u64 *size_out) in osdblk_get_obj_size() argument
206 or = osd_start_request(osdev->osd, GFP_KERNEL); in osdblk_get_obj_size()
211 osd_req_get_attributes(or, &osdev->obj); in osdblk_get_obj_size()
216 ret = osd_sync_op(or, OSDBLK_OP_TIMEOUT, osdev->obj_cred); in osdblk_get_obj_size()
297 struct osdblk_device *osdev = q->queuedata; in osdblk_rq_fn() local
336 or = osd_start_request(osdev->osd, GFP_ATOMIC); in osdblk_rq_fn()
343 orq = &osdev->req[rq->tag]; in osdblk_rq_fn()
346 orq->osdev = osdev; in osdblk_rq_fn()
350 osd_req_flush_object(or, &osdev->obj, in osdblk_rq_fn()
353 osd_req_write(or, &osdev->obj, blk_rq_pos(rq) * 512ULL, in osdblk_rq_fn()
356 osd_req_read(or, &osdev->obj, blk_rq_pos(rq) * 512ULL, in osdblk_rq_fn()
366 osdev->obj_cred)) { in osdblk_rq_fn()
381 static void osdblk_free_disk(struct osdblk_device *osdev) in osdblk_free_disk() argument
383 struct gendisk *disk = osdev->disk; in osdblk_free_disk()
395 static int osdblk_init_disk(struct osdblk_device *osdev) in osdblk_init_disk() argument
403 rc = osdblk_get_obj_size(osdev, &obj_size); in osdblk_init_disk()
412 sprintf(disk->disk_name, DRV_NAME "%d", osdev->id); in osdblk_init_disk()
413 disk->major = osdev->major; in osdblk_init_disk()
416 disk->private_data = osdev; in osdblk_init_disk()
419 q = blk_init_queue(osdblk_rq_fn, &osdev->lock); in osdblk_init_disk()
437 blk_queue_stack_limits(q, osd_request_queue(osdev->osd)); in osdblk_init_disk()
444 q->queuedata = osdev; in osdblk_init_disk()
446 osdev->disk = disk; in osdblk_init_disk()
447 osdev->q = q; in osdblk_init_disk()
481 struct osdblk_device *osdev; in class_osdblk_list() local
483 osdev = list_entry(tmp, struct osdblk_device, node); in class_osdblk_list()
486 osdev->id, in class_osdblk_list()
487 osdev->major, in class_osdblk_list()
488 osdev->obj.partition, in class_osdblk_list()
489 osdev->obj.id, in class_osdblk_list()
490 osdev->osd_path); in class_osdblk_list()
501 struct osdblk_device *osdev; in class_osdblk_add() local
510 osdev = kzalloc(sizeof(*osdev) + strlen(buf) + 1, GFP_KERNEL); in class_osdblk_add()
511 if (!osdev) { in class_osdblk_add()
517 spin_lock_init(&osdev->lock); in class_osdblk_add()
518 INIT_LIST_HEAD(&osdev->node); in class_osdblk_add()
525 struct osdblk_device *osdev; in class_osdblk_add() local
527 osdev = list_entry(tmp, struct osdblk_device, node); in class_osdblk_add()
528 if (osdev->id > new_id) in class_osdblk_add()
529 new_id = osdev->id + 1; in class_osdblk_add()
532 osdev->id = new_id; in class_osdblk_add()
535 list_add_tail(&osdev->node, &osdblkdev_list); in class_osdblk_add()
540 if (sscanf(buf, "%llu %llu %s", &osdev->obj.partition, &osdev->obj.id, in class_osdblk_add()
541 osdev->osd_path) != 3) { in class_osdblk_add()
547 sprintf(osdev->name, DRV_NAME "%d", osdev->id); in class_osdblk_add()
550 osdev->osd = osduld_path_lookup(osdev->osd_path); in class_osdblk_add()
551 if (IS_ERR(osdev->osd)) { in class_osdblk_add()
552 rc = PTR_ERR(osdev->osd); in class_osdblk_add()
557 osdblk_make_credential(osdev->obj_cred, &osdev->obj); in class_osdblk_add()
560 irc = register_blkdev(0, osdev->name); in class_osdblk_add()
566 osdev->major = irc; in class_osdblk_add()
569 rc = osdblk_init_disk(osdev); in class_osdblk_add()
576 unregister_blkdev(osdev->major, osdev->name); in class_osdblk_add()
578 osduld_put_device(osdev->osd); in class_osdblk_add()
581 list_del_init(&osdev->node); in class_osdblk_add()
584 kfree(osdev); in class_osdblk_add()
596 struct osdblk_device *osdev = NULL; in class_osdblk_remove() local
614 osdev = list_entry(tmp, struct osdblk_device, node); in class_osdblk_remove()
615 if (osdev->id == target_id) { in class_osdblk_remove()
616 list_del_init(&osdev->node); in class_osdblk_remove()
619 osdev = NULL; in class_osdblk_remove()
624 if (!osdev) in class_osdblk_remove()
628 osdblk_free_disk(osdev); in class_osdblk_remove()
629 unregister_blkdev(osdev->major, osdev->name); in class_osdblk_remove()
630 osduld_put_device(osdev->osd); in class_osdblk_remove()
631 kfree(osdev); in class_osdblk_remove()