Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI updates from James Bottomley: "This is mostly update of the usual drivers: arcmsr, qla2xxx, lpfc, hisi_sas, target/iscsi and target/core. Additionally Christoph refactored gdth as part of the dma changes. The major mid-layer change this time is the removal of bidi commands and with them the whole of the osd/exofs driver and filesystem. This is a major simplification for block and mq in particular" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (240 commits) scsi: cxgb4i: validate tcp sequence number only if chip version <= T5 scsi: cxgb4i: get pf number from lldi->pf scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c scsi: mpt3sas: Add missing breaks in switch statements scsi: aacraid: Fix missing break in switch statement scsi: kill command serial number scsi: csiostor: drop serial_number usage scsi: mvumi: use request tag instead of serial_number scsi: dpt_i2o: remove serial number usage scsi: st: osst: Remove negative constant left-shifts scsi: ufs-bsg: Allow reading descriptors scsi: ufs: Allow reading descriptor via raw upiu scsi: ufs-bsg: Change the calling convention for write descriptor scsi: ufs: Remove unused device quirks Revert "scsi: ufs: disable vccq if it's not needed by UFS device" scsi: megaraid_sas: Remove a bunch of set but not used variables scsi: clean obsolete return values of eh_timed_out scsi: sd: Optimal I/O size should be a multiple of physical block size scsi: MAINTAINERS: SCSI initiator and target tweaks scsi: fcoe: make use of fip_mode enum complete ...
Cette révision appartient à :
@@ -368,25 +368,19 @@ static void uas_data_cmplt(struct urb *urb)
|
||||
struct scsi_cmnd *cmnd = urb->context;
|
||||
struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
|
||||
struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
|
||||
struct scsi_data_buffer *sdb = NULL;
|
||||
struct scsi_data_buffer *sdb = &cmnd->sdb;
|
||||
unsigned long flags;
|
||||
int status = urb->status;
|
||||
|
||||
spin_lock_irqsave(&devinfo->lock, flags);
|
||||
|
||||
if (cmdinfo->data_in_urb == urb) {
|
||||
sdb = scsi_in(cmnd);
|
||||
cmdinfo->state &= ~DATA_IN_URB_INFLIGHT;
|
||||
cmdinfo->data_in_urb = NULL;
|
||||
} else if (cmdinfo->data_out_urb == urb) {
|
||||
sdb = scsi_out(cmnd);
|
||||
cmdinfo->state &= ~DATA_OUT_URB_INFLIGHT;
|
||||
cmdinfo->data_out_urb = NULL;
|
||||
}
|
||||
if (sdb == NULL) {
|
||||
WARN_ON_ONCE(1);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (devinfo->resetting)
|
||||
goto out;
|
||||
@@ -401,9 +395,9 @@ static void uas_data_cmplt(struct urb *urb)
|
||||
if (status != -ENOENT && status != -ECONNRESET && status != -ESHUTDOWN)
|
||||
uas_log_cmd_state(cmnd, "data cmplt err", status);
|
||||
/* error: no data transfered */
|
||||
sdb->resid = sdb->length;
|
||||
scsi_set_resid(cmnd, sdb->length);
|
||||
} else {
|
||||
sdb->resid = sdb->length - urb->actual_length;
|
||||
scsi_set_resid(cmnd, sdb->length - urb->actual_length);
|
||||
}
|
||||
uas_try_complete(cmnd, __func__);
|
||||
out:
|
||||
@@ -426,8 +420,7 @@ static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp,
|
||||
struct usb_device *udev = devinfo->udev;
|
||||
struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
|
||||
struct urb *urb = usb_alloc_urb(0, gfp);
|
||||
struct scsi_data_buffer *sdb = (dir == DMA_FROM_DEVICE)
|
||||
? scsi_in(cmnd) : scsi_out(cmnd);
|
||||
struct scsi_data_buffer *sdb = &cmnd->sdb;
|
||||
unsigned int pipe = (dir == DMA_FROM_DEVICE)
|
||||
? devinfo->data_in_pipe : devinfo->data_out_pipe;
|
||||
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur