13 Apr, 2014

3 commits

  • This patch fixes I/O errors with the sym53c8xx_2 driver when the disk
    returns QUEUE FULL status.

    When the controller encounters an error (including QUEUE FULL or BUSY
    status), it aborts all not yet submitted requests in the function
    sym_dequeue_from_squeue.

    This function aborts them with DID_SOFT_ERROR.

    If the disk has full tag queue, the request that caused the overflow is
    aborted with QUEUE FULL status (and the scsi midlayer properly retries
    it until it is accepted by the disk), but the sym53c8xx_2 driver aborts
    the following requests with DID_SOFT_ERROR --- for them, the midlayer
    does just a few retries and then signals the error up to sd.

    The result is that disk returning QUEUE FULL causes request failures.

    The error was reproduced on 53c895 with COMPAQ BD03685A24 disk
    (rebranded ST336607LC) with command queue 48 or 64 tags. The disk has
    64 tags, but under some access patterns it return QUEUE FULL when there
    are less than 64 pending tags. The SCSI specification allows returning
    QUEUE FULL anytime and it is up to the host to retry.

    Signed-off-by: Mikulas Patocka
    Cc: Matthew Wilcox
    Cc: James Bottomley
    Signed-off-by: Linus Torvalds

    Mikulas Patocka
     
  • Pull yet more networking updates from David Miller:

    1) Various fixes to the new Redpine Signals wireless driver, from
    Fariya Fatima.

    2) L2TP PPP connect code takes PMTU from the wrong socket, fix from
    Dmitry Petukhov.

    3) UFO and TSO packets differ in whether they include the protocol
    header in gso_size, account for that in skb_gso_transport_seglen().
    From Florian Westphal.

    4) If VLAN untagging fails, we double free the SKB in the bridging
    output path. From Toshiaki Makita.

    5) Several call sites of sk->sk_data_ready() were referencing an SKB
    just added to the socket receive queue in order to calculate the
    second argument via skb->len. This is dangerous because the moment
    the skb is added to the receive queue it can be consumed in another
    context and freed up.

    It turns out also that none of the sk->sk_data_ready()
    implementations even care about this second argument.

    So just kill it off and thus fix all these use-after-free bugs as a
    side effect.

    6) Fix inverted test in tcp_v6_send_response(), from Lorenzo Colitti.

    7) pktgen needs to do locking properly for LLTX devices, from Daniel
    Borkmann.

    8) xen-netfront driver initializes TX array entries in RX loop :-) From
    Vincenzo Maffione.

    9) After refactoring, some tunnel drivers allow a tunnel to be
    configured on top itself. Fix from Nicolas Dichtel.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (46 commits)
    vti: don't allow to add the same tunnel twice
    gre: don't allow to add the same tunnel twice
    drivers: net: xen-netfront: fix array initialization bug
    pktgen: be friendly to LLTX devices
    r8152: check RTL8152_UNPLUG
    net: sun4i-emac: add promiscuous support
    net/apne: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO
    net: ipv6: Fix oif in TCP SYN+ACK route lookup.
    drivers: net: cpsw: enable interrupts after napi enable and clearing previous interrupts
    drivers: net: cpsw: discard all packets received when interface is down
    net: Fix use after free by removing length arg from sk_data_ready callbacks.
    Drivers: net: hyperv: Address UDP checksum issues
    Drivers: net: hyperv: Negotiate suitable ndis version for offload support
    Drivers: net: hyperv: Allocate memory for all possible per-pecket information
    bridge: Fix double free and memory leak around br_allowed_ingress
    bonding: Remove debug_fs files when module init fails
    i40evf: program RSS LUT correctly
    i40evf: remove open-coded skb_cow_head
    ixgb: remove open-coded skb_cow_head
    igbvf: remove open-coded skb_cow_head
    ...

    Linus Torvalds
     
  • Pull SCSI target updates from Nicholas Bellinger:
    "Here are the target pending updates for v3.15-rc1. Apologies in
    advance for waiting until the second to last day of the merge window
    to send these out.

    The highlights this round include:

    - iser-target support for T10 PI (DIF) offloads (Sagi + Or)
    - Fix Task Aborted Status (TAS) handling in target-core (Alex Leung)
    - Pass in transport supported PI at session initialization (Sagi + MKP + nab)
    - Add WRITE_INSERT + READ_STRIP T10 PI support in target-core (nab + Sagi)
    - Fix iscsi-target ERL=2 ASYNC_EVENT connection pointer bug (nab)
    - Fix tcm_fc use-after-free of ft_tpg (Andy Grover)
    - Use correct ib_sg_dma primitives in ib_isert (Mike Marciniszyn)

    Also, note the virtio-scsi + vhost-scsi changes to expose T10 PI
    metadata into KVM guest have been left-out for now, as there where a
    few comments from MST + Paolo that where not able to be addressed in
    time for v3.15. Please expect this feature for v3.16-rc1"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (43 commits)
    ib_srpt: Use correct ib_sg_dma primitives
    target/tcm_fc: Rename ft_tport_create to ft_tport_get
    target/tcm_fc: Rename ft_{add,del}_lport to {add,del}_wwn
    target/tcm_fc: Rename structs and list members for clarity
    target/tcm_fc: Limit to 1 TPG per wwn
    target/tcm_fc: Don't export ft_lport_list
    target/tcm_fc: Fix use-after-free of ft_tpg
    target: Add check to prevent Abort Task from aborting itself
    target: Enable READ_STRIP emulation in target_complete_ok_work
    target/sbc: Add sbc_dif_read_strip software emulation
    target: Enable WRITE_INSERT emulation in target_execute_cmd
    target/sbc: Add sbc_dif_generate software emulation
    target/sbc: Only expose PI read_cap16 bits when supported by fabric
    target/spc: Only expose PI mode page bits when supported by fabric
    target/spc: Only expose PI inquiry bits when supported by fabric
    target: Pass in transport supported PI at session initialization
    target/iblock: Fix double bioset_integrity_free bug
    Target/sbc: Initialize COMPARE_AND_WRITE write_sg scatterlist
    target/rd: T10-Dif: RAM disk is allocating more space than required.
    iscsi-target: Fix ERL=2 ASYNC_EVENT connection pointer bug
    ...

    Linus Torvalds
     

