Lines Matching defs:dev_info

87 	struct dcssblk_dev_info *dev_info;
90 dev_info = container_of(dev, struct dcssblk_dev_info, dev);
91 list_for_each_entry_safe(entry, temp, &dev_info->seg_list, lh) {
95 kfree(dev_info);
106 dcssblk_assign_free_minor(struct dcssblk_dev_info *dev_info)
111 if (dev_info == NULL)
123 dev_info->gd->first_minor = minor;
153 struct dcssblk_dev_info *dev_info;
156 list_for_each_entry(dev_info, &dcssblk_devices, lh) {
157 list_for_each_entry(entry, &dev_info->seg_list, lh) {
169 dcssblk_find_highest_addr(struct dcssblk_dev_info *dev_info)
175 list_for_each_entry(entry, &dev_info->seg_list, lh) {
186 dcssblk_find_lowest_addr(struct dcssblk_dev_info *dev_info)
194 list_for_each_entry(entry, &dev_info->seg_list, lh) {
210 dcssblk_is_continuous(struct dcssblk_dev_info *dev_info)
215 if (dev_info->num_of_segments <= 1)
219 sizeof(struct segment_info) * dev_info->num_of_segments,
224 list_for_each_entry(entry, &dev_info->seg_list, lh) {
230 for (i = 0; i < dev_info->num_of_segments; i++)
231 for (j = 0; j < dev_info->num_of_segments; j++)
242 for (i = 0; i < dev_info->num_of_segments - 1; i++) {
314 struct dcssblk_dev_info *dev_info;
316 dev_info = container_of(dev, struct dcssblk_dev_info, dev);
317 return sprintf(buf, dev_info->is_shared ? "1\n" : "0\n");
323 struct dcssblk_dev_info *dev_info;
330 dev_info = container_of(dev, struct dcssblk_dev_info, dev);
331 if (atomic_read(&dev_info->use_count)) {
337 list_for_each_entry(entry, &dev_info->seg_list, lh) {
346 dev_info->is_shared = 1;
347 switch (dev_info->segment_type) {
351 set_disk_ro(dev_info->gd, 1);
355 if (dev_info->segment_type == SEG_TYPE_SC) {
358 dev_info->segment_name);
362 list_for_each_entry(entry, &dev_info->seg_list, lh) {
371 dev_info->is_shared = 0;
372 set_disk_ro(dev_info->gd, 0);
382 "change\n", dev_info->segment_name);
384 list_for_each_entry(entry, &dev_info->seg_list, lh) {
388 list_del(&dev_info->lh);
390 del_gendisk(dev_info->gd);
391 blk_cleanup_queue(dev_info->dcssblk_queue);
392 dev_info->gd->queue = NULL;
393 put_disk(dev_info->gd);
418 struct dcssblk_dev_info *dev_info;
420 dev_info = container_of(dev, struct dcssblk_dev_info, dev);
421 return sprintf(buf, dev_info->save_pending ? "1\n" : "0\n");
427 struct dcssblk_dev_info *dev_info;
432 dev_info = container_of(dev, struct dcssblk_dev_info, dev);
436 if (atomic_read(&dev_info->use_count) == 0) {
439 "saved\n", dev_info->segment_name);
440 list_for_each_entry(entry, &dev_info->seg_list, lh) {
448 dev_info->segment_name);
449 dev_info->save_pending = 1;
452 if (dev_info->save_pending) {
455 dev_info->save_pending = 0;
458 dev_info->segment_name);
479 struct dcssblk_dev_info *dev_info;
483 dev_info = container_of(dev, struct dcssblk_dev_info, dev);
486 list_for_each_entry(entry, &dev_info->seg_list, lh) {
518 struct dcssblk_dev_info *dev_info;
523 dev_info = NULL;
564 dev_info = kzalloc(sizeof(struct dcssblk_dev_info),
566 if (dev_info == NULL) {
570 strcpy(dev_info->segment_name, local_buf);
571 dev_info->segment_type = seg_info->segment_type;
572 INIT_LIST_HEAD(&dev_info->seg_list);
574 list_add_tail(&seg_info->lh, &dev_info->seg_list);
588 dev_info->num_of_segments = num_of_segments;
589 rc = dcssblk_is_continuous(dev_info);
593 dev_info->start = dcssblk_find_lowest_addr(dev_info);
594 dev_info->end = dcssblk_find_highest_addr(dev_info);
596 dev_set_name(&dev_info->dev, "%s", dev_info->segment_name);
597 dev_info->dev.release = dcssblk_release_segment;
598 dev_info->dev.groups = dcssblk_dev_attr_groups;
599 INIT_LIST_HEAD(&dev_info->lh);
600 dev_info->gd = alloc_disk(DCSSBLK_MINORS_PER_DISK);
601 if (dev_info->gd == NULL) {
605 dev_info->gd->major = dcssblk_major;
606 dev_info->gd->fops = &dcssblk_devops;
607 dev_info->dcssblk_queue = blk_alloc_queue(GFP_KERNEL);
608 dev_info->gd->queue = dev_info->dcssblk_queue;
609 dev_info->gd->private_data = dev_info;
610 dev_info->gd->driverfs_dev = &dev_info->dev;
611 blk_queue_make_request(dev_info->dcssblk_queue, dcssblk_make_request);
612 blk_queue_logical_block_size(dev_info->dcssblk_queue, 4096);
614 seg_byte_size = (dev_info->end - dev_info->start + 1);
615 set_capacity(dev_info->gd, seg_byte_size >> 9); // size in sectors
619 dev_info->save_pending = 0;
620 dev_info->is_shared = 1;
621 dev_info->dev.parent = dcssblk_root_dev;
631 rc = dcssblk_assign_free_minor(dev_info);
634 sprintf(dev_info->gd->disk_name, "dcssblk%d",
635 dev_info->gd->first_minor);
636 list_add_tail(&dev_info->lh, &dcssblk_devices);
645 rc = device_register(&dev_info->dev);
649 get_device(&dev_info->dev);
650 add_disk(dev_info->gd);
652 switch (dev_info->segment_type) {
656 set_disk_ro(dev_info->gd,1);
659 set_disk_ro(dev_info->gd,0);
667 list_del(&dev_info->lh);
668 blk_cleanup_queue(dev_info->dcssblk_queue);
669 dev_info->gd->queue = NULL;
670 put_disk(dev_info->gd);
671 list_for_each_entry(seg_info, &dev_info->seg_list, lh) {
674 put_device(&dev_info->dev);
678 list_del(&dev_info->lh);
680 blk_cleanup_queue(dev_info->dcssblk_queue);
681 dev_info->gd->queue = NULL;
682 put_disk(dev_info->gd);
685 if (dev_info == NULL)
687 list_for_each_entry_safe(seg_info, temp, &dev_info->seg_list, lh) {
692 kfree(dev_info);
705 struct dcssblk_dev_info *dev_info;
730 dev_info = dcssblk_get_device_by_name(local_buf);
731 if (dev_info == NULL) {
738 if (atomic_read(&dev_info->use_count) != 0) {
746 list_del(&dev_info->lh);
747 del_gendisk(dev_info->gd);
748 blk_cleanup_queue(dev_info->dcssblk_queue);
749 dev_info->gd->queue = NULL;
750 put_disk(dev_info->gd);
751 device_unregister(&dev_info->dev);
754 list_for_each_entry(entry, &dev_info->seg_list, lh)
757 put_device(&dev_info->dev);
769 struct dcssblk_dev_info *dev_info;
772 dev_info = bdev->bd_disk->private_data;
773 if (NULL == dev_info) {
777 atomic_inc(&dev_info->use_count);
787 struct dcssblk_dev_info *dev_info = disk->private_data;
790 if (!dev_info) {
795 if (atomic_dec_and_test(&dev_info->use_count)
796 && (dev_info->save_pending)) {
798 "now\n", dev_info->segment_name);
799 list_for_each_entry(entry, &dev_info->seg_list, lh) {
802 dev_info->save_pending = 0;
810 struct dcssblk_dev_info *dev_info;
819 dev_info = bio->bi_bdev->bd_disk->private_data;
820 if (dev_info == NULL)
831 if (dev_info->is_shared) {
832 switch (dev_info->segment_type) {
840 dev_name(&dev_info->dev));
850 source_addr = dev_info->start + (index<<12) + bytes_done;
873 struct dcssblk_dev_info *dev_info;
876 dev_info = bdev->bd_disk->private_data;
877 if (!dev_info)
882 if ((pgoff+1)*PAGE_SIZE-1 > dev_info->end - dev_info->start)
884 *kaddr = (void *) (dev_info->start+pgoff*PAGE_SIZE);
895 struct dcssblk_dev_info *dev_info;
914 dev_info = dcssblk_get_device_by_name(buf);
916 if (dev_info)
917 dcssblk_shared_store(&dev_info->dev,
937 struct dcssblk_dev_info *dev_info;
940 list_for_each_entry(dev_info, &dcssblk_devices, lh) {
941 switch (dev_info->segment_type) {
945 if (!dev_info->is_shared)
958 dev_info->segment_name);
964 struct dcssblk_dev_info *dev_info;
969 list_for_each_entry(dev_info, &dcssblk_devices, lh) {
970 list_for_each_entry(entry, &dev_info->seg_list, lh) {