17 Nov, 2017

1 commit


15 Nov, 2017

2 commits

  • Pull SCSI updates from James Bottomley:
    "This is mostly updates of the usual suspects: lpfc, qla2xxx, hisi_sas,
    megaraid_sas, pm80xx, mpt3sas, be2iscsi, hpsa. and a host of minor
    updates.

    There's no major behaviour change or additions to the core in all of
    this, so the potential for regressions should be small (biggest
    potential being in the scsi error handler changes)"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (203 commits)
    scsi: lpfc: Fix hard lock up NMI in els timeout handling.
    scsi: mpt3sas: remove a stray KERN_INFO
    scsi: mpt3sas: cleanup _scsih_pcie_enumeration_event()
    scsi: aacraid: use timespec64 instead of timeval
    scsi: scsi_transport_fc: add 64GBIT and 128GBIT port speed definitions
    scsi: qla2xxx: Suppress a kernel complaint in qla_init_base_qpair()
    scsi: mpt3sas: fix dma_addr_t casts
    scsi: be2iscsi: Use kasprintf
    scsi: storvsc: Avoid excessive host scan on controller change
    scsi: lpfc: fix kzalloc-simple.cocci warnings
    scsi: mpt3sas: Update mpt3sas driver version.
    scsi: mpt3sas: Fix sparse warnings
    scsi: mpt3sas: Fix nvme drives checking for tlr.
    scsi: mpt3sas: NVMe drive support for BTDHMAPPING ioctl command and log info
    scsi: mpt3sas: Add-Task-management-debug-info-for-NVMe-drives.
    scsi: mpt3sas: scan and add nvme device after controller reset
    scsi: mpt3sas: Set NVMe device queue depth as 128
    scsi: mpt3sas: Handle NVMe PCIe device related events generated from firmware.
    scsi: mpt3sas: API's to remove nvme drive from sml
    scsi: mpt3sas: API 's to support NVMe drive addition to SML
    ...

    Linus Torvalds
     
  • Pull core block layer updates from Jens Axboe:
    "This is the main pull request for block storage for 4.15-rc1.

    Nothing out of the ordinary in here, and no API changes or anything
    like that. Just various new features for drivers, core changes, etc.
    In particular, this pull request contains:

    - A patch series from Bart, closing the whole on blk/scsi-mq queue
    quescing.

    - A series from Christoph, building towards hidden gendisks (for
    multipath) and ability to move bio chains around.

    - NVMe
    - Support for native multipath for NVMe (Christoph).
    - Userspace notifications for AENs (Keith).
    - Command side-effects support (Keith).
    - SGL support (Chaitanya Kulkarni)
    - FC fixes and improvements (James Smart)
    - Lots of fixes and tweaks (Various)

    - bcache
    - New maintainer (Michael Lyle)
    - Writeback control improvements (Michael)
    - Various fixes (Coly, Elena, Eric, Liang, et al)

    - lightnvm updates, mostly centered around the pblk interface
    (Javier, Hans, and Rakesh).

    - Removal of unused bio/bvec kmap atomic interfaces (me, Christoph)

    - Writeback series that fix the much discussed hundreds of millions
    of sync-all units. This goes all the way, as discussed previously
    (me).

    - Fix for missing wakeup on writeback timer adjustments (Yafang
    Shao).

    - Fix laptop mode on blk-mq (me).

    - {mq,name} tupple lookup for IO schedulers, allowing us to have
    alias names. This means you can use 'deadline' on both !mq and on
    mq (where it's called mq-deadline). (me).

    - blktrace race fix, oopsing on sg load (me).

    - blk-mq optimizations (me).

    - Obscure waitqueue race fix for kyber (Omar).

    - NBD fixes (Josef).

    - Disable writeback throttling by default on bfq, like we do on cfq
    (Luca Miccio).

    - Series from Ming that enable us to treat flush requests on blk-mq
    like any other request. This is a really nice cleanup.

    - Series from Ming that improves merging on blk-mq with schedulers,
    getting us closer to flipping the switch on scsi-mq again.

    - BFQ updates (Paolo).

    - blk-mq atomic flags memory ordering fixes (Peter Z).

    - Loop cgroup support (Shaohua).

    - Lots of minor fixes from lots of different folks, both for core and
    driver code"

    * 'for-4.15/block' of git://git.kernel.dk/linux-block: (294 commits)
    nvme: fix visibility of "uuid" ns attribute
    blk-mq: fixup some comment typos and lengths
    ide: ide-atapi: fix compile error with defining macro DEBUG
    blk-mq: improve tag waiting setup for non-shared tags
    brd: remove unused brd_mutex
    blk-mq: only run the hardware queue if IO is pending
    block: avoid null pointer dereference on null disk
    fs: guard_bio_eod() needs to consider partitions
    xtensa/simdisk: fix compile error
    nvme: expose subsys attribute to sysfs
    nvme: create 'slaves' and 'holders' entries for hidden controllers
    block: create 'slaves' and 'holders' entries for hidden gendisks
    nvme: also expose the namespace identification sysfs files for mpath nodes
    nvme: implement multipath access to nvme subsystems
    nvme: track shared namespaces
    nvme: introduce a nvme_ns_ids structure
    nvme: track subsystems
    block, nvme: Introduce blk_mq_req_flags_t
    block, scsi: Make SCSI quiesce and resume work reliably
    block: Add the QUEUE_FLAG_PREEMPT_ONLY request queue flag
    ...

    Linus Torvalds
     

14 Nov, 2017

1 commit

  • Pull timer updates from Thomas Gleixner:
    "Yet another big pile of changes:

    - More year 2038 work from Arnd slowly reaching the point where we
    need to think about the syscalls themself.

    - A new timer function which allows to conditionally (re)arm a timer
    only when it's either not running or the new expiry time is sooner
    than the armed expiry time. This allows to use a single timer for
    multiple timeout requirements w/o caring about the first expiry
    time at the call site.

    - A new NMI safe accessor to clock real time for the printk timestamp
    work. Can be used by tracing, perf as well if required.

    - A large number of timer setup conversions from Kees which got
    collected here because either maintainers requested so or they
    simply got ignored. As Kees pointed out already there are a few
    trivial merge conflicts and some redundant commits which was
    unavoidable due to the size of this conversion effort.

    - Avoid a redundant iteration in the timer wheel softirq processing.

    - Provide a mechanism to treat RTC implementations depending on their
    hardware properties, i.e. don't inflict the write at the 0.5
    seconds boundary which originates from the PC CMOS RTC to all RTCs.
    No functional change as drivers need to be updated separately.

    - The usual small updates to core code clocksource drivers. Nothing
    really exciting"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (111 commits)
    timers: Add a function to start/reduce a timer
    pstore: Use ktime_get_real_fast_ns() instead of __getnstimeofday()
    timer: Prepare to change all DEFINE_TIMER() callbacks
    netfilter: ipvs: Convert timers to use timer_setup()
    scsi: qla2xxx: Convert timers to use timer_setup()
    block/aoe: discover_timer: Convert timers to use timer_setup()
    ide: Convert timers to use timer_setup()
    drbd: Convert timers to use timer_setup()
    mailbox: Convert timers to use timer_setup()
    crypto: Convert timers to use timer_setup()
    drivers/pcmcia: omap1: Fix error in automated timer conversion
    ARM: footbridge: Fix typo in timer conversion
    drivers/sgi-xp: Convert timers to use timer_setup()
    drivers/pcmcia: Convert timers to use timer_setup()
    drivers/memstick: Convert timers to use timer_setup()
    drivers/macintosh: Convert timers to use timer_setup()
    hwrng/xgene-rng: Convert timers to use timer_setup()
    auxdisplay: Convert timers to use timer_setup()
    sparc/led: Convert timers to use timer_setup()
    mips: ip22/32: Convert timers to use timer_setup()
    ...

    Linus Torvalds
     

11 Nov, 2017

1 commit

  • The contexts from which a SCSI device can be quiesced or resumed are:
    * Writing into /sys/class/scsi_device/*/device/state.
    * SCSI parallel (SPI) domain validation.
    * The SCSI device power management methods. See also scsi_bus_pm_ops.

    It is essential during suspend and resume that neither the filesystem
    state nor the filesystem metadata in RAM changes. This is why while
    the hibernation image is being written or restored that SCSI devices
    are quiesced. The SCSI core quiesces devices through scsi_device_quiesce()
    and scsi_device_resume(). In the SDEV_QUIESCE state execution of
    non-preempt requests is deferred. This is realized by returning
    BLKPREP_DEFER from inside scsi_prep_state_check() for quiesced SCSI
    devices. Avoid that a full queue prevents power management requests
    to be submitted by deferring allocation of non-preempt requests for
    devices in the quiesced state. This patch has been tested by running
    the following commands and by verifying that after each resume the
    fio job was still running:

    for ((i=0; i sync_action
    sleep 1
    done
    ) &
    pids=($!)
    for d in /sys/class/block/sd*[a-z]; do
    bdev=${d#/sys/class/block/}
    hcil=$(readlink "$d/device")
    hcil=${hcil#../../../}
    echo 4 > "$d/queue/nr_requests"
    echo 1 > "/sys/class/scsi_device/$hcil/device/queue_depth"
    fio --name="$bdev" --filename="/dev/$bdev" --buffered=0 --bs=512 \
    --rw=randread --ioengine=libaio --numjobs=4 --iodepth=16 \
    --iodepth_batch=1 --thread --loops=$((2**31)) &
    pids+=($!)
    done
    sleep 1
    echo "$(date) Hibernating ..." >>hibernate-test-log.txt
    systemctl hibernate
    sleep 10
    kill "${pids[@]}"
    echo idle > /sys/block/md0/md/sync_action
    wait
    echo "$(date) Done." >>hibernate-test-log.txt
    done

    Reported-by: Oleksandr Natalenko
    References: "I/O hangs after resuming from suspend-to-ram" (https://marc.info/?l=linux-block&m=150340235201348).
    Signed-off-by: Bart Van Assche
    Reviewed-by: Hannes Reinecke
    Tested-by: Martin Steigerwald
    Tested-by: Oleksandr Natalenko
    Cc: Martin K. Petersen
    Cc: Ming Lei
    Cc: Christoph Hellwig
    Cc: Johannes Thumshirn
    Signed-off-by: Jens Axboe

    Bart Van Assche
     

09 Nov, 2017

1 commit


02 Nov, 2017

2 commits

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • In preparation for unconditionally passing the struct timer_list pointer to
    all timer callbacks, switch to using the new timer_setup() and from_timer()
    to pass the timer pointer explicitly. This requires adding a pointer to
    hold the timer's target task, as there isn't a link back from slow_task.

    Cc: John Garry
    Cc: "James E.J. Bottomley"
    Cc: "Martin K. Petersen"
    Cc: Jack Wang
    Cc: lindar_liu@usish.com
    Cc: Jens Axboe
    Cc: Hannes Reinecke
    Cc: Johannes Thumshirn
    Cc: Benjamin Block
    Cc: Baoyou Xie
    Cc: Wei Yongjun
    Cc: linux-scsi@vger.kernel.org
    Signed-off-by: Kees Cook
    Reviewed-by: Martin K. Petersen
    Acked-by: John Garry # for hisi_sas part
    Tested-by: John Garry # basic sanity test for hisi_sas
    Reviewed-by: Jack Wang

    Kees Cook
     

27 Oct, 2017

1 commit

  • In preparation for unconditionally passing the struct timer_list pointer to
    all timer callbacks, switch to using the new timer_setup() and from_timer()
    to pass the timer pointer explicitly.

    Cc: QLogic-Storage-Upstream@qlogic.com
    Cc: "James E.J. Bottomley"
    Cc: "Martin K. Petersen"
    Cc: Johannes Thumshirn
    Cc: linux-scsi@vger.kernel.org
    Cc: fcoe-devel@open-fcoe.org
    Signed-off-by: Kees Cook
    Acked-by: Johannes Thumshirn

    Kees Cook
     

19 Oct, 2017

1 commit

  • As per SAM there is a status precedence, with any sense code 29/XX
    taking second place just after an ACA ACTIVE status. Additionally, each
    target might prefer to not queue any unit attention conditions, but just
    report one. Due to the above, this will be that one with the highest
    precedence. This results in the sense code 29/XX effectively
    overwriting any other unit attention. Hence we should report the
    power-on reset to userland so that it can take appropriate action.

    Signed-off-by: Hannes Reinecke
    Signed-off-by: Martin K. Petersen

    Hannes Reinecke
     

17 Oct, 2017

2 commits

  • Reformat blacklist flags to make the values easier to read and to
    enhance error checking.

    Signed-off-by: Hannes Reinecke
    Reviewed-by: Bart van Assche
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: Martin K. Petersen

    Hannes Reinecke
     
  • Move standard macro definitions for the zone types and zone conditions
    to scsi_proto.h together with the definitions related to the REPORT
    ZONES command. While at it, define all values in the enums to be clear.

    Also remove unnecessary includes in sd_zbc.c.

    No functional change is introduced by this patch.

    Signed-off-by: Damien Le Moal
    Reviewed-by: Bart Van Assche
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Martin K. Petersen

    Damien Le Moal
     

03 Oct, 2017

2 commits

  • iscsi_session_teardown was the only user of this function. Function
    currently is just short for iscsi_remove_session + iscsi_free_session.

    Signed-off-by: Khazhismel Kumykov
    Acked-by: Chris Leech
    Signed-off-by: Martin K. Petersen

    Khazhismel Kumykov
     
  • SBC-4 states:

    "A MAXIMUM UNMAP LBA COUNT field set to a non-zero value indicates the
    maximum number of LBAs that may be unmapped by an UNMAP command"

    "A MAXIMUM WRITE SAME LENGTH field set to a non-zero value indicates
    the maximum number of contiguous logical blocks that the device server
    allows to be unmapped or written in a single WRITE SAME command."

    Despite the spec being clear on the topic, some devices incorrectly
    expect WRITE SAME commands with the UNMAP bit set to be limited to the
    value reported in MAXIMUM UNMAP LBA COUNT in the Block Limits VPD.

    Implement a blacklist option that can be used to accommodate devices
    with this behavior.

    Cc:
    Reported-by: Bill Kuzeja
    Reported-by: Ewan D. Milne
    Reviewed-by: Ewan D. Milne
    Tested-by: Laurence Oberman
    Signed-off-by: Martin K. Petersen

    Martin K. Petersen
     

16 Sep, 2017

3 commits

  • No one uses the port_gone_completion in struct asd_sas_port and
    DISCE_PORT_GONE in enum disover_event, clean them out.

    Signed-off-by: Jason Yan
    CC: Johannes Thumshirn
    CC: Ewan Milne
    CC: Christoph Hellwig
    CC: Tomas Henzl
    CC: Dan Williams
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Martin K. Petersen

    Jason Yan
     
  • Numbering for each event enum makes no sense. Remove the numbering so
    that we don't have to calculate the number by hand every time.

    Signed-off-by: Jason Yan
    CC: John Garry
    CC: Johannes Thumshirn
    CC: Ewan Milne
    CC: Christoph Hellwig
    CC: Tomas Henzl
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Martin K. Petersen

    Jason Yan
     
  • The ha_event now has only one event HAE_RESET, and this event does
    nothing. Kill it and do some cleanup.

    This is a preparation for enhance libsas hotplug feature in the next
    patches.

    Signed-off-by: Jason Yan
    Signed-off-by: John Garry
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    CC: Johannes Thumshirn
    CC: Ewan Milne
    CC: Christoph Hellwig
    CC: Tomas Henzl
    CC: Dan Williams
    Signed-off-by: Martin K. Petersen

    Jason Yan
     

14 Sep, 2017

1 commit


08 Sep, 2017

1 commit


05 Sep, 2017

1 commit

  • A patch I wrote myself several years ago removed SCSI target support
    from the code under drivers/scsi. That patch removed the code that sets
    uspace_req_q to a non-NULL value. Hence also remove the code that
    depends on uspace_req_q != NULL.

    References: commit 066465251303 ("tgt: removal")
    Signed-off-by: Bart Van Assche
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Johannes Thumshirn
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Martin K. Petersen

    Bart Van Assche
     

01 Sep, 2017

1 commit

  • If a pass-through request is submitted then blk_get_request()
    initializes that request by calling scsi_initialize_rq(). Also call this
    function for filesystem requests. Introduce CMD_INITIALIZED to keep
    track of whether or not a request has already been initialized.

    Signed-off-by: Bart Van Assche
    Cc: Christoph Hellwig
    Cc: Brian King
    Cc: Hannes Reinecke
    Cc: Johannes Thumshirn
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Martin K. Petersen

    Bart Van Assche
     

30 Aug, 2017

2 commits

  • Simplify the SMP passthrough code by switching it to the generic bsg-lib
    helpers that abstract away the details of the request code, and gets
    drivers out of seeing struct scsi_request.

    For the libsas host SMP code there is a small behavior difference in
    that we now always clear the residual len for successful commands,
    similar to the three other SMP handler implementations. Given that
    there is no partial command handling in the host SMP handler this should
    not matter in practice.

    [mkp: typos and checkpatch fixes]

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: Martin K. Petersen

    Christoph Hellwig
     
  • Introduce struct scsi_vpd for the VPD page length, data and the RCU head
    that will be used to free the VPD data. Use kfree_rcu() instead of
    kfree() to free VPD data. Move the VPD buffer pointer check inside the
    RCU read lock in the sysfs code. Only annotate pointers that are shared
    across threads with __rcu. Use rcu_dereference() when dereferencing an
    RCU pointer. This patch suppresses about twenty sparse complaints about
    the vpd_pg8[03] pointers. This patch also fixes a race condition, namely
    that updating of the VPD pointers and length variables in struct
    scsi_device was not atomic with reference to the code reading these
    variables. See also "Does the update code tolerate concurrent accesses?"
    in Documentation/RCU/checklist.txt.

    Fixes: commit 09e2b0b14690 ("scsi: rescan VPD attributes")
    Signed-off-by: Bart Van Assche
    Acked-by: Hannes Reinecke
    Reviewed-by: Shane Seymour
    Cc: Christoph Hellwig
    Cc: Johannes Thumshirn
    Cc: Shane Seymour
    Signed-off-by: Martin K. Petersen

    Bart Van Assche
     

26 Aug, 2017

5 commits

  • The bus reset handler is calling I_T Nexus reset, which logically is a
    target reset as it need to specify both the initiator and the target.
    So move it to target reset.

    Signed-off-by: Hannes Reinecke
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: Martin K. Petersen

    Hannes Reinecke
     
  • Avoid that the following compiler warning is reported when building
    with W=1:

    drivers/scsi/scsi_transport_srp.c:92:19: warning: comparison is always false due to limited range of data type [-Wtype-limits]

    Signed-off-by: Bart Van Assche
    Reviewed-by: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Johannes Thumshirn
    Signed-off-by: Martin K. Petersen

    Bart Van Assche
     
  • Since commit e9c787e65c0c ("scsi: allocate scsi_cmnd structures as
    part of struct request") struct request and struct scsi_cmnd are
    adjacent. This means that there is now an alternative to reading
    req->special to convert a pointer to a prepared request into a
    SCSI command pointer, namely by using blk_mq_rq_to_pdu(). Make
    this change where appropriate. Although this patch does not
    change any functionality, it slightly improves performance and
    slightly improves readability.

    Signed-off-by: Bart Van Assche
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Martin K. Petersen

    Bart Van Assche
     
  • This patch avoids that smatch reports the following:

    drivers/scsi/scsi_sysfs.c:506 scsi_bus_uevent() warn: argument 3 to %02x specifier has type 'char'
    drivers/scsi/scsi_sysfs.c:872 sdev_show_modalias() warn: argument 4 to %02x specifier has type 'char'

    Signed-off-by: Bart Van Assche
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Hannes Reinecke
    Cc: Johannes Thumshirn
    Signed-off-by: Martin K. Petersen

    Bart Van Assche
     
  • Commit e9c787e65c0c ("scsi: allocate scsi_cmnd structures as part of
    struct request") removed the scsi_get_command() function. Hence also
    remove the declaration of that function.

    Signed-off-by: Bart Van Assche
    Reviewed-by: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Johannes Thumshirn
    Signed-off-by: Martin K. Petersen

    Bart Van Assche
     

17 Aug, 2017

1 commit

  • Releasing a zone write lock only when the write commnand that acquired
    the lock completes can cause deadlocks due to potential command
    reordering if the lock owning request is requeued and not executed. This
    problem exists only with the scsi-mq path as, unlike the legacy path,
    requests are moved out of the dispatch queue before being prepared and
    so before locking a zone for a write command.

    Since sd_uninit_cmnd() is now always called when a request is requeued,
    call sd_zbc_write_unlock_zone() from that function for write requests
    that acquired a zone lock instead of from sd_done(). Acquisition of a zone
    lock by a write command is indicated using the new command
    flag SCMD_ZONE_WRITE_LOCK.

    Signed-off-by: Damien Le Moal
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Bart Van Assche
    Signed-off-by: Martin K. Petersen

    Damien Le Moal
     

08 Aug, 2017

1 commit

  • Scsi_cmnd is an unsuitable argument for eh_device_reset_handler(),
    eh_target_reset_handler(), and eh_host_reset_handler() which do not have
    the scope of one single SCSI command. These callbacks tend to use
    fc_block_scsi_eh() requiring scsi_cmnd. In order to start decoupling
    above eh callbacks from scsi_cmnd, introduce a new variant of the
    function called fc_block_rport() taking an fc_rport as argument.
    Refactor the old fc_block_scsi_eh() to simply delegate to
    fc_block_rport().

    Signed-off-by: Steffen Maier
    Reviewed-by: Hannes Reinecke
    Signed-off-by: Martin K. Petersen

    Steffen Maier
     

14 Jul, 2017

1 commit

  • Pull SCSI target updates from Nicholas Bellinger:
    "It's been usually busy for summer, with most of the efforts centered
    around TCMU developments and various target-core + fabric driver bug
    fixing activities. Not particularly large in terms of LoC, but lots of
    smaller patches from many different folks.

    The highlights include:

    - ibmvscsis logical partition manager support (Michael Cyr + Bryant
    Ly)

    - Convert target/iblock WRITE_SAME to blkdev_issue_zeroout (hch +
    nab)

    - Add support for TMR percpu LUN reference counting (nab)

    - Fix a potential deadlock between EXTENDED_COPY and iscsi shutdown
    (Bart)

    - Fix COMPARE_AND_WRITE caw_sem leak during se_cmd quiesce (Jiang Yi)

    - Fix TMCU module removal (Xiubo Li)

    - Fix iser-target OOPs during login failure (Andrea Righi + Sagi)

    - Breakup target-core free_device backend driver callback (mnc)

    - Perform TCMU add/delete/reconfig synchronously (mnc)

    - Fix TCMU multiple UIO open/close sequences (mnc)

    - Fix TCMU CHECK_CONDITION sense handling (mnc)

    - Fix target-core SAM_STAT_BUSY + TASK_SET_FULL handling (mnc + nab)

    - Introduce TYPE_ZBC support in PSCSI (Damien Le Moal)

    - Fix possible TCMU memory leak + OOPs when recalculating cmd base
    size (Xiubo Li + Bryant Ly + Damien Le Moal + mnc)

    - Add login_keys_workaround attribute for non RFC initiators (Robert
    LeBlanc + Arun Easi + nab)"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (68 commits)
    iscsi-target: Add login_keys_workaround attribute for non RFC initiators
    Revert "qla2xxx: Fix incorrect tcm_qla2xxx_free_cmd use during TMR ABORT"
    tcmu: clean up the code and with one small fix
    tcmu: Fix possbile memory leak / OOPs when recalculating cmd base size
    target: export lio pgr/alua support as device attr
    target: Fix return sense reason in target_scsi3_emulate_pr_out
    target: Fix cmd size for PR-OUT in passthrough_parse_cdb
    tcmu: Fix dev_config_store
    target: pscsi: Introduce TYPE_ZBC support
    target: Use macro for WRITE_VERIFY_32 operation codes
    target: fix SAM_STAT_BUSY/TASK_SET_FULL handling
    target: remove transport_complete
    pscsi: finish cmd processing from pscsi_req_done
    tcmu: fix sense handling during completion
    target: add helper to copy sense to se_cmd buffer
    target: do not require a transport_complete for SCF_TRANSPORT_TASK_SENSE
    target: make device_mutex and device_list static
    tcmu: Fix flushing cmd entry dcache page
    tcmu: fix multiple uio open/close sequences
    tcmu: drop configured check in destroy
    ...

    Linus Torvalds
     

07 Jul, 2017

3 commits

  • Add WRITE_VERIFY_32 definition to scsi prototypes and use this macro
    definition isntead of the hard coded value.

    (Drop WRITE_VERIFY_16 that's already part of another patch - nab)

    Signed-off-by: Damien Le Moal
    Signed-off-by: Nicholas Bellinger

    Damien Le Moal
     
  • Pull SCSI updates from James Bottomley:
    "This is mostly updates of the usual suspects: lpfc, qla2xxx, bnx2fc,
    qedf, hpsa, hisi_sas, smartpqi, cxlflash, aacraid, csiostor along with
    a host of minor and miscellaneous changes"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (276 commits)
    qla2xxx: Fix NVMe entry_type for iocb packet on BE system
    scsi: qla2xxx: avoid unused-function warning
    scsi: snic: fix a couple of spelling mistakes/typos
    scsi: qla2xxx: fix a bunch of typos and spelling mistakes
    scsi: lpfc: don't double count abort errors
    scsi: lpfc: spin_lock_irq() is not nestable
    scsi: hisi_sas: optimise DMA slot memory
    scsi: ibmvfc: constify dev_pm_ops structures.
    scsi: ibmvscsi: constify dev_pm_ops structures.
    scsi: cxlflash: Update debug prints in reset handlers
    scsi: cxlflash: Update send_tmf() parameters
    scsi: cxlflash: Avoid double free of character device
    scsi: Add STARGET_CREATED_REMOVE state to scsi_target_state
    scsi: ses: do not add a device to an enclosure if enclosure_add_links() fails.
    scsi: ufs: flush eh_work when eh_work scheduled.
    scsi: qla2xxx: Protect access to qpair members with qpair->qp_lock
    scsi: sun_esp: fix device reference leaks
    scsi: fnic: changing queue command to return result DID_IMM_RETRY when rport is init
    scsi: fnic: correct speed display and add support for 25,40 and 100G
    scsi: fnic: added timestamp reporting in fnic debug stats
    ...

    Linus Torvalds
     
  • Pull libata updates from Tejun Heo:

    - Christoph added support for TCG OPAL self encrypting disks

    - Minwoo added support for ATA PASS-THROUGH(32)

    - Linus Walleij removed spurious drvdata assignments in some drivers

    - Support for a few new device and other fixes

    * 'for-4.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata: (33 commits)
    sd: add support for TCG OPAL self encrypting disks
    libata: fix build warning from unused goto label
    libata: Support for an ATA PASS-THROUGH(32) command.
    ahci: Add Device ID for ASMedia 1061R and 1062R
    sata_via: Enable optional hotplug on VT6420
    ata: ahci_brcm: Avoid writing to read-only registers
    libata: Add the AHCI_HFLAG_NO_WRITE_TO_RO flag
    libata: Add the AHCI_HFLAG_YES_ALPM flag
    ata: ftide010: fix resource printing
    libata: make the function name in comment match the actual function
    ata: sata_rcar: make of_device_ids const.
    ata: pata_octeon_cf: make of_device_ids const.
    libata: Convert bare printks to pr_cont
    libahci: wrong comments in ahci_do_softreset()
    ata: declare ata_port_info structures as const
    ata: Add driver for Faraday Technology FTIDE010
    ata: Add DT bindings for the Gemini SATA bridge
    ata: Add DT bindings for Faraday Technology FTIDE010
    libata: implement SECURITY PROTOCOL IN/OUT
    libata: factor out a ata_identify_page_supported helper
    ...

    Linus Torvalds
     

02 Jul, 2017

1 commit

  • The addition of the STARGET_REMOVE state had the side effect of
    introducing a race condition that can cause a crash.

    scsi_target_reap_ref_release() checks the starget->state to
    see if it still in STARGET_CREATED, and if so, skips calling
    transport_remove_device() and device_del(), because the starget->state
    is only set to STARGET_RUNNING after scsi_target_add() has called
    device_add() and transport_add_device().

    However, if an rport loss occurs while a target is being scanned,
    it can happen that scsi_remove_target() will be called while the
    starget is still in the STARGET_CREATED state. In this case, the
    starget->state will be set to STARGET_REMOVE, and as a result,
    scsi_target_reap_ref_release() will take the wrong path. The end
    result is a panic:

    [ 1255.356653] Oops: 0000 [#1] SMP
    [ 1255.360154] Modules linked in: x86_pkg_temp_thermal kvm_intel kvm irqbypass crc32c_intel ghash_clmulni_i
    [ 1255.393234] CPU: 5 PID: 149 Comm: kworker/u96:4 Tainted: G W 4.11.0+ #8
    [ 1255.401879] Hardware name: Dell Inc. PowerEdge R320/08VT7V, BIOS 2.0.22 11/19/2013
    [ 1255.410327] Workqueue: scsi_wq_6 fc_scsi_scan_rport [scsi_transport_fc]
    [ 1255.417720] task: ffff88060ca8c8c0 task.stack: ffffc900048a8000
    [ 1255.424331] RIP: 0010:kernfs_find_ns+0x13/0xc0
    [ 1255.429287] RSP: 0018:ffffc900048abbf0 EFLAGS: 00010246
    [ 1255.435123] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
    [ 1255.443083] RDX: 0000000000000000 RSI: ffffffff8188d659 RDI: 0000000000000000
    [ 1255.451043] RBP: ffffc900048abc10 R08: 0000000000000000 R09: 0000012433fe0025
    [ 1255.459005] R10: 0000000025e5a4b5 R11: 0000000025e5a4b5 R12: ffffffff8188d659
    [ 1255.466972] R13: 0000000000000000 R14: ffff8805f55e5088 R15: 0000000000000000
    [ 1255.474931] FS: 0000000000000000(0000) GS:ffff880616b40000(0000) knlGS:0000000000000000
    [ 1255.483959] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1255.490370] CR2: 0000000000000068 CR3: 0000000001c09000 CR4: 00000000000406e0
    [ 1255.498332] Call Trace:
    [ 1255.501058] kernfs_find_and_get_ns+0x31/0x60
    [ 1255.505916] sysfs_unmerge_group+0x1d/0x60
    [ 1255.510498] dpm_sysfs_remove+0x22/0x60
    [ 1255.514783] device_del+0xf4/0x2e0
    [ 1255.518577] ? device_remove_file+0x19/0x20
    [ 1255.523241] attribute_container_class_device_del+0x1a/0x20
    [ 1255.529457] transport_remove_classdev+0x4e/0x60
    [ 1255.534607] ? transport_add_class_device+0x40/0x40
    [ 1255.540046] attribute_container_device_trigger+0xb0/0xc0
    [ 1255.546069] transport_remove_device+0x15/0x20
    [ 1255.551025] scsi_target_reap_ref_release+0x25/0x40
    [ 1255.556467] scsi_target_reap+0x2e/0x40
    [ 1255.560744] __scsi_scan_target+0xaa/0x5b0
    [ 1255.565312] scsi_scan_target+0xec/0x100
    [ 1255.569689] fc_scsi_scan_rport+0xb1/0xc0 [scsi_transport_fc]
    [ 1255.576099] process_one_work+0x14b/0x390
    [ 1255.580569] worker_thread+0x4b/0x390
    [ 1255.584651] kthread+0x109/0x140
    [ 1255.588251] ? rescuer_thread+0x330/0x330
    [ 1255.592730] ? kthread_park+0x60/0x60
    [ 1255.596815] ret_from_fork+0x29/0x40
    [ 1255.600801] Code: 24 08 48 83 42 40 01 5b 41 5c 5d c3 66 66 66 2e 0f 1f 84 00 00 00 00 00 66 66 66 66 90
    [ 1255.621876] RIP: kernfs_find_ns+0x13/0xc0 RSP: ffffc900048abbf0
    [ 1255.628479] CR2: 0000000000000068
    [ 1255.632756] ---[ end trace 34a69ba0477d036f ]---

    Fix this by adding another scsi_target state STARGET_CREATED_REMOVE
    to distinguish this case.

    Fixes: f05795d3d771 ("scsi: Add intermediate STARGET_REMOVE state to scsi_target_state")
    Reported-by: David Jeffery
    Signed-off-by: Ewan D. Milne
    Cc:
    Reviewed-by: Laurence Oberman
    Tested-by: Laurence Oberman
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: Martin K. Petersen

    Ewan D. Milne
     

29 Jun, 2017

1 commit

  • Just wire up the generic TCG OPAL infrastructure to the SCSI disk driver
    and the Security In/Out commands.

    Note that I don't know of any actual SCSI disks that do support TCG OPAL,
    but this is required to support ATA disks through libata.

    Signed-off-by: Christoph Hellwig
    Acked-by: Martin K. Petersen
    Signed-off-by: Tejun Heo

    Christoph Hellwig
     

28 Jun, 2017

1 commit

  • libsas uses scsi_queue_work() to queue its internal event notifications.
    scsi_queue_work() can return -EINVAL if the work queue doesn't exist and
    it does call queue_work() which can return false if the work is already
    queued.

    Make the SAS event code capable of returning errors up to the caller,
    which is handy when changing to dynamically allocated work in libsas
    as well, as discussed here: https://lkml.org/lkml/2017/6/14/121.

    [mkp: fixed typo]

    Signed-off-by: Johannes Thumshirn
    Signed-off-by: Martin K. Petersen

    Johannes Thumshirn
     

27 Jun, 2017

3 commits

  • SAT-4(SCSI/ATA Translation) supports for an ata pass-thru(32).
    This patch will allow to translate an ata pass-thru(32) SCSI cmd
    to an ATA cmd.

    Signed-off-by: Minwoo Im
    Reviewed-by: Bart Van Assche
    Signed-off-by: Tejun Heo

    Minwoo Im
     
  • The symbolic name VLC_SA_RECEIVE_CREDENTIAL is not used anywhere in the
    kernel. Additionally, since SPC 5 the RECEIVE CREDENTIAL command is
    obsolete. The VLC_SA_RECEIVE_CREDENTIAL definition is misleading since
    it occurs outside the list of other variable length CDB service action
    codes (READ_32, WRITE_32, ...). Hence remove this definition.

    References: commit e9ccc998b70f ("[SCSI] Add missing SPC-4 CDB and
    MAINTENANCE_[IN,OUT] service action definitions")
    Signed-off-by: Bart Van Assche
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: Martin K. Petersen

    Bart Van Assche
     
  • After commit 556e26a70b64 ("scsi: remove tsk_mgmt_response and
    it_nexus_response transport methods"), the target driver support was
    removed totally. Drop the residual.

    Signed-off-by: Kefeng Wang
    Reviewed-by: Bart Van Assche
    Signed-off-by: Martin K. Petersen

    Kefeng Wang