12 Apr, 2014

2 commits

  • Pull async SCSI resume support from Dan Williams:
    "Allow disks and other devices to resume in parallel.

    This provides a tangible speed up for a non-esoteric use case (laptop
    resume):

    https://01.org/suspendresume/blogs/tebrandt/2013/hard-disk-resume-optimization-simpler-approach"

    * 'async-scsi-resume' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci:
    scsi: async sd resume

    Linus Torvalds
     
  • Several spots in the kernel perform a sequence like:

    skb_queue_tail(&sk->s_receive_queue, skb);
    sk->sk_data_ready(sk, skb->len);

    But at the moment we place the SKB onto the socket receive queue it
    can be consumed and freed up. So this skb->len access is potentially
    to freed up memory.

    Furthermore, the skb->len can be modified by the consumer so it is
    possible that the value isn't accurate.

    And finally, no actual implementation of this callback actually uses
    the length argument. And since nobody actually cared about it's
    value, lots of call sites pass arbitrary values in such as '0' and
    even '1'.

    So just remove the length argument from the callback, that way there
    is no confusion whatsoever and all of these use-after-free cases get
    fixed as a side effect.

    Based upon a patch by Eric Dumazet and his suggestion to audit this
    issue tree-wide.

    Signed-off-by: David S. Miller

    David S. Miller
     

11 Apr, 2014

2 commits

  • async_schedule() sd resume work to allow disks and other devices to
    resume in parallel.

    This moves the entirety of scsi_device resume to an async context to
    ensure that scsi_device_resume() remains ordered with respect to the
    completion of the start/stop command. For the duration of the resume,
    new command submissions (that do not originate from the scsi-core) will
    be deferred (BLKPREP_DEFER).

    It adds a new ASYNC_DOMAIN_EXCLUSIVE(scsi_sd_pm_domain) as a container
    of these operations. Like scsi_sd_probe_domain it is flushed at
    sd_remove() time to ensure async ops do not continue past the
    end-of-life of the sdev. The implementation explicitly refrains from
    reusing scsi_sd_probe_domain directly for this purpose as it is flushed
    at the end of dpm_resume(), potentially defeating some of the benefit.
    Given sdevs are quiesced it is permissible for these resume operations
    to bleed past the async_synchronize_full() calls made by the driver
    core.

    We defer the resolution of which pm callback to call until
    scsi_dev_type_{suspend|resume} time and guarantee that the callback
    parameter is never NULL. With this in place the type of resume
    operation is encoded in the async function identifier.

    There is a concern that async resume could trigger PSU overload. In the
    enterprise, storage enclosures enforce staggered spin-up regardless of
    what the kernel does making async scanning safe by default. Outside of
    that context a user can disable asynchronous scanning via a kernel
    command line or CONFIG_SCSI_SCAN_ASYNC. Honor that setting when
    deciding whether to do resume asynchronously.

    Inspired by Todd's analysis and initial proposal [2]:
    https://01.org/suspendresume/blogs/tebrandt/2013/hard-disk-resume-optimization-simpler-approach

    Cc: Len Brown
    Cc: Phillip Susi
    [alan: bug fix and clean up suggestion]
    Acked-by: Alan Stern
    Suggested-by: Todd Brandt
    [djbw: kick all resume work to the async queue]
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Pull block layer fixes from Jens Axboe:
    "A small collection of fixes that should go in before -rc1. The pull
    request contains:

    - A two patch fix for a regression with block enabled tagging caused
    by a commit in the initial pull request. One patch is from Martin
    and ensures that SCSI doesn't truncate 64-bit block flags, the
    other one is from me and prevents us from double using struct
    request queuelist for both completion and busy tags. This caused
    anything from a boot crash for some, to crashes under load.

    - A blk-mq fix for a potential soft stall when hot unplugging CPUs
    with busy IO.

    - percpu_counter fix is listed in here, that caused a suspend issue
    with virtio-blk due to percpu counters having an inconsistent state
    during CPU removal. Andrew sent this in separately a few days ago,
    but it's here. JFYI.

    - A few fixes for block integrity from Martin.

    - A ratelimit fix for loop from Mike Galbraith, to avoid spewing too
    much in error cases"

    * 'for-linus' of git://git.kernel.dk/linux-block:
    block: fix regression with block enabled tagging
    scsi: Make sure cmd_flags are 64-bit
    block: Ensure we only enable integrity metadata for reads and writes
    block: Fix integrity verification
    block: Fix for_each_bvec()
    drivers/block/loop.c: ratelimit error messages
    blk-mq: fix potential stall during CPU unplug with IO pending
    percpu_counter: fix bad counter state during suspend

    Linus Torvalds
     

