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:
"Four minor fixes: three in drivers and one in the core.

The core one allows an additional state change that fixes a regression
introduced by an update to the aacraid driver in the previous merge
window"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
scsi: target/iblock: fix WRITE SAME zeroing
scsi: qla2xxx: check UNLOADING before posting async work
scsi: qla2xxx: set UNLOADING before waiting for session deletion
scsi: core: Allow the state change from SDEV_QUIESCE to SDEV_BLOCK

+19 -19
+17 -18
drivers/scsi/qla2xxx/qla_os.c
··· 3732 3732 } 3733 3733 qla2x00_wait_for_hba_ready(base_vha); 3734 3734 3735 + /* 3736 + * if UNLOADING flag is already set, then continue unload, 3737 + * where it was set first. 3738 + */ 3739 + if (test_and_set_bit(UNLOADING, &base_vha->dpc_flags)) 3740 + return; 3741 + 3735 3742 if (IS_QLA25XX(ha) || IS_QLA2031(ha) || IS_QLA27XX(ha) || 3736 3743 IS_QLA28XX(ha)) { 3737 3744 if (ha->flags.fw_started) ··· 3756 3749 } 3757 3750 3758 3751 qla2x00_wait_for_sess_deletion(base_vha); 3759 - 3760 - /* 3761 - * if UNLOAD flag is already set, then continue unload, 3762 - * where it was set first. 3763 - */ 3764 - if (test_bit(UNLOADING, &base_vha->dpc_flags)) 3765 - return; 3766 - 3767 - set_bit(UNLOADING, &base_vha->dpc_flags); 3768 3752 3769 3753 qla_nvme_delete(base_vha); 3770 3754 ··· 4861 4863 { 4862 4864 struct qla_work_evt *e; 4863 4865 uint8_t bail; 4866 + 4867 + if (test_bit(UNLOADING, &vha->dpc_flags)) 4868 + return NULL; 4864 4869 4865 4870 QLA_VHA_MARK_BUSY(vha, bail); 4866 4871 if (bail) ··· 6629 6628 struct pci_dev *pdev = ha->pdev; 6630 6629 scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev); 6631 6630 6632 - /* 6633 - * if UNLOAD flag is already set, then continue unload, 6634 - * where it was set first. 6635 - */ 6636 - if (test_bit(UNLOADING, &base_vha->dpc_flags)) 6637 - return; 6638 - 6639 6631 ql_log(ql_log_warn, base_vha, 0x015b, 6640 6632 "Disabling adapter.\n"); 6641 6633 ··· 6639 6645 return; 6640 6646 } 6641 6647 6642 - qla2x00_wait_for_sess_deletion(base_vha); 6648 + /* 6649 + * if UNLOADING flag is already set, then continue unload, 6650 + * where it was set first. 6651 + */ 6652 + if (test_and_set_bit(UNLOADING, &base_vha->dpc_flags)) 6653 + return; 6643 6654 6644 - set_bit(UNLOADING, &base_vha->dpc_flags); 6655 + qla2x00_wait_for_sess_deletion(base_vha); 6645 6656 6646 6657 qla2x00_delete_all_vps(ha, base_vha); 6647 6658
+1
drivers/scsi/scsi_lib.c
··· 2284 2284 switch (oldstate) { 2285 2285 case SDEV_RUNNING: 2286 2286 case SDEV_CREATED_BLOCK: 2287 + case SDEV_QUIESCE: 2287 2288 case SDEV_OFFLINE: 2288 2289 break; 2289 2290 default:
+1 -1
drivers/target/target_core_iblock.c
··· 432 432 target_to_linux_sector(dev, cmd->t_task_lba), 433 433 target_to_linux_sector(dev, 434 434 sbc_get_write_same_sectors(cmd)), 435 - GFP_KERNEL, false); 435 + GFP_KERNEL, BLKDEV_ZERO_NOUNMAP); 436 436 if (ret) 437 437 return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; 438 438