History

Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley: "This is three bug fixes: An fnic warning caused by sleeping under a lock, a major regression with our updated WRITE SAME/UNMAP logic which caused tons of USB devices (and one RAID card) to cease to function and a megaraid_sas firmware initialisation problem which causes kdump failures" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: [SCSI] Don't attempt to send extended INQUIRY command if skip_vpd_pages is set [SCSI] fnic: BUG: sleeping function called from invalid context during probe [SCSI] megaraid_sas: megaraid_sas driver init fails in kdump kernel

Linus Torvalds committed 13 years ago

Commit e5d081f2 parents 77f63b4 75625234 files · +28 −19Browse files

Unified · Split

4 files
  1. drivers/scsi/fnic/fnic.h +1 −1
  2. drivers/scsi/fnic/fnic_main.c +9 −13
  3. drivers/scsi/megaraid/megaraid_sas_base.c +15 −5
  4. drivers/scsi/scsi.c +3 −0
drivers/scsi/fnic/fnic.h+1−1
@@ -38,7 +38,7 @@ · 37 unmodified lines
38 38
39#define DRV_NAME "fnic"39#define DRV_NAME "fnic"
40#define DRV_DESCRIPTION "Cisco FCoE HBA Driver"40#define DRV_DESCRIPTION "Cisco FCoE HBA Driver"
41#define DRV_VERSION "1.5.0.22"41#define DRV_VERSION "1.5.0.23"
42#define PFX DRV_NAME ": "42#define PFX DRV_NAME ": "
43#define DFX DRV_NAME "%d: "43#define DFX DRV_NAME "%d: "
44 44
drivers/scsi/fnic/fnic_main.c+9−13
@@ -642,19 +642,6 @@ static int fnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) · 641 unmodified lines
642 INIT_WORK(&fnic->fip_frame_work, fnic_handle_fip_frame);642 INIT_WORK(&fnic->fip_frame_work, fnic_handle_fip_frame);
643 INIT_WORK(&fnic->event_work, fnic_handle_event);643 INIT_WORK(&fnic->event_work, fnic_handle_event);
644 skb_queue_head_init(&fnic->fip_frame_queue);644 skb_queue_head_init(&fnic->fip_frame_queue);
645 spin_lock_irqsave(&fnic_list_lock, flags);
646 if (!fnic_fip_queue) {
647 fnic_fip_queue =
648 create_singlethread_workqueue("fnic_fip_q");
649 if (!fnic_fip_queue) {
650 spin_unlock_irqrestore(&fnic_list_lock, flags);
651 printk(KERN_ERR PFX "fnic FIP work queue "
652 "create failed\n");
653 err = -ENOMEM;
654 goto err_out_free_max_pool;
655 }
656 }
657 spin_unlock_irqrestore(&fnic_list_lock, flags);
658 INIT_LIST_HEAD(&fnic->evlist);645 INIT_LIST_HEAD(&fnic->evlist);
659 INIT_LIST_HEAD(&fnic->vlans);646 INIT_LIST_HEAD(&fnic->vlans);
660 } else {647 } else {
@@ -960,6 +947,13 @@ static int __init fnic_init_module(void) · 299 unmodified lines
960 spin_lock_init(&fnic_list_lock);947 spin_lock_init(&fnic_list_lock);
961 INIT_LIST_HEAD(&fnic_list);948 INIT_LIST_HEAD(&fnic_list);
962 949
950 fnic_fip_queue = create_singlethread_workqueue("fnic_fip_q");
951 if (!fnic_fip_queue) {
952 printk(KERN_ERR PFX "fnic FIP work queue create failed\n");
953 err = -ENOMEM;
954 goto err_create_fip_workq;
955 }
956
963 fnic_fc_transport = fc_attach_transport(&fnic_fc_functions);957 fnic_fc_transport = fc_attach_transport(&fnic_fc_functions);
964 if (!fnic_fc_transport) {958 if (!fnic_fc_transport) {
965 printk(KERN_ERR PFX "fc_attach_transport error\n");959 printk(KERN_ERR PFX "fc_attach_transport error\n");
@@ -978,6 +972,8 @@ static int __init fnic_init_module(void) · 12 unmodified lines
978err_pci_register:972err_pci_register:
979 fc_release_transport(fnic_fc_transport);973 fc_release_transport(fnic_fc_transport);
980err_fc_transport:974err_fc_transport:
975 destroy_workqueue(fnic_fip_queue);
976err_create_fip_workq:
981 destroy_workqueue(fnic_event_queue);977 destroy_workqueue(fnic_event_queue);
982err_create_fnic_workq:978err_create_fnic_workq:
983 kmem_cache_destroy(fnic_io_req_cache);979 kmem_cache_destroy(fnic_io_req_cache);
drivers/scsi/megaraid/megaraid_sas_base.c+15−5
@@ -3547,11 +3547,21 @@ static int megasas_init_fw(struct megasas_instance *instance) · 3546 unmodified lines
3547 break;3547 break;
3548 }3548 }
3549 3549
3550 /*3550 if (megasas_transition_to_ready(instance, 0)) {
3551 * We expect the FW state to be READY3551 atomic_set(&instance->fw_reset_no_pci_access, 1);
3552 */3552 instance->instancet->adp_reset
3553 if (megasas_transition_to_ready(instance, 0))3553 (instance, instance->reg_set);
3554 goto fail_ready_state;3554 atomic_set(&instance->fw_reset_no_pci_access, 0);
3555 dev_info(&instance->pdev->dev,
3556 "megasas: FW restarted successfully from %s!\n",
3557 __func__);
3558
3559 /*waitting for about 30 second before retry*/
3560 ssleep(30);
3561
3562 if (megasas_transition_to_ready(instance, 0))
3563 goto fail_ready_state;
3564 }
3555 3565
3556 /*3566 /*
3557 * MSI-X host index 0 is common for all adapter.3567 * MSI-X host index 0 is common for all adapter.
drivers/scsi/scsi.c+3−0
@@ -1031,6 +1031,9 @@ int scsi_get_vpd_page(struct scsi_device *sdev, u8 page, unsigned char *buf, · 1030 unmodified lines
1031{1031{
1032 int i, result;1032 int i, result;
1033 1033
1034 if (sdev->skip_vpd_pages)
1035 goto fail;
1036
1034 /* Ask for all the pages supported by this device */1037 /* Ask for all the pages supported by this device */
1035 result = scsi_vpd_inquiry(sdev, buf, 0, buf_len);1038 result = scsi_vpd_inquiry(sdev, buf, 0, buf_len);
1036 if (result)1039 if (result)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t