10 Apr, 2014

1 commit

  • cmd_flags in struct request is now 64 bits wide but the scsi_execute
    functions truncated arguments passed to int leading to errors. Make sure
    the flags parameters are u64.

    Signed-off-by: Martin K. Petersen
    Cc: Jens Axboe
    CC: Jan Kara
    Cc: Frederic Weisbecker
    Signed-off-by: Jens Axboe

    Martin K. Petersen
     

08 Apr, 2014

1 commit

  • Pull CPU hotplug notifiers registration fixes from Rafael Wysocki:
    "The purpose of this single series of commits from Srivatsa S Bhat
    (with a small piece from Gautham R Shenoy) touching multiple
    subsystems that use CPU hotplug notifiers is to provide a way to
    register them that will not lead to deadlocks with CPU online/offline
    operations as described in the changelog of commit 93ae4f978ca7f ("CPU
    hotplug: Provide lockless versions of callback registration
    functions").

    The first three commits in the series introduce the API and document
    it and the rest simply goes through the users of CPU hotplug notifiers
    and converts them to using the new method"

    * tag 'cpu-hotplug-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (52 commits)
    net/iucv/iucv.c: Fix CPU hotplug callback registration
    net/core/flow.c: Fix CPU hotplug callback registration
    mm, zswap: Fix CPU hotplug callback registration
    mm, vmstat: Fix CPU hotplug callback registration
    profile: Fix CPU hotplug callback registration
    trace, ring-buffer: Fix CPU hotplug callback registration
    xen, balloon: Fix CPU hotplug callback registration
    hwmon, via-cputemp: Fix CPU hotplug callback registration
    hwmon, coretemp: Fix CPU hotplug callback registration
    thermal, x86-pkg-temp: Fix CPU hotplug callback registration
    octeon, watchdog: Fix CPU hotplug callback registration
    oprofile, nmi-timer: Fix CPU hotplug callback registration
    intel-idle: Fix CPU hotplug callback registration
    clocksource, dummy-timer: Fix CPU hotplug callback registration
    drivers/base/topology.c: Fix CPU hotplug callback registration
    acpi-cpufreq: Fix CPU hotplug callback registration
    zsmalloc: Fix CPU hotplug callback registration
    scsi, fcoe: Fix CPU hotplug callback registration
    scsi, bnx2fc: Fix CPU hotplug callback registration
    scsi, bnx2i: Fix CPU hotplug callback registration
    ...

    Linus Torvalds
     

07 Apr, 2014

2 commits

  • In order to support local WRITE_INSERT + READ_STRIP operations for
    non PI enabled fabrics, the fabric driver needs to be able signal
    what protection offload operations are supported.

    This is done at session initialization time so the modes can be
    signaled by individual se_wwn + se_portal_group endpoints, as well
    as optionally across different transports on the same endpoint.

    For iser-target, set TARGET_PROT_ALL if the underlying ib_device
    has already signaled PI offload support, and allow this to be
    exposed via a new iscsit_transport->iscsit_get_sup_prot_ops()
    callback.

    For loopback, set TARGET_PROT_ALL to signal SCSI initiator mode
    operation.

    For all other drivers, set TARGET_PROT_NORMAL to disable fabric
    level PI.

    Cc: Martin K. Petersen
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Cc: Quinn Tran
    Cc: Giridhar Malavali
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • Now that TASK_ABORTED status is not generated for all cases by
    TMR ABORT_TASK + LUN_RESET, a new TFO->abort_task() caller is
    necessary in order to give fabric drivers a chance to unmap
    hardware / software resources before the se_cmd descriptor is
    released via the normal TFO->release_cmd() codepath.

    This patch adds TFO->aborted_task() in core_tmr_abort_task()
    in place of the original transport_send_task_abort(), and
    also updates all fabric drivers to implement this caller.

    The fabric drivers that include changes to perform cleanup
    via ->aborted_task() are:

    - iscsi-target
    - iser-target
    - srpt
    - tcm_qla2xxx

    The fabric drivers that currently set ->aborted_task() to
    NOPs are:

    - loopback
    - tcm_fc
    - usb-gadget
    - sbp-target
    - vhost-scsi

    For the latter five, there appears to be no additional cleanup
    required before invoking TFO->release_cmd() to release the
    se_cmd descriptor.

    v2 changes:
    - Move ->aborted_task() call into transport_cmd_finish_abort (Alex)

    Cc: Alex Leung
    Cc: Mark Rustad
    Cc: Roland Dreier
    Cc: Vu Pham
    Cc: Chris Boot
    Cc: Sebastian Andrzej Siewior
    Cc: Michael S. Tsirkin
    Cc: Giridhar Malavali
    Cc: Saurav Kashyap
    Cc: Quinn Tran
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     

04 Apr, 2014

1 commit

  • Pull infiniband updates from Roland Dreier:
    "Main batch of InfiniBand/RDMA changes for 3.15:

    - The biggest change is core API extensions and mlx5 low-level driver
    support for handling DIF/DIX-style protection information, and the
    addition of PI support to the iSER initiator. Target support will
    be arriving shortly through the SCSI target tree.

    - A nice simplification to the "umem" memory pinning library now that
    we have chained sg lists. Kudos to Yishai Hadas for realizing our
    code didn't have to be so crazy.

    - Another nice simplification to the sg wrappers used by qib, ipath
    and ehca to handle their mapping of memory to adapter.

    - The usual batch of fixes to bugs found by static checkers etc.
    from intrepid people like Dan Carpenter and Yann Droneaud.

    - A large batch of cxgb4, ocrdma, qib driver updates"

    * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (102 commits)
    RDMA/ocrdma: Unregister inet notifier when unloading ocrdma
    RDMA/ocrdma: Fix warnings about pointer integer casts
    RDMA/ocrdma: Code clean-up
    RDMA/ocrdma: Display FW version
    RDMA/ocrdma: Query controller information
    RDMA/ocrdma: Support non-embedded mailbox commands
    RDMA/ocrdma: Handle CQ overrun error
    RDMA/ocrdma: Display proper value for max_mw
    RDMA/ocrdma: Use non-zero tag in SRQ posting
    RDMA/ocrdma: Memory leak fix in ocrdma_dereg_mr()
    RDMA/ocrdma: Increment abi version count
    RDMA/ocrdma: Update version string
    be2net: Add abi version between be2net and ocrdma
    RDMA/ocrdma: ABI versioning between ocrdma and be2net
    RDMA/ocrdma: Allow DPP QP creation
    RDMA/ocrdma: Read ASIC_ID register to select asic_gen
    RDMA/ocrdma: SQ and RQ doorbell offset clean up
    RDMA/ocrdma: EQ full catastrophe avoidance
    RDMA/cxgb4: Disable DSGL use by default
    RDMA/cxgb4: rx_data() needs to hold the ep mutex
    ...

    Linus Torvalds
     

03 Apr, 2014

3 commits

  • …a', 'qib', 'sgwrapper', 'srp' and 'usnic' into for-next

    Roland Dreier
     
  • Pull trivial tree updates from Jiri Kosina:
    "Usual rocket science -- mostly documentation and comment updates"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial:
    sparse: fix comment
    doc: fix double words
    isdn: capi: fix "CAPI_VERSION" comment
    doc: DocBook: Fix typos in xml and template file
    Bluetooth: add module name for btwilink
    driver core: unexport static function create_syslog_header
    mmc: core: typo fix in printk specifier
    ARM: spear: clean up editing mistake
    net-sysfs: fix comment typo 'CONFIG_SYFS'
    doc: Insert MODULE_ in module-signing macros
    Documentation: update URL to hfsplus Technote 1150
    gpio: update path to documentation
    ixgbe: Fix format string in ixgbe_fcoe.
    Kconfig: Remove useless "default N" lines
    user_namespace.c: Remove duplicated word in comment
    CREDITS: fix formatting
    treewide: Fix typo in Documentation/DocBook
    mm: Fix warning on make htmldocs caused by slab.c
    ata: ata-samsung_cf: cleanup in header file
    idr: remove unused prototype of idr_free()

    Linus Torvalds
     
  • Pull x86 old platform removal from Peter Anvin:
    "This patchset removes support for several completely obsolete
    platforms, where the maintainers either have completely vanished or
    acked the removal. For some of them it is questionable if there even
    exists functional specimens of the hardware"

    Geert Uytterhoeven apparently thought this was a April Fool's pull request ;)

    * 'x86-nuke-platforms-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, platforms: Remove NUMAQ
    x86, platforms: Remove SGI Visual Workstation
    x86, apic: Remove support for IBM Summit/EXA chipset
    x86, apic: Remove support for ia32-based Unisys ES7000

    Linus Torvalds
     

02 Apr, 2014

3 commits

  • Pull core block layer updates from Jens Axboe:
    "This is the pull request for the core block IO bits for the 3.15
    kernel. It's a smaller round this time, it contains:

    - Various little blk-mq fixes and additions from Christoph and
    myself.

    - Cleanup of the IPI usage from the block layer, and associated
    helper code. From Frederic Weisbecker and Jan Kara.

    - Duplicate code cleanup in bio-integrity from Gu Zheng. This will
    give you a merge conflict, but that should be easy to resolve.

    - blk-mq notify spinlock fix for RT from Mike Galbraith.

    - A blktrace partial accounting bug fix from Roman Pen.

    - Missing REQ_SYNC detection fix for blk-mq from Shaohua Li"

    * 'for-3.15/core' of git://git.kernel.dk/linux-block: (25 commits)
    blk-mq: add REQ_SYNC early
    rt,blk,mq: Make blk_mq_cpu_notify_lock a raw spinlock
    blk-mq: support partial I/O completions
    blk-mq: merge blk_mq_insert_request and blk_mq_run_request
    blk-mq: remove blk_mq_alloc_rq
    blk-mq: don't dump CPU -> hw queue map on driver load
    blk-mq: fix wrong usage of hctx->state vs hctx->flags
    blk-mq: allow blk_mq_init_commands() to return failure
    block: remove old blk_iopoll_enabled variable
    blktrace: fix accounting of partially completed requests
    smp: Rename __smp_call_function_single() to smp_call_function_single_async()
    smp: Remove wait argument from __smp_call_function_single()
    watchdog: Simplify a little the IPI call
    smp: Move __smp_call_function_single() below its safe version
    smp: Consolidate the various smp_call_function_single() declensions
    smp: Teach __smp_call_function_single() to check for offline cpus
    smp: Remove unused list_head from csd
    smp: Iterate functions through llist_for_each_entry_safe()
    block: Stop abusing rq->csd.list in blk-softirq
    block: Remove useless IPI struct initialization
    ...

    Linus Torvalds
     
  • Pull first round of SCSI updates from James Bottomley:
    "This patch consists of the usual driver updates (megaraid_sas,
    scsi_debug, qla2xxx, qla4xxx, lpfc, bnx2fc, be2iscsi, hpsa, ipr) plus
    an assortment of minor fixes and the first precursors of SCSI-MQ (the
    code path simplifications) and the bug fix for the USB oops on remove
    (which involves an infrastructure change, so is sent via the main tree
    with a delayed backport after a cycle in which it is shown to
    introduce no new bugs)"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (196 commits)
    [SCSI] sd: Quiesce mode sense error messages
    [SCSI] add support for per-host cmd pools
    [SCSI] simplify command allocation and freeing a bit
    [SCSI] megaraid: simplify internal command handling
    [SCSI] ses: Use vpd information from scsi_device
    [SCSI] Add EVPD page 0x83 and 0x80 to sysfs
    [SCSI] Return VPD page length in scsi_vpd_inquiry()
    [SCSI] scsi_sysfs: Implement 'is_visible' callback
    [SCSI] hpsa: update driver version to 3.4.4-1
    [SCSI] hpsa: fix bad endif placement in RAID 5 mapper code
    [SCSI] qla2xxx: Fix build errors related to invalid print fields on some architectures.
    [SCSI] bfa: Replace large udelay() with mdelay()
    [SCSI] vmw_pvscsi: Some improvements in pvscsi driver.
    [SCSI] vmw_pvscsi: Add support for I/O requests coalescing.
    [SCSI] vmw_pvscsi: Fix pvscsi_abort() function.
    [SCSI] remove deprecated IRQF_DISABLED from SCSI
    [SCSI] bfa: Updating Maintainers email ids
    [SCSI] ipr: Add new CCIN definition for Grand Canyon support
    [SCSI] ipr: Format HCAM overlay ID 0x21
    [SCSI] ipr: Use pci_enable_msi_range() and pci_enable_msix_range()
    ...

    Linus Torvalds
     
  • Pull driver core and sysfs updates from Greg KH:
    "Here's the big driver core / sysfs update for 3.15-rc1.

    Lots of kernfs updates to make it useful for other subsystems, and a
    few other tiny driver core patches.

    All have been in linux-next for a while"

    * tag 'driver-core-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (42 commits)
    Revert "sysfs, driver-core: remove unused {sysfs|device}_schedule_callback_owner()"
    kernfs: cache atomic_write_len in kernfs_open_file
    numa: fix NULL pointer access and memory leak in unregister_one_node()
    Revert "driver core: synchronize device shutdown"
    kernfs: fix off by one error.
    kernfs: remove duplicate dir.c at the top dir
    x86: align x86 arch with generic CPU modalias handling
    cpu: add generic support for CPU feature based module autoloading
    sysfs: create bin_attributes under the requested group
    driver core: unexport static function create_syslog_header
    firmware: use power efficient workqueue for unloading and aborting fw load
    firmware: give a protection when map page failed
    firmware: google memconsole driver fixes
    firmware: fix google/gsmi duplicate efivars_sysfs_init()
    drivers/base: delete non-required instances of include
    kernfs: fix kernfs_node_from_dentry()
    ACPI / platform: drop redundant ACPI_HANDLE check
    kernfs: fix hash calculation in kernfs_rename_ns()
    kernfs: add CONFIG_KERNFS
    sysfs, kobject: add sysfs wrapper for kernfs_enable_ns()
    ...

    Linus Torvalds
     

