Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+28 -19
+1 -1
drivers/scsi/fnic/fnic.h
··· 38 38 39 39 #define DRV_NAME "fnic" 40 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 42 #define PFX DRV_NAME ": " 43 43 #define DFX DRV_NAME "%d: " 44 44
+9 -13
drivers/scsi/fnic/fnic_main.c
··· 642 642 INIT_WORK(&fnic->fip_frame_work, fnic_handle_fip_frame); 643 643 INIT_WORK(&fnic->event_work, fnic_handle_event); 644 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 645 INIT_LIST_HEAD(&fnic->evlist); 659 646 INIT_LIST_HEAD(&fnic->vlans); 660 647 } else { ··· 947 960 spin_lock_init(&fnic_list_lock); 948 961 INIT_LIST_HEAD(&fnic_list); 949 962 963 + fnic_fip_queue = create_singlethread_workqueue("fnic_fip_q"); 964 + if (!fnic_fip_queue) { 965 + printk(KERN_ERR PFX "fnic FIP work queue create failed\n"); 966 + err = -ENOMEM; 967 + goto err_create_fip_workq; 968 + } 969 + 950 970 fnic_fc_transport = fc_attach_transport(&fnic_fc_functions); 951 971 if (!fnic_fc_transport) { 952 972 printk(KERN_ERR PFX "fc_attach_transport error\n"); ··· 972 978 err_pci_register: 973 979 fc_release_transport(fnic_fc_transport); 974 980 err_fc_transport: 981 + destroy_workqueue(fnic_fip_queue); 982 + err_create_fip_workq: 975 983 destroy_workqueue(fnic_event_queue); 976 984 err_create_fnic_workq: 977 985 kmem_cache_destroy(fnic_io_req_cache);
+15 -5
drivers/scsi/megaraid/megaraid_sas_base.c
··· 3547 3547 break; 3548 3548 } 3549 3549 3550 - /* 3551 - * We expect the FW state to be READY 3552 - */ 3553 - if (megasas_transition_to_ready(instance, 0)) 3554 - goto fail_ready_state; 3550 + if (megasas_transition_to_ready(instance, 0)) { 3551 + atomic_set(&instance->fw_reset_no_pci_access, 1); 3552 + instance->instancet->adp_reset 3553 + (instance, instance->reg_set); 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 3567 * MSI-X host index 0 is common for all adapter.
+3
drivers/scsi/scsi.c
··· 1031 1031 { 1032 1032 int i, result; 1033 1033 1034 + if (sdev->skip_vpd_pages) 1035 + goto fail; 1036 + 1034 1037 /* Ask for all the pages supported by this device */ 1035 1038 result = scsi_vpd_inquiry(sdev, buf, 0, buf_len); 1036 1039 if (result)