diff options
Diffstat (limited to 'drivers/scsi/ipr.c')
-rw-r--r-- | drivers/scsi/ipr.c | 140 |
1 files changed, 75 insertions, 65 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index 65dc18dea845..de5ae6a65029 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c | |||
@@ -2431,7 +2431,7 @@ restart: | |||
2431 | } | 2431 | } |
2432 | 2432 | ||
2433 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); | 2433 | spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); |
2434 | kobject_uevent(&ioa_cfg->host->shost_classdev.kobj, KOBJ_CHANGE); | 2434 | kobject_uevent(&ioa_cfg->host->shost_dev.kobj, KOBJ_CHANGE); |
2435 | LEAVE; | 2435 | LEAVE; |
2436 | } | 2436 | } |
2437 | 2437 | ||
@@ -2451,8 +2451,8 @@ static ssize_t ipr_read_trace(struct kobject *kobj, | |||
2451 | struct bin_attribute *bin_attr, | 2451 | struct bin_attribute *bin_attr, |
2452 | char *buf, loff_t off, size_t count) | 2452 | char *buf, loff_t off, size_t count) |
2453 | { | 2453 | { |
2454 | struct class_device *cdev = container_of(kobj,struct class_device,kobj); | 2454 | struct device *dev = container_of(kobj, struct device, kobj); |
2455 | struct Scsi_Host *shost = class_to_shost(cdev); | 2455 | struct Scsi_Host *shost = class_to_shost(dev); |
2456 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2456 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2457 | unsigned long lock_flags = 0; | 2457 | unsigned long lock_flags = 0; |
2458 | int size = IPR_TRACE_SIZE; | 2458 | int size = IPR_TRACE_SIZE; |
@@ -2492,15 +2492,16 @@ static const struct { | |||
2492 | 2492 | ||
2493 | /** | 2493 | /** |
2494 | * ipr_show_write_caching - Show the write caching attribute | 2494 | * ipr_show_write_caching - Show the write caching attribute |
2495 | * @class_dev: class device struct | 2495 | * @dev: device struct |
2496 | * @buf: buffer | 2496 | * @buf: buffer |
2497 | * | 2497 | * |
2498 | * Return value: | 2498 | * Return value: |
2499 | * number of bytes printed to buffer | 2499 | * number of bytes printed to buffer |
2500 | **/ | 2500 | **/ |
2501 | static ssize_t ipr_show_write_caching(struct class_device *class_dev, char *buf) | 2501 | static ssize_t ipr_show_write_caching(struct device *dev, |
2502 | struct device_attribute *attr, char *buf) | ||
2502 | { | 2503 | { |
2503 | struct Scsi_Host *shost = class_to_shost(class_dev); | 2504 | struct Scsi_Host *shost = class_to_shost(dev); |
2504 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2505 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2505 | unsigned long lock_flags = 0; | 2506 | unsigned long lock_flags = 0; |
2506 | int i, len = 0; | 2507 | int i, len = 0; |
@@ -2519,19 +2520,20 @@ static ssize_t ipr_show_write_caching(struct class_device *class_dev, char *buf) | |||
2519 | 2520 | ||
2520 | /** | 2521 | /** |
2521 | * ipr_store_write_caching - Enable/disable adapter write cache | 2522 | * ipr_store_write_caching - Enable/disable adapter write cache |
2522 | * @class_dev: class_device struct | 2523 | * @dev: device struct |
2523 | * @buf: buffer | 2524 | * @buf: buffer |
2524 | * @count: buffer size | 2525 | * @count: buffer size |
2525 | * | 2526 | * |
2526 | * This function will enable/disable adapter write cache. | 2527 | * This function will enable/disable adapter write cache. |
2527 | * | 2528 | * |
2528 | * Return value: | 2529 | * Return value: |
2529 | * count on success / other on failure | 2530 | * count on success / other on failure |
2530 | **/ | 2531 | **/ |
2531 | static ssize_t ipr_store_write_caching(struct class_device *class_dev, | 2532 | static ssize_t ipr_store_write_caching(struct device *dev, |
2532 | const char *buf, size_t count) | 2533 | struct device_attribute *attr, |
2534 | const char *buf, size_t count) | ||
2533 | { | 2535 | { |
2534 | struct Scsi_Host *shost = class_to_shost(class_dev); | 2536 | struct Scsi_Host *shost = class_to_shost(dev); |
2535 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2537 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2536 | unsigned long lock_flags = 0; | 2538 | unsigned long lock_flags = 0; |
2537 | enum ipr_cache_state new_state = CACHE_INVALID; | 2539 | enum ipr_cache_state new_state = CACHE_INVALID; |
@@ -2569,7 +2571,7 @@ static ssize_t ipr_store_write_caching(struct class_device *class_dev, | |||
2569 | return count; | 2571 | return count; |
2570 | } | 2572 | } |
2571 | 2573 | ||
2572 | static struct class_device_attribute ipr_ioa_cache_attr = { | 2574 | static struct device_attribute ipr_ioa_cache_attr = { |
2573 | .attr = { | 2575 | .attr = { |
2574 | .name = "write_cache", | 2576 | .name = "write_cache", |
2575 | .mode = S_IRUGO | S_IWUSR, | 2577 | .mode = S_IRUGO | S_IWUSR, |
@@ -2580,15 +2582,16 @@ static struct class_device_attribute ipr_ioa_cache_attr = { | |||
2580 | 2582 | ||
2581 | /** | 2583 | /** |
2582 | * ipr_show_fw_version - Show the firmware version | 2584 | * ipr_show_fw_version - Show the firmware version |
2583 | * @class_dev: class device struct | 2585 | * @dev: class device struct |
2584 | * @buf: buffer | 2586 | * @buf: buffer |
2585 | * | 2587 | * |
2586 | * Return value: | 2588 | * Return value: |
2587 | * number of bytes printed to buffer | 2589 | * number of bytes printed to buffer |
2588 | **/ | 2590 | **/ |
2589 | static ssize_t ipr_show_fw_version(struct class_device *class_dev, char *buf) | 2591 | static ssize_t ipr_show_fw_version(struct device *dev, |
2592 | struct device_attribute *attr, char *buf) | ||
2590 | { | 2593 | { |
2591 | struct Scsi_Host *shost = class_to_shost(class_dev); | 2594 | struct Scsi_Host *shost = class_to_shost(dev); |
2592 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2595 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2593 | struct ipr_inquiry_page3 *ucode_vpd = &ioa_cfg->vpd_cbs->page3_data; | 2596 | struct ipr_inquiry_page3 *ucode_vpd = &ioa_cfg->vpd_cbs->page3_data; |
2594 | unsigned long lock_flags = 0; | 2597 | unsigned long lock_flags = 0; |
@@ -2603,7 +2606,7 @@ static ssize_t ipr_show_fw_version(struct class_device *class_dev, char *buf) | |||
2603 | return len; | 2606 | return len; |
2604 | } | 2607 | } |
2605 | 2608 | ||
2606 | static struct class_device_attribute ipr_fw_version_attr = { | 2609 | static struct device_attribute ipr_fw_version_attr = { |
2607 | .attr = { | 2610 | .attr = { |
2608 | .name = "fw_version", | 2611 | .name = "fw_version", |
2609 | .mode = S_IRUGO, | 2612 | .mode = S_IRUGO, |
@@ -2613,15 +2616,16 @@ static struct class_device_attribute ipr_fw_version_attr = { | |||
2613 | 2616 | ||
2614 | /** | 2617 | /** |
2615 | * ipr_show_log_level - Show the adapter's error logging level | 2618 | * ipr_show_log_level - Show the adapter's error logging level |
2616 | * @class_dev: class device struct | 2619 | * @dev: class device struct |
2617 | * @buf: buffer | 2620 | * @buf: buffer |
2618 | * | 2621 | * |
2619 | * Return value: | 2622 | * Return value: |
2620 | * number of bytes printed to buffer | 2623 | * number of bytes printed to buffer |
2621 | **/ | 2624 | **/ |
2622 | static ssize_t ipr_show_log_level(struct class_device *class_dev, char *buf) | 2625 | static ssize_t ipr_show_log_level(struct device *dev, |
2626 | struct device_attribute *attr, char *buf) | ||
2623 | { | 2627 | { |
2624 | struct Scsi_Host *shost = class_to_shost(class_dev); | 2628 | struct Scsi_Host *shost = class_to_shost(dev); |
2625 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2629 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2626 | unsigned long lock_flags = 0; | 2630 | unsigned long lock_flags = 0; |
2627 | int len; | 2631 | int len; |
@@ -2634,16 +2638,17 @@ static ssize_t ipr_show_log_level(struct class_device *class_dev, char *buf) | |||
2634 | 2638 | ||
2635 | /** | 2639 | /** |
2636 | * ipr_store_log_level - Change the adapter's error logging level | 2640 | * ipr_store_log_level - Change the adapter's error logging level |
2637 | * @class_dev: class device struct | 2641 | * @dev: class device struct |
2638 | * @buf: buffer | 2642 | * @buf: buffer |
2639 | * | 2643 | * |
2640 | * Return value: | 2644 | * Return value: |
2641 | * number of bytes printed to buffer | 2645 | * number of bytes printed to buffer |
2642 | **/ | 2646 | **/ |
2643 | static ssize_t ipr_store_log_level(struct class_device *class_dev, | 2647 | static ssize_t ipr_store_log_level(struct device *dev, |
2648 | struct device_attribute *attr, | ||
2644 | const char *buf, size_t count) | 2649 | const char *buf, size_t count) |
2645 | { | 2650 | { |
2646 | struct Scsi_Host *shost = class_to_shost(class_dev); | 2651 | struct Scsi_Host *shost = class_to_shost(dev); |
2647 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2652 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2648 | unsigned long lock_flags = 0; | 2653 | unsigned long lock_flags = 0; |
2649 | 2654 | ||
@@ -2653,7 +2658,7 @@ static ssize_t ipr_store_log_level(struct class_device *class_dev, | |||
2653 | return strlen(buf); | 2658 | return strlen(buf); |
2654 | } | 2659 | } |
2655 | 2660 | ||
2656 | static struct class_device_attribute ipr_log_level_attr = { | 2661 | static struct device_attribute ipr_log_level_attr = { |
2657 | .attr = { | 2662 | .attr = { |
2658 | .name = "log_level", | 2663 | .name = "log_level", |
2659 | .mode = S_IRUGO | S_IWUSR, | 2664 | .mode = S_IRUGO | S_IWUSR, |
@@ -2664,9 +2669,9 @@ static struct class_device_attribute ipr_log_level_attr = { | |||
2664 | 2669 | ||
2665 | /** | 2670 | /** |
2666 | * ipr_store_diagnostics - IOA Diagnostics interface | 2671 | * ipr_store_diagnostics - IOA Diagnostics interface |
2667 | * @class_dev: class_device struct | 2672 | * @dev: device struct |
2668 | * @buf: buffer | 2673 | * @buf: buffer |
2669 | * @count: buffer size | 2674 | * @count: buffer size |
2670 | * | 2675 | * |
2671 | * This function will reset the adapter and wait a reasonable | 2676 | * This function will reset the adapter and wait a reasonable |
2672 | * amount of time for any errors that the adapter might log. | 2677 | * amount of time for any errors that the adapter might log. |
@@ -2674,10 +2679,11 @@ static struct class_device_attribute ipr_log_level_attr = { | |||
2674 | * Return value: | 2679 | * Return value: |
2675 | * count on success / other on failure | 2680 | * count on success / other on failure |
2676 | **/ | 2681 | **/ |
2677 | static ssize_t ipr_store_diagnostics(struct class_device *class_dev, | 2682 | static ssize_t ipr_store_diagnostics(struct device *dev, |
2683 | struct device_attribute *attr, | ||
2678 | const char *buf, size_t count) | 2684 | const char *buf, size_t count) |
2679 | { | 2685 | { |
2680 | struct Scsi_Host *shost = class_to_shost(class_dev); | 2686 | struct Scsi_Host *shost = class_to_shost(dev); |
2681 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2687 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2682 | unsigned long lock_flags = 0; | 2688 | unsigned long lock_flags = 0; |
2683 | int rc = count; | 2689 | int rc = count; |
@@ -2714,7 +2720,7 @@ static ssize_t ipr_store_diagnostics(struct class_device *class_dev, | |||
2714 | return rc; | 2720 | return rc; |
2715 | } | 2721 | } |
2716 | 2722 | ||
2717 | static struct class_device_attribute ipr_diagnostics_attr = { | 2723 | static struct device_attribute ipr_diagnostics_attr = { |
2718 | .attr = { | 2724 | .attr = { |
2719 | .name = "run_diagnostics", | 2725 | .name = "run_diagnostics", |
2720 | .mode = S_IWUSR, | 2726 | .mode = S_IWUSR, |
@@ -2724,15 +2730,16 @@ static struct class_device_attribute ipr_diagnostics_attr = { | |||
2724 | 2730 | ||
2725 | /** | 2731 | /** |
2726 | * ipr_show_adapter_state - Show the adapter's state | 2732 | * ipr_show_adapter_state - Show the adapter's state |
2727 | * @class_dev: class device struct | 2733 | * @class_dev: device struct |
2728 | * @buf: buffer | 2734 | * @buf: buffer |
2729 | * | 2735 | * |
2730 | * Return value: | 2736 | * Return value: |
2731 | * number of bytes printed to buffer | 2737 | * number of bytes printed to buffer |
2732 | **/ | 2738 | **/ |
2733 | static ssize_t ipr_show_adapter_state(struct class_device *class_dev, char *buf) | 2739 | static ssize_t ipr_show_adapter_state(struct device *dev, |
2740 | struct device_attribute *attr, char *buf) | ||
2734 | { | 2741 | { |
2735 | struct Scsi_Host *shost = class_to_shost(class_dev); | 2742 | struct Scsi_Host *shost = class_to_shost(dev); |
2736 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2743 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2737 | unsigned long lock_flags = 0; | 2744 | unsigned long lock_flags = 0; |
2738 | int len; | 2745 | int len; |
@@ -2748,19 +2755,20 @@ static ssize_t ipr_show_adapter_state(struct class_device *class_dev, char *buf) | |||
2748 | 2755 | ||
2749 | /** | 2756 | /** |
2750 | * ipr_store_adapter_state - Change adapter state | 2757 | * ipr_store_adapter_state - Change adapter state |
2751 | * @class_dev: class_device struct | 2758 | * @dev: device struct |
2752 | * @buf: buffer | 2759 | * @buf: buffer |
2753 | * @count: buffer size | 2760 | * @count: buffer size |
2754 | * | 2761 | * |
2755 | * This function will change the adapter's state. | 2762 | * This function will change the adapter's state. |
2756 | * | 2763 | * |
2757 | * Return value: | 2764 | * Return value: |
2758 | * count on success / other on failure | 2765 | * count on success / other on failure |
2759 | **/ | 2766 | **/ |
2760 | static ssize_t ipr_store_adapter_state(struct class_device *class_dev, | 2767 | static ssize_t ipr_store_adapter_state(struct device *dev, |
2768 | struct device_attribute *attr, | ||
2761 | const char *buf, size_t count) | 2769 | const char *buf, size_t count) |
2762 | { | 2770 | { |
2763 | struct Scsi_Host *shost = class_to_shost(class_dev); | 2771 | struct Scsi_Host *shost = class_to_shost(dev); |
2764 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2772 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2765 | unsigned long lock_flags; | 2773 | unsigned long lock_flags; |
2766 | int result = count; | 2774 | int result = count; |
@@ -2781,7 +2789,7 @@ static ssize_t ipr_store_adapter_state(struct class_device *class_dev, | |||
2781 | return result; | 2789 | return result; |
2782 | } | 2790 | } |
2783 | 2791 | ||
2784 | static struct class_device_attribute ipr_ioa_state_attr = { | 2792 | static struct device_attribute ipr_ioa_state_attr = { |
2785 | .attr = { | 2793 | .attr = { |
2786 | .name = "state", | 2794 | .name = "state", |
2787 | .mode = S_IRUGO | S_IWUSR, | 2795 | .mode = S_IRUGO | S_IWUSR, |
@@ -2792,19 +2800,20 @@ static struct class_device_attribute ipr_ioa_state_attr = { | |||
2792 | 2800 | ||
2793 | /** | 2801 | /** |
2794 | * ipr_store_reset_adapter - Reset the adapter | 2802 | * ipr_store_reset_adapter - Reset the adapter |
2795 | * @class_dev: class_device struct | 2803 | * @dev: device struct |
2796 | * @buf: buffer | 2804 | * @buf: buffer |
2797 | * @count: buffer size | 2805 | * @count: buffer size |
2798 | * | 2806 | * |
2799 | * This function will reset the adapter. | 2807 | * This function will reset the adapter. |
2800 | * | 2808 | * |
2801 | * Return value: | 2809 | * Return value: |
2802 | * count on success / other on failure | 2810 | * count on success / other on failure |
2803 | **/ | 2811 | **/ |
2804 | static ssize_t ipr_store_reset_adapter(struct class_device *class_dev, | 2812 | static ssize_t ipr_store_reset_adapter(struct device *dev, |
2813 | struct device_attribute *attr, | ||
2805 | const char *buf, size_t count) | 2814 | const char *buf, size_t count) |
2806 | { | 2815 | { |
2807 | struct Scsi_Host *shost = class_to_shost(class_dev); | 2816 | struct Scsi_Host *shost = class_to_shost(dev); |
2808 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 2817 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
2809 | unsigned long lock_flags; | 2818 | unsigned long lock_flags; |
2810 | int result = count; | 2819 | int result = count; |
@@ -2821,7 +2830,7 @@ static ssize_t ipr_store_reset_adapter(struct class_device *class_dev, | |||
2821 | return result; | 2830 | return result; |
2822 | } | 2831 | } |
2823 | 2832 | ||
2824 | static struct class_device_attribute ipr_ioa_reset_attr = { | 2833 | static struct device_attribute ipr_ioa_reset_attr = { |
2825 | .attr = { | 2834 | .attr = { |
2826 | .name = "reset_host", | 2835 | .name = "reset_host", |
2827 | .mode = S_IWUSR, | 2836 | .mode = S_IWUSR, |
@@ -3054,19 +3063,20 @@ static int ipr_update_ioa_ucode(struct ipr_ioa_cfg *ioa_cfg, | |||
3054 | 3063 | ||
3055 | /** | 3064 | /** |
3056 | * ipr_store_update_fw - Update the firmware on the adapter | 3065 | * ipr_store_update_fw - Update the firmware on the adapter |
3057 | * @class_dev: class_device struct | 3066 | * @class_dev: device struct |
3058 | * @buf: buffer | 3067 | * @buf: buffer |
3059 | * @count: buffer size | 3068 | * @count: buffer size |
3060 | * | 3069 | * |
3061 | * This function will update the firmware on the adapter. | 3070 | * This function will update the firmware on the adapter. |
3062 | * | 3071 | * |
3063 | * Return value: | 3072 | * Return value: |
3064 | * count on success / other on failure | 3073 | * count on success / other on failure |
3065 | **/ | 3074 | **/ |
3066 | static ssize_t ipr_store_update_fw(struct class_device *class_dev, | 3075 | static ssize_t ipr_store_update_fw(struct device *dev, |
3067 | const char *buf, size_t count) | 3076 | struct device_attribute *attr, |
3077 | const char *buf, size_t count) | ||
3068 | { | 3078 | { |
3069 | struct Scsi_Host *shost = class_to_shost(class_dev); | 3079 | struct Scsi_Host *shost = class_to_shost(dev); |
3070 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 3080 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
3071 | struct ipr_ucode_image_header *image_hdr; | 3081 | struct ipr_ucode_image_header *image_hdr; |
3072 | const struct firmware *fw_entry; | 3082 | const struct firmware *fw_entry; |
@@ -3124,7 +3134,7 @@ out: | |||
3124 | return result; | 3134 | return result; |
3125 | } | 3135 | } |
3126 | 3136 | ||
3127 | static struct class_device_attribute ipr_update_fw_attr = { | 3137 | static struct device_attribute ipr_update_fw_attr = { |
3128 | .attr = { | 3138 | .attr = { |
3129 | .name = "update_fw", | 3139 | .name = "update_fw", |
3130 | .mode = S_IWUSR, | 3140 | .mode = S_IWUSR, |
@@ -3132,7 +3142,7 @@ static struct class_device_attribute ipr_update_fw_attr = { | |||
3132 | .store = ipr_store_update_fw | 3142 | .store = ipr_store_update_fw |
3133 | }; | 3143 | }; |
3134 | 3144 | ||
3135 | static struct class_device_attribute *ipr_ioa_attrs[] = { | 3145 | static struct device_attribute *ipr_ioa_attrs[] = { |
3136 | &ipr_fw_version_attr, | 3146 | &ipr_fw_version_attr, |
3137 | &ipr_log_level_attr, | 3147 | &ipr_log_level_attr, |
3138 | &ipr_diagnostics_attr, | 3148 | &ipr_diagnostics_attr, |
@@ -3159,7 +3169,7 @@ static ssize_t ipr_read_dump(struct kobject *kobj, | |||
3159 | struct bin_attribute *bin_attr, | 3169 | struct bin_attribute *bin_attr, |
3160 | char *buf, loff_t off, size_t count) | 3170 | char *buf, loff_t off, size_t count) |
3161 | { | 3171 | { |
3162 | struct class_device *cdev = container_of(kobj,struct class_device,kobj); | 3172 | struct device *cdev = container_of(kobj, struct device, kobj); |
3163 | struct Scsi_Host *shost = class_to_shost(cdev); | 3173 | struct Scsi_Host *shost = class_to_shost(cdev); |
3164 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 3174 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
3165 | struct ipr_dump *dump; | 3175 | struct ipr_dump *dump; |
@@ -3322,7 +3332,7 @@ static ssize_t ipr_write_dump(struct kobject *kobj, | |||
3322 | struct bin_attribute *bin_attr, | 3332 | struct bin_attribute *bin_attr, |
3323 | char *buf, loff_t off, size_t count) | 3333 | char *buf, loff_t off, size_t count) |
3324 | { | 3334 | { |
3325 | struct class_device *cdev = container_of(kobj,struct class_device,kobj); | 3335 | struct device *cdev = container_of(kobj, struct device, kobj); |
3326 | struct Scsi_Host *shost = class_to_shost(cdev); | 3336 | struct Scsi_Host *shost = class_to_shost(cdev); |
3327 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; | 3337 | struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata; |
3328 | int rc; | 3338 | int rc; |
@@ -7671,9 +7681,9 @@ static void ipr_remove(struct pci_dev *pdev) | |||
7671 | 7681 | ||
7672 | ENTER; | 7682 | ENTER; |
7673 | 7683 | ||
7674 | ipr_remove_trace_file(&ioa_cfg->host->shost_classdev.kobj, | 7684 | ipr_remove_trace_file(&ioa_cfg->host->shost_dev.kobj, |
7675 | &ipr_trace_attr); | 7685 | &ipr_trace_attr); |
7676 | ipr_remove_dump_file(&ioa_cfg->host->shost_classdev.kobj, | 7686 | ipr_remove_dump_file(&ioa_cfg->host->shost_dev.kobj, |
7677 | &ipr_dump_attr); | 7687 | &ipr_dump_attr); |
7678 | scsi_remove_host(ioa_cfg->host); | 7688 | scsi_remove_host(ioa_cfg->host); |
7679 | 7689 | ||
@@ -7714,7 +7724,7 @@ static int __devinit ipr_probe(struct pci_dev *pdev, | |||
7714 | return rc; | 7724 | return rc; |
7715 | } | 7725 | } |
7716 | 7726 | ||
7717 | rc = ipr_create_trace_file(&ioa_cfg->host->shost_classdev.kobj, | 7727 | rc = ipr_create_trace_file(&ioa_cfg->host->shost_dev.kobj, |
7718 | &ipr_trace_attr); | 7728 | &ipr_trace_attr); |
7719 | 7729 | ||
7720 | if (rc) { | 7730 | if (rc) { |
@@ -7723,11 +7733,11 @@ static int __devinit ipr_probe(struct pci_dev *pdev, | |||
7723 | return rc; | 7733 | return rc; |
7724 | } | 7734 | } |
7725 | 7735 | ||
7726 | rc = ipr_create_dump_file(&ioa_cfg->host->shost_classdev.kobj, | 7736 | rc = ipr_create_dump_file(&ioa_cfg->host->shost_dev.kobj, |
7727 | &ipr_dump_attr); | 7737 | &ipr_dump_attr); |
7728 | 7738 | ||
7729 | if (rc) { | 7739 | if (rc) { |
7730 | ipr_remove_trace_file(&ioa_cfg->host->shost_classdev.kobj, | 7740 | ipr_remove_trace_file(&ioa_cfg->host->shost_dev.kobj, |
7731 | &ipr_trace_attr); | 7741 | &ipr_trace_attr); |
7732 | scsi_remove_host(ioa_cfg->host); | 7742 | scsi_remove_host(ioa_cfg->host); |
7733 | __ipr_remove(pdev); | 7743 | __ipr_remove(pdev); |