01 Apr, 2014

2 commits

  • Pull libata updates from Tejun Heo:
    "A lot of activities on libata side this time.

    - A lot of changes around ahci. Various embedded platforms are
    implementing ahci controllers. Some were built atop ahci_platform,
    others were doing their own things. Hans made some structural
    changes to libahci and librarized ahci_platform so that ahci
    platform drivers can share more common code. A couple platform
    drivers are added on top of that and several are added to replace
    older drivers which were doing their own things (older ones are
    scheduled to be removed).

    - Dan finishes the patchset to make libata PM operations
    asynchronous. Combined with one patch being routed through scsi,
    this should speed resume measurably.

    - Various fixes and cleanups from Bartlomiej and others"

    * 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata: (61 commits)
    ata: fix Marvell SATA driver dependencies
    ata: fix ARASAN CompactFlash PATA driver dependencies
    ata: remove superfluous casts
    ata: sata_highbank: remove superfluous cast
    ata: fix Calxeda Highbank SATA driver dependencies
    ata: fix R-Car SATA driver dependencies
    ARM: davinci: da850: update SATA AHCI support
    ata: add new-style AHCI platform driver for DaVinci DA850 AHCI controller
    ata: move library code from ahci_platform.c to libahci_platform.c
    ata: ahci_platform: fix ahci_platform_data->suspend method handling
    libata: remove unused ata_sas_port_async_resume() stub
    libata.h: add stub for ata_sas_port_resume
    libata: async resume
    libata, libsas: kill pm_result and related cleanup
    ata: Fix compiler warning with APM X-Gene host controller driver
    arm64: Add APM X-Gene SoC AHCI SATA host controller DTS entries
    ata: Add APM X-Gene SoC AHCI SATA host controller driver
    Documentation: Add documentation for the APM X-Gene SoC SATA host controller DTS binding
    arm64: Add APM X-Gene SoC 15Gbps Multi-purpose PHY DTS entries
    ata: ahci_sunxi: fix code formatting
    ...

    Linus Torvalds
     
  • Pull m68k updates from Geert Uytterhoeven.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k: Update defconfigs for v3.14-rc1
    [SCSI] atari_scsi: Fix sleep_on race
    m68k: head.S - Remove bogus L prefix in comment
    m68k: Remove dead code
    m68k: Remove CONSOLE_PENGUIN macro, adopt CONFIG_LOGO

    Linus Torvalds
     

