Lines Matching defs:ubd_dev

273 	struct ubd *ubd_dev;
326 ubd_dev = &ubd_devs[n];
327 if(ubd_dev->file != NULL){
345 ubd_dev->no_cow = 1;
348 ubd_dev->shared = 1;
351 ubd_dev->no_trim = 1;
377 if(ubd_dev->no_cow){
387 ubd_dev->file = str;
388 ubd_dev->cow.file = backing_file;
389 ubd_dev->boot_openflags = flags;
558 static inline int ubd_file_size(struct ubd *ubd_dev, __u64 *size_out)
572 if (ubd_dev->file && ubd_dev->cow.file) {
573 file = ubd_dev->cow.file;
578 fd = os_open_file(ubd_dev->file, of_read(OPENFLAGS()), 0);
587 file = ubd_dev->file;
777 static void ubd_close_dev(struct ubd *ubd_dev)
779 os_close_file(ubd_dev->fd);
780 if(ubd_dev->cow.file == NULL)
783 os_close_file(ubd_dev->cow.fd);
784 vfree(ubd_dev->cow.bitmap);
785 ubd_dev->cow.bitmap = NULL;
788 static int ubd_open_dev(struct ubd *ubd_dev)
795 ubd_dev->openflags = ubd_dev->boot_openflags;
797 create_ptr = (ubd_dev->cow.file != NULL) ? &create_cow : NULL;
798 back_ptr = ubd_dev->no_cow ? NULL : &ubd_dev->cow.file;
800 fd = open_ubd_file(ubd_dev->file, &ubd_dev->openflags, ubd_dev->shared,
801 back_ptr, &ubd_dev->cow.bitmap_offset,
802 &ubd_dev->cow.bitmap_len, &ubd_dev->cow.data_offset,
806 fd = create_cow_file(ubd_dev->file, ubd_dev->cow.file,
807 ubd_dev->openflags, SECTOR_SIZE, PAGE_SIZE,
808 &ubd_dev->cow.bitmap_offset,
809 &ubd_dev->cow.bitmap_len,
810 &ubd_dev->cow.data_offset);
813 "\"%s\"\n", ubd_dev->file, ubd_dev->cow.file);
818 printk("Failed to open '%s', errno = %d\n", ubd_dev->file,
822 ubd_dev->fd = fd;
824 if(ubd_dev->cow.file != NULL){
825 blk_queue_max_hw_sectors(ubd_dev->queue, 8 * sizeof(long));
828 ubd_dev->cow.bitmap = vmalloc(ubd_dev->cow.bitmap_len);
829 if(ubd_dev->cow.bitmap == NULL){
835 err = read_cow_bitmap(ubd_dev->fd, ubd_dev->cow.bitmap,
836 ubd_dev->cow.bitmap_offset,
837 ubd_dev->cow.bitmap_len);
841 flags = ubd_dev->openflags;
843 err = open_ubd_file(ubd_dev->cow.file, &flags, ubd_dev->shared, NULL,
846 ubd_dev->cow.fd = err;
848 if (ubd_dev->no_trim == 0) {
849 ubd_dev->queue->limits.discard_granularity = SECTOR_SIZE;
850 ubd_dev->queue->limits.discard_alignment = SECTOR_SIZE;
851 blk_queue_max_discard_sectors(ubd_dev->queue, UBD_MAX_REQUEST);
852 blk_queue_max_write_zeroes_sectors(ubd_dev->queue, UBD_MAX_REQUEST);
853 blk_queue_flag_set(QUEUE_FLAG_DISCARD, ubd_dev->queue);
855 blk_queue_flag_set(QUEUE_FLAG_NONROT, ubd_dev->queue);
858 os_close_file(ubd_dev->fd);
864 struct ubd *ubd_dev = dev_get_drvdata(dev);
866 blk_cleanup_queue(ubd_dev->queue);
867 blk_mq_free_tag_set(&ubd_dev->tag_set);
868 *ubd_dev = ((struct ubd) DEFAULT_UBD);
916 struct ubd *ubd_dev = &ubd_devs[n];
919 if(ubd_dev->file == NULL)
922 err = ubd_file_size(ubd_dev, &ubd_dev->size);
928 ubd_dev->size = ROUND_BLOCK(ubd_dev->size);
930 ubd_dev->tag_set.ops = &ubd_mq_ops;
931 ubd_dev->tag_set.queue_depth = 64;
932 ubd_dev->tag_set.numa_node = NUMA_NO_NODE;
933 ubd_dev->tag_set.flags = BLK_MQ_F_SHOULD_MERGE;
934 ubd_dev->tag_set.driver_data = ubd_dev;
935 ubd_dev->tag_set.nr_hw_queues = 1;
937 err = blk_mq_alloc_tag_set(&ubd_dev->tag_set);
941 ubd_dev->queue = blk_mq_init_queue(&ubd_dev->tag_set);
942 if (IS_ERR(ubd_dev->queue)) {
943 err = PTR_ERR(ubd_dev->queue);
947 ubd_dev->queue->queuedata = ubd_dev;
948 blk_queue_write_cache(ubd_dev->queue, true, false);
950 blk_queue_max_segments(ubd_dev->queue, MAX_SG);
951 blk_queue_segment_boundary(ubd_dev->queue, PAGE_SIZE - 1);
952 err = ubd_disk_register(UBD_MAJOR, ubd_dev->size, n, &ubd_gendisk[n]);
959 ubd_disk_register(fake_major, ubd_dev->size, n,
974 blk_mq_free_tag_set(&ubd_dev->tag_set);
975 if (!(IS_ERR(ubd_dev->queue)))
976 blk_cleanup_queue(ubd_dev->queue);
1019 struct ubd *ubd_dev;
1028 ubd_dev = &ubd_devs[n];
1031 if(ubd_dev->file == NULL){
1036 CONFIG_CHUNK(str, size, len, ubd_dev->file, 0);
1038 if(ubd_dev->cow.file != NULL){
1040 CONFIG_CHUNK(str, size, len, ubd_dev->cow.file, 1);
1062 struct ubd *ubd_dev;
1067 ubd_dev = &ubd_devs[n];
1069 if(ubd_dev->file == NULL)
1074 if(ubd_dev->count > 0)
1090 platform_device_unregister(&ubd_dev->pdev);
1118 struct ubd *ubd_dev = &ubd_devs[0];
1121 if(ubd_dev->file == NULL)
1122 ubd_dev->file = "root_fs";
1220 struct ubd *ubd_dev = disk->private_data;
1224 if(ubd_dev->count == 0){
1225 err = ubd_open_dev(ubd_dev);
1228 disk->disk_name, ubd_dev->file, -err);
1232 ubd_dev->count++;
1233 set_disk_ro(disk, !ubd_dev->openflags.w);
1237 /*if((mode & FMODE_WRITE) && !ubd_dev->openflags.w){
1238 if(--ubd_dev->count == 0) ubd_close_dev(ubd_dev);
1248 struct ubd *ubd_dev = disk->private_data;
1251 if(--ubd_dev->count == 0)
1252 ubd_close_dev(ubd_dev);
1418 struct ubd *ubd_dev = hctx->queue->queuedata;
1424 spin_lock_irq(&ubd_dev->lock);
1432 ret = ubd_submit_request(ubd_dev, req);
1439 spin_unlock_irq(&ubd_dev->lock);
1453 struct ubd *ubd_dev = bdev->bd_disk->private_data;
1457 geo->cylinders = ubd_dev->size / (128 * 32 * 512);
1464 struct ubd *ubd_dev = bdev->bd_disk->private_data;
1471 ubd_id[ATA_ID_CYLS] = ubd_dev->size / (128 * 32 * 512);