27 Mar, 2014

7 commits

  • Messages about discovered disk properties are only printed once unless
    they are found to have changed. Errors encountered during mode sense,
    however, are printed every time we revalidate.

    Quiesce mode sense errors so they are only printed during the first
    scan.

    [jejb: checkpatch fixes]
    Bugzilla: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=733565
    Signed-off-by: Martin K. Petersen
    Signed-off-by: James Bottomley

    Martin K. Petersen
     
  • This allows drivers to specify the size of their per-command private
    data in the host template and then get extra memory allocated for
    each command instead of needing another allocation in ->queuecommand.

    With the current SCSI code that already does multiple allocations for
    each command this probably doesn't make a big performance impact, but
    it allows to clean up the drivers, and prepare them for using the
    blk-mq infrastructure where the common allocation will make a difference.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Paolo Bonzini
    Signed-off-by: James Bottomley

    Christoph Hellwig
     
  • Just have one level of alloc/free functions that take a host instead
    of two levels for the allocation and different calling conventions
    for the free.

    [fengguang.wu@intel.com: docbook problems spotted, now fixed]
    Signed-off-by: Christoph Hellwig
    Reviewed-by: Paolo Bonzini
    Signed-off-by: James Bottomley

    Christoph Hellwig
     
  • We don't use the passed in scsi command for anything, so just add a adapter-
    wide internal status to go along with the internal scb that is used unter
    int_mtx to pass back the return value and get rid of all the complexities
    and abuse of the scsi_cmnd structure.

    This gets rid of the only user of scsi_allocate_command/scsi_free_command,
    which can now be removed.

    [jejb: checkpatch fixes]
    Signed-off-by: Christoph Hellwig
    Acked-by: Adam Radford
    Signed-off-by: James Bottomley

    Christoph Hellwig
     
  • The scsi_device now has VPD page83 information attached, so
    there is no need to query it again.

    Signed-off-by: Hannes Reinecke
    Signed-off-by: James Bottomley

    Hannes Reinecke
     
  • EVPD page 0x83 is used to uniquely identify the device.
    So instead of having each and every program issue a separate
    SG_IO call to retrieve this information it does make far more
    sense to display it in sysfs.

    Some older devices (most notably tapes) will only report reliable
    information in page 0x80 (Unit Serial Number). So export this
    in the sysfs attribute 'vpd_pg80'.

    [jejb: checkpatch fix]
    [hare: attach after transport configure]
    [fengguang.wu@intel.com: spotted problems with the original now fixed]
    Signed-off-by: Hannes Reinecke
    Signed-off-by: James Bottomley

    Hannes Reinecke
     
  • We should be returning the number of bytes of the
    requested VPD page in scsi_vpd_inquiry.
    This makes it easier for the caller to verify the
    required space.

    [jejb: fix up mm warning spotted by Sergey]
    Tested-by: Sergey Senozhatsky
    Signed-off-by: Hannes Reinecke
    Signed-off-by: James Bottomley

    Hannes Reinecke
     

25 Mar, 2014

2 commits

  • Pull networking fixes from David Miller:

    1) OpenVswitch's lookup_datapath() returns error pointers, so don't
    check against NULL. From Jiri Pirko.

    2) pfkey_compile_policy() code path tries to do a GFP_KERNEL allocation
    under RCU locks, fix by using GFP_ATOMIC when necessary. From
    Nikolay Aleksandrov.

    3) phy_suspend() indirectly passes uninitialized data into the ethtool
    get wake-on-land implementations. Fix from Sebastian Hesselbarth.

    4) CPSW driver unregisters CPTS twice, fix from Benedikt Spranger.

    5) If SKB allocation of reply packet fails, vxlan's arp_reduce() defers
    a NULL pointer. Fix from David Stevens.

    6) IPV6 neigh handling in vxlan doesn't validate the destination
    address properly, and it builds a packet with the src and dst
    reversed. Fix also from David Stevens.

    7) Fix spinlock recursion during subscription failures in TIPC stack,
    from Erik Hugne.

    8) Revert buggy conversion of davinci_emac to devm_request_irq, from
    Chrstian Riesch.

    9) Wrong flags passed into forwarding database netlink notifications,
    from Nicolas Dichtel.

    10) The netpoll neighbour soliciation handler checks wrong ethertype,
    needs to be ETH_P_IPV6 rather than ETH_P_ARP. Fix from Li RongQing.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (34 commits)
    tipc: fix spinlock recursion bug for failed subscriptions
    vxlan: fix nonfunctional neigh_reduce()
    net: davinci_emac: Fix rollback of emac_dev_open()
    net: davinci_emac: Replace devm_request_irq with request_irq
    netpoll: fix the skb check in pkt_is_ns
    net: micrel : ks8851-ml: add vdd-supply support
    ip6mr: fix mfc notification flags
    ipmr: fix mfc notification flags
    rtnetlink: fix fdb notification flags
    tcp: syncookies: do not use getnstimeofday()
    netlink: fix setsockopt in mmap examples in documentation
    openvswitch: Correctly report flow used times for first 5 minutes after boot.
    via-rhine: Disable device in error path
    ATHEROS-ATL1E: Convert iounmap to pci_iounmap
    vxlan: fix potential NULL dereference in arp_reduce()
    cnic: Update version to 2.5.20 and copyright year.
    cnic,bnx2i,bnx2fc: Fix inconsistent use of page size
    cnic: Use proper ulp_ops for per device operations.
    net: cdc_ncm: fix control message ordering
    ipv6: ip6_append_data_mtu do not handle the mtu of the second fragment properly
    ...

    Linus Torvalds
     
  • This patch fixes the following two kernel-doc warnings:

    Warning(drivers/scsi/scsi_transport_srp.c:819): No description found for parameter 'rport'
    Warning(include/scsi/scsi_transport_srp.h:75): Excess struct/union/enum/typedef member 'deleted' description in 'srp_rport'

    Signed-off-by: Bart Van Assche
    Reported-by: Masanari Iida
    Acked-by: Sebastian Riemer
    Signed-off-by: Roland Dreier

    Bart Van Assche
     

20 Mar, 2014

11 commits

  • Subsystems that want to register CPU hotplug callbacks, as well as perform
    initialization for the CPUs that are already online, often do it as shown
    below:

    get_online_cpus();

    for_each_online_cpu(cpu)
    init_cpu(cpu);

    register_cpu_notifier(&foobar_cpu_notifier);

    put_online_cpus();

    This is wrong, since it is prone to ABBA deadlocks involving the
    cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
    with CPU hotplug operations).

    Instead, the correct and race-free way of performing the callback
    registration is:

    cpu_notifier_register_begin();

    for_each_online_cpu(cpu)
    init_cpu(cpu);

    /* Note the use of the double underscored version of the API */
    __register_cpu_notifier(&foobar_cpu_notifier);

    cpu_notifier_register_done();

    Fix the fcoe code in scsi by using this latter form of callback registration.

    Cc: Robert Love
    Cc: "James E.J. Bottomley"
    Cc: Ingo Molnar
    Signed-off-by: Srivatsa S. Bhat
    Signed-off-by: Rafael J. Wysocki

    Srivatsa S. Bhat
     
  • Subsystems that want to register CPU hotplug callbacks, as well as perform
    initialization for the CPUs that are already online, often do it as shown
    below:

    get_online_cpus();

    for_each_online_cpu(cpu)
    init_cpu(cpu);

    register_cpu_notifier(&foobar_cpu_notifier);

    put_online_cpus();

    This is wrong, since it is prone to ABBA deadlocks involving the
    cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
    with CPU hotplug operations).

    Instead, the correct and race-free way of performing the callback
    registration is:

    cpu_notifier_register_begin();

    for_each_online_cpu(cpu)
    init_cpu(cpu);

    /* Note the use of the double underscored version of the API */
    __register_cpu_notifier(&foobar_cpu_notifier);

    cpu_notifier_register_done();

    Fix the bnx2fc code in scsi by using this latter form of callback
    registration.

    Cc: Eddie Wai
    Cc: "James E.J. Bottomley"
    Cc: Ingo Molnar
    Signed-off-by: Srivatsa S. Bhat
    Signed-off-by: Rafael J. Wysocki

    Srivatsa S. Bhat
     
  • Subsystems that want to register CPU hotplug callbacks, as well as perform
    initialization for the CPUs that are already online, often do it as shown
    below:

    get_online_cpus();

    for_each_online_cpu(cpu)
    init_cpu(cpu);

    register_cpu_notifier(&foobar_cpu_notifier);

    put_online_cpus();

    This is wrong, since it is prone to ABBA deadlocks involving the
    cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
    with CPU hotplug operations).

    Instead, the correct and race-free way of performing the callback
    registration is:

    cpu_notifier_register_begin();

    for_each_online_cpu(cpu)
    init_cpu(cpu);

    /* Note the use of the double underscored version of the API */
    __register_cpu_notifier(&foobar_cpu_notifier);

    cpu_notifier_register_done();

    Fix the bnx2i code in scsi by using this latter form of callback registration.

    Cc: Eddie Wai
    Cc: "James E.J. Bottomley"
    Cc: Ingo Molnar
    Signed-off-by: Srivatsa S. Bhat
    Signed-off-by: Rafael J. Wysocki

    Srivatsa S. Bhat
     
  • Instead of modifying attributes after the device has been created
    we should be using the 'is_visible' callback to avoid races.

    Signed-off-by: Hannes Reinecke
    Signed-off-by: James Bottomley

    Hannes Reinecke
     
  • Signed-off-by: Stephen M. Cameron
    Signed-off-by: James Bottomley

    Stephen M. Cameron
     
  • It caused the i/o request to always be counted as ineligible for
    the accelerated i/o path on 32 bit systems and negatively affected
    performance.

    Signed-off-by: Stephen M. Cameron
    Signed-off-by: James Bottomley

    Stephen M. Cameron
     
  • Fixes some build warnings such as:
    drivers/scsi/qla2xxx/qla_attr.c:162:6: warning: format '%lx' expects argument of
    type 'long unsigned int', but argument 6 has type 'size_t'"
    and
    drivers/scsi/qla2xxx/qla_init.c:5198:7: warning: format '%lx' expects argument
    of type 'long unsigned int', but argument 5 has type 'uint32_t' [-Wformat]

    Signed-off-by: Chad Dupuis
    Signed-off-by: Saurav Kashyap
    Signed-off-by: James Bottomley

    Chad Dupuis
     
  • udelay() does not work on some architectures for values above
    2000, in particular on ARM:

    ERROR: "__bad_udelay" [drivers/scsi/bfa/bfa.ko] undefined!

    Reported-by: Vagrant Cascadian
    Signed-off-by: Ben Hutchings
    Signed-off-by: James Bottomley

    Ben Hutchings
     
  • This change is about the following:
    (1) If the number of targets is 16+ then default ring_pages to 32.
    (2) Change default queue depth (per device) to 254.
    (3) Implement change_queue_depth function so that queue_depth per device can
    be changed at run time. Honors the request only if coming from sysfs.
    (4) Clean up the info returned by modinfo.

    Signed-off-by: Arvind Kumar
    Signed-off-by: James Bottomley

    Arvind Kumar
     
  • This change allows pvscsi driver to coalesce I/O requests
    before issuing them. The number of I/O's coalesced can be
    dynamically configured based on the workload.

    Signed-off-by: Rishi Mehta
    Signed-off-by: Arvind Kumar
    Signed-off-by: James Bottomley

    Rishi Mehta
     
  • This change ensures that pvscsi_abort() function returns SUCCESS
    only when the command in question was actually completed, otherwise
    returns FAILURE. The code before change, was causing a bug where
    driver tries to complete a command to the mid-layer while the mid-layer
    has already requested the driver to abort that command, in response
    to which the driver has responded with SUCCESS causing mid-layer
    to free the command struct.

    Signed-off-by: Arvind Kumar
    Tested-by: Ewan Milne
    Signed-off-by: James Bottomley

    Arvind Kumar