14 Nov, 2015

2 commits

  • Pull final round of SCSI updates from James Bottomley:
    "Sorry for the delay in this patch which was mostly caused by getting
    the merger of the mpt2/mpt3sas driver, which was seen as an essential
    item of maintenance work to do before the drivers diverge too much.
    Unfortunately, this caused a compile failure (detected by linux-next),
    which then had to be fixed up and incubated.

    In addition to the mpt2/3sas rework, there are updates from pm80xx,
    lpfc, bnx2fc, hpsa, ipr, aacraid, megaraid_sas, storvsc and ufs plus
    an assortment of changes including some year 2038 issues, a fix for a
    remove before detach issue in some drivers and a couple of other minor
    issues"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (141 commits)
    mpt3sas: fix inline markers on non inline function declarations
    sd: Clear PS bit before Mode Select.
    ibmvscsi: set max_lun to 32
    ibmvscsi: display default value for max_id, max_lun and max_channel.
    mptfusion: don't allow negative bytes in kbuf_alloc_2_sgl()
    scsi: pmcraid: replace struct timeval with ktime_get_real_seconds()
    mvumi: 64bit value for seconds_since1970
    be2iscsi: Fix bogus WARN_ON length check
    scsi_scan: don't dump trace when scsi_prep_async_scan() is called twice
    mpt3sas: Bump mpt3sas driver version to 09.102.00.00
    mpt3sas: Single driver module which supports both SAS 2.0 & SAS 3.0 HBAs
    mpt2sas, mpt3sas: Update the driver versions
    mpt3sas: setpci reset kernel oops fix
    mpt3sas: Added OEM Gen2 PnP ID branding names
    mpt3sas: Refcount fw_events and fix unsafe list usage
    mpt3sas: Refcount sas_device objects and fix unsafe list usage
    mpt3sas: sysfs attribute to report Backup Rail Monitor Status
    mpt3sas: Ported WarpDrive product SSS6200 support
    mpt3sas: fix for driver fails EEH, recovery from injected pci bus error
    mpt3sas: Manage MSI-X vectors according to HBA device type
    ...

    Linus Torvalds
     
  • Pull SCSI target updates from Nicholas Bellinger:
    "This series contains HCH's changes to absorb configfs attribute
    ->show() + ->store() function pointer usage from it's original
    tree-wide consumers, into common configfs code.

    It includes usb-gadget, target w/ drivers, netconsole and ocfs2
    changes to realize the improved simplicity, that now renders the
    original include/target/configfs_macros.h CPP magic for fabric drivers
    and others, unnecessary and obsolete.

    And with common code in place, new configfs attributes can be added
    easier than ever before.

    Note, there are further improvements in-flight from other folks for
    v4.5 code in configfs land, plus number of target fixes for post -rc1
    code"

    In the meantime, a new user of the now-removed old configfs API came in
    through the char/misc tree in commit 7bd1d4093c2f ("stm class: Introduce
    an abstraction for System Trace Module devices").

    This merge resolution comes from Alexander Shishkin, who updated his stm
    class tracing abstraction to account for the removal of the old
    show_attribute and store_attribute methods in commit 517982229f78
    ("configfs: remove old API") from this pull. As Alexander says about
    that patch:

    "There's no need to keep an extra wrapper structure per item and the
    awkward show_attribute/store_attribute item ops are no longer needed.

    This patch converts policy code to the new api, all the while making
    the code quite a bit smaller and easier on the eyes.

    Signed-off-by: Alexander Shishkin "

    That patch was folded into the merge so that the tree should be fully
    bisectable.

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (23 commits)
    configfs: remove old API
    ocfs2/cluster: use per-attribute show and store methods
    ocfs2/cluster: move locking into attribute store methods
    netconsole: use per-attribute show and store methods
    target: use per-attribute show and store methods
    spear13xx_pcie_gadget: use per-attribute show and store methods
    dlm: use per-attribute show and store methods
    usb-gadget/f_serial: use per-attribute show and store methods
    usb-gadget/f_phonet: use per-attribute show and store methods
    usb-gadget/f_obex: use per-attribute show and store methods
    usb-gadget/f_uac2: use per-attribute show and store methods
    usb-gadget/f_uac1: use per-attribute show and store methods
    usb-gadget/f_mass_storage: use per-attribute show and store methods
    usb-gadget/f_sourcesink: use per-attribute show and store methods
    usb-gadget/f_printer: use per-attribute show and store methods
    usb-gadget/f_midi: use per-attribute show and store methods
    usb-gadget/f_loopback: use per-attribute show and store methods
    usb-gadget/ether: use per-attribute show and store methods
    usb-gadget/f_acm: use per-attribute show and store methods
    usb-gadget/f_hid: use per-attribute show and store methods
    ...

    Linus Torvalds
     

10 Nov, 2015

1 commit

  • This patch changes the !blk-mq path to the same defaults as the blk-mq
    I/O path by always enabling block tagging, and always using host wide
    tags. We've had blk-mq available for a few releases so bugs with
    this mode should have been ironed out, and this ensures we get better
    coverage of over tagging setup over different configs.

    Signed-off-by: Christoph Hellwig
    Acked-by: Jens Axboe
    Reviewed-by: Hannes Reinecke
    Signed-off-by: James Bottomley

    Christoph Hellwig
     

08 Nov, 2015

2 commits

  • Merge second patch-bomb from Andrew Morton:

    - most of the rest of MM

    - procfs

    - lib/ updates

    - printk updates

    - bitops infrastructure tweaks

    - checkpatch updates

    - nilfs2 update

    - signals

    - various other misc bits: coredump, seqfile, kexec, pidns, zlib, ipc,
    dma-debug, dma-mapping, ...

    * emailed patches from Andrew Morton : (102 commits)
    ipc,msg: drop dst nil validation in copy_msg
    include/linux/zutil.h: fix usage example of zlib_adler32()
    panic: release stale console lock to always get the logbuf printed out
    dma-debug: check nents in dma_sync_sg*
    dma-mapping: tidy up dma_parms default handling
    pidns: fix set/getpriority and ioprio_set/get in PRIO_USER mode
    kexec: use file name as the output message prefix
    fs, seqfile: always allow oom killer
    seq_file: reuse string_escape_str()
    fs/seq_file: use seq_* helpers in seq_hex_dump()
    coredump: change zap_threads() and zap_process() to use for_each_thread()
    coredump: ensure all coredumping tasks have SIGNAL_GROUP_COREDUMP
    signal: remove jffs2_garbage_collect_thread()->allow_signal(SIGCONT)
    signal: introduce kernel_signal_stop() to fix jffs2_garbage_collect_thread()
    signal: turn dequeue_signal_lock() into kernel_dequeue_signal()
    signals: kill block_all_signals() and unblock_all_signals()
    nilfs2: fix gcc uninitialized-variable warnings in powerpc build
    nilfs2: fix gcc unused-but-set-variable warnings
    MAINTAINERS: nilfs2: add header file for tracing
    nilfs2: add tracepoints for analyzing reading and writing metadata files
    ...

    Linus Torvalds
     
  • Pull rdma updates from Doug Ledford:
    "This is my initial round of 4.4 merge window patches. There are a few
    other things I wish to get in for 4.4 that aren't in this pull, as
    this represents what has gone through merge/build/run testing and not
    what is the last few items for which testing is not yet complete.

    - "Checksum offload support in user space" enablement
    - Misc cxgb4 fixes, add T6 support
    - Misc usnic fixes
    - 32 bit build warning fixes
    - Misc ocrdma fixes
    - Multicast loopback prevention extension
    - Extend the GID cache to store and return attributes of GIDs
    - Misc iSER updates
    - iSER clustering update
    - Network NameSpace support for rdma CM
    - Work Request cleanup series
    - New Memory Registration API"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: (76 commits)
    IB/core, cma: Make __attribute_const__ declarations sparse-friendly
    IB/core: Remove old fast registration API
    IB/ipath: Remove fast registration from the code
    IB/hfi1: Remove fast registration from the code
    RDMA/nes: Remove old FRWR API
    IB/qib: Remove old FRWR API
    iw_cxgb4: Remove old FRWR API
    RDMA/cxgb3: Remove old FRWR API
    RDMA/ocrdma: Remove old FRWR API
    IB/mlx4: Remove old FRWR API support
    IB/mlx5: Remove old FRWR API support
    IB/srp: Dont allocate a page vector when using fast_reg
    IB/srp: Remove srp_finish_mapping
    IB/srp: Convert to new registration API
    IB/srp: Split srp_map_sg
    RDS/IW: Convert to new memory registration API
    svcrdma: Port to new memory registration API
    xprtrdma: Port to new memory registration API
    iser-target: Port to new memory registration API
    IB/iser: Port to new fast registration API
    ...

    Linus Torvalds
     

07 Nov, 2015

3 commits

  • __GFP_WAIT was used to signal that the caller was in atomic context and
    could not sleep. Now it is possible to distinguish between true atomic
    context and callers that are not willing to sleep. The latter should
    clear __GFP_DIRECT_RECLAIM so kswapd will still wake. As clearing
    __GFP_WAIT behaves differently, there is a risk that people will clear the
    wrong flags. This patch renames __GFP_WAIT to __GFP_RECLAIM to clearly
    indicate what it does -- setting it allows all reclaim activity, clearing
    them prevents it.

    [akpm@linux-foundation.org: fix build]
    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Mel Gorman
    Acked-by: Michal Hocko
    Acked-by: Vlastimil Babka
    Acked-by: Johannes Weiner
    Cc: Christoph Lameter
    Acked-by: David Rientjes
    Cc: Vitaly Wool
    Cc: Rik van Riel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mel Gorman
     
  • …d avoiding waking kswapd

    __GFP_WAIT has been used to identify atomic context in callers that hold
    spinlocks or are in interrupts. They are expected to be high priority and
    have access one of two watermarks lower than "min" which can be referred
    to as the "atomic reserve". __GFP_HIGH users get access to the first
    lower watermark and can be called the "high priority reserve".

    Over time, callers had a requirement to not block when fallback options
    were available. Some have abused __GFP_WAIT leading to a situation where
    an optimisitic allocation with a fallback option can access atomic
    reserves.

    This patch uses __GFP_ATOMIC to identify callers that are truely atomic,
    cannot sleep and have no alternative. High priority users continue to use
    __GFP_HIGH. __GFP_DIRECT_RECLAIM identifies callers that can sleep and
    are willing to enter direct reclaim. __GFP_KSWAPD_RECLAIM to identify
    callers that want to wake kswapd for background reclaim. __GFP_WAIT is
    redefined as a caller that is willing to enter direct reclaim and wake
    kswapd for background reclaim.

    This patch then converts a number of sites

    o __GFP_ATOMIC is used by callers that are high priority and have memory
    pools for those requests. GFP_ATOMIC uses this flag.

    o Callers that have a limited mempool to guarantee forward progress clear
    __GFP_DIRECT_RECLAIM but keep __GFP_KSWAPD_RECLAIM. bio allocations fall
    into this category where kswapd will still be woken but atomic reserves
    are not used as there is a one-entry mempool to guarantee progress.

    o Callers that are checking if they are non-blocking should use the
    helper gfpflags_allow_blocking() where possible. This is because
    checking for __GFP_WAIT as was done historically now can trigger false
    positives. Some exceptions like dm-crypt.c exist where the code intent
    is clearer if __GFP_DIRECT_RECLAIM is used instead of the helper due to
    flag manipulations.

    o Callers that built their own GFP flags instead of starting with GFP_KERNEL
    and friends now also need to specify __GFP_KSWAPD_RECLAIM.

    The first key hazard to watch out for is callers that removed __GFP_WAIT
    and was depending on access to atomic reserves for inconspicuous reasons.
    In some cases it may be appropriate for them to use __GFP_HIGH.

    The second key hazard is callers that assembled their own combination of
    GFP flags instead of starting with something like GFP_KERNEL. They may
    now wish to specify __GFP_KSWAPD_RECLAIM. It's almost certainly harmless
    if it's missed in most cases as other activity will wake kswapd.

    Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Vitaly Wool <vitalywool@gmail.com>
    Cc: Rik van Riel <riel@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

    Mel Gorman
     
  • Pull asm-generic cleanups from Arnd Bergmann:
    "The asm-generic changes for 4.4 are mostly a series from Christoph
    Hellwig to clean up various abuses of headers in there. The patch to
    rename the io-64-nonatomic-*.h headers caused some conflicts with new
    users, so I added a workaround that we can remove in the next merge
    window.

    The only other patch is a warning fix from Marek Vasut"

    * tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
    asm-generic: temporarily add back asm-generic/io-64-nonatomic*.h
    asm-generic: cmpxchg: avoid warnings from macro-ized cmpxchg() implementations
    gpio-mxc: stop including
    n_tracesink: stop including
    n_tracerouter: stop including
    mlx5: stop including
    hifn_795x: stop including
    drbd: stop including
    move count_zeroes.h out of asm-generic
    move io-64-nonatomic*.h out of asm-generic

    Linus Torvalds
     

01 Nov, 2015

1 commit


31 Oct, 2015

1 commit

  • Move the __attribute_const__ declarations such that sparse understands
    that these apply to the function itself and not to the return type.
    This avoids that sparse reports error messages like the following:

    drivers/infiniband/core/verbs.c:73:12: error: symbol 'ib_event_msg' redeclared with different type (originally declared at include/rdma/ib_verbs.h:470) - different modifiers

    Fixes: 2b1b5b601230 ("IB/core, cma: Nice log-friendly string helpers")
    Signed-off-by: Bart Van Assche
    Cc: Sagi Grimberg
    Reviewed-by: Sagi Grimberg
    Signed-off-by: Doug Ledford

    Bart Van Assche
     

29 Oct, 2015

30 commits

  • No callers and no providers left, go ahead and remove it.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • No ULP uses it anymore, go ahead and remove it.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • No ULP uses it anymore, go ahead and remove it.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • No ULP uses it anymore, go ahead and remove it.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • No ULP uses it anymore, go ahead and remove it.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • No ULP uses it anymore, go ahead and remove it.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • No ULP uses it anymore, go ahead and remove it.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • No ULP uses it anymore, go ahead and remove it.
    Keep only the local invalidate part of the handlers.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • The new fast registration API does not reuqire a page vector
    so we can't avoid allocating it.

    Signed-off-by: Sagi Grimberg
    Tested-by: Bart Van Assche
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • No callers left, remove it.

    Signed-off-by: Sagi Grimberg
    Tested-by: Bart Van Assche
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Instead of constructing a page list, call ib_map_mr_sg
    and post a new ib_reg_wr. srp_map_finish_fr now returns
    the number of sg elements registered.

    Remove srp_finish_mapping since no one is calling it.

    Signed-off-by: Sagi Grimberg
    Tested-by: Bart Van Assche
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • This is a preparation patch for the new registration API
    conversion. It splits srp_map_sg per registration strategy
    (srp_map_sg[fmr|fr|dma]. On its own it adds some code duplication,
    but it makes the API switch easier to comprehend.

    Signed-off-by: Sagi Grimberg
    Tested-by: Bart Van Assche
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Remove fastreg page list allocation as the page vector
    is now private to the provider. Instead of constructing
    the page list and fast_req work request, call ib_map_mr_sg
    and construct ib_reg_wr.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Remove fastreg page list allocation as the page vector
    is now private to the provider. Instead of constructing
    the page list and fast_req work request, call ib_map_mr_sg
    and construct ib_reg_wr.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Support the new memory registration API by allocating a
    private page list array in nes_mr and populate it when
    nes_map_mr_sg is invoked. Also, support IB_WR_REG_MR
    by duplicating IB_WR_FAST_REG_MR handling and take the
    needed information from different places:
    - page_size, iova, length (ib_mr)
    - page array (nes_mr)
    - key, access flags (ib_reg_wr)

    The IB_WR_FAST_REG_MR handlers will be removed later when
    all the ULPs will be converted.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Support the new memory registration API by allocating a
    private page list array in qib_mr and populate it when
    qib_map_mr_sg is invoked. Also, support IB_WR_REG_MR
    by duplicating qib_fastreg_mr just take the needed information
    from different places:
    - page_size, iova, length (ib_mr)
    - page array (qib_mr)
    - key, access flags (ib_reg_wr)

    The IB_WR_FAST_REG_MR handlers will be removed later when
    all the ULPs will be converted.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Support the new memory registration API by allocating a
    private page list array in c4iw_mr and populate it when
    c4iw_map_mr_sg is invoked. Also, support IB_WR_REG_MR
    by duplicating build_fastreg just take the needed information
    from different places:
    - page_size, iova, length (ib_mr)
    - page array (c4iw_mr)
    - key, access flags (ib_reg_wr)

    The IB_WR_FAST_REG_MR handlers will be removed later when
    all the ULPs will be converted.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Tested-by: Steve Wise
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Support the new memory registration API by allocating a
    private page list array in iwch_mr and populate it when
    iwch_map_mr_sg is invoked. Also, support IB_WR_REG_MR
    by duplicating build_fastreg just take the needed information
    from different places:
    - page_size, iova, length (ib_mr)
    - page array (iwch_mr)
    - key, access flags (ib_reg_wr)

    The IB_WR_FAST_REG_MR handlers will be removed later when
    all the ULPs will be converted.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Support the new memory registration API by allocating a
    private page list array in ocrdma_mr and populate it when
    ocrdma_map_mr_sg is invoked. Also, support IB_WR_REG_MR
    by duplicating IB_WR_FAST_REG_MR, but take the needed
    information from different places:
    - page_size, iova, length, access flags (ib_mr)
    - page array (ocrdma_mr)
    - key (ib_reg_wr)

    The IB_WR_FAST_REG_MR handlers will be removed later when
    all the ULPs will be converted.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Support the new memory registration API by allocating a
    private page list array in mlx4_ib_mr and populate it when
    mlx4_ib_map_mr_sg is invoked. Also, support IB_WR_REG_MR
    by setting the exact WQE as IB_WR_FAST_REG_MR, just take the
    needed information from different places:
    - page_size, iova, length, access flags (ib_mr)
    - page array (mlx4_ib_mr)
    - key (ib_reg_wr)

    The IB_WR_FAST_REG_MR handlers will be removed later when
    all the ULPs will be converted.

    Signed-off-by: Sagi Grimberg
    Tested-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Support the new memory registration API by allocating a
    private page list array in mlx5_ib_mr and populate it when
    mlx5_ib_map_mr_sg is invoked. Also, support IB_WR_REG_MR
    by setting the exact WQE as IB_WR_FAST_REG_MR, just take the
    needed information from different places:
    - page_size, iova, length, access flags (ib_mr)
    - page array (mlx5_ib_mr)
    - key (ib_reg_wr)

    The IB_WR_FAST_REG_MR handlers will be removed later when
    all the ULPs will be converted.

    Signed-off-by: Sagi Grimberg
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Just function declarations - no need for those
    laying arround. If for some reason someone will want
    FMR support in mlx5, it should be easy enough to restore
    a few structs.

    Signed-off-by: Sagi Grimberg
    Reviewed-by: Bart Van Assche
    Acked-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • The new fast registration verb ib_map_mr_sg receives a scatterlist
    and converts it to a page list under the verbs API thus hiding
    the specific HW mapping details away from the consumer.

    The provider drivers are provided with a generic helper ib_sg_to_pages
    that converts a scatterlist into a vector of page addresses. The
    drivers can still perform any HW specific page address setting
    by passing a set_page function pointer which will be invoked for
    each page address. This allows drivers to avoid keeping a shadow
    page vectors and convert them to HW specific translations by doing
    extra copies.

    This API will allow ULPs to remove the duplicated code of constructing
    a page vector from a given sg list.

    The send work request ib_reg_wr also shrinks as it will contain only
    mr, key and access flags in addition.

    Signed-off-by: Sagi Grimberg
    Tested-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg
     
  • Doug Ledford
     
  • Signed-off-by: Doug Ledford

    Conflicts:
    drivers/infiniband/ulp/isert/ib_isert.c - Commit 4366b19ca5eb
    (iser-target: Change the recv buffers posting logic) changed the
    logic in isert_put_datain() and had to be hand merged

    Doug Ledford
     
  • Add support for network namespaces from user space. This is done by passing
    the network namespace of the process instead of init_net.

    Signed-off-by: Haggai Eran
    Signed-off-by: Yotam Kenneth
    Signed-off-by: Shachar Raindel
    Signed-off-by: Guy Shapiro
    Signed-off-by: Doug Ledford

    Guy Shapiro
     
  • Add support for network namespaces in the ib_cma module. This is
    accomplished by:

    1. Adding network namespace parameter for rdma_create_id. This parameter is
    used to populate the network namespace field in rdma_id_private.
    rdma_create_id keeps a reference on the network namespace.
    2. Using the network namespace from the rdma_id instead of init_net inside
    of ib_cma, when listening on an ID and when looking for an ID for an
    incoming request.
    3. Decrementing the reference count for the appropriate network namespace
    when calling rdma_destroy_id.

    In order to preserve the current behavior init_net is passed when calling
    from other modules.

    Signed-off-by: Guy Shapiro
    Signed-off-by: Haggai Eran
    Signed-off-by: Yotam Kenneth
    Signed-off-by: Shachar Raindel
    Signed-off-by: Doug Ledford

    Guy Shapiro
     
  • Keep a struct for each network namespace containing the IDRs for the RDMA
    CM port spaces. The struct is created dynamically using the generic_net
    mechanism.

    This patch is internal infrastructure work for the following patches. In
    this patch, init_net is statically used as the network namespace for
    the new port-space API.

    Signed-off-by: Haggai Eran
    Signed-off-by: Yotam Kenneth
    Signed-off-by: Shachar Raindel
    Signed-off-by: Guy Shapiro
    Signed-off-by: Doug Ledford

    Haggai Eran
     
  • Add network namespace support to the ib_addr module. For that, all the
    address resolution and matching should be done using the appropriate
    namespace instead of init_net.

    This is achieved by:

    1. Adding an explicit network namespace argument to exported function that
    require a namespace.
    2. Saving the namespace in the rdma_addr_client structure.
    3. Using it when calling networking functions.

    In order to preserve the behavior of calling modules, &init_net is
    passed as the parameter in calls from other modules. This is modified as
    namespace support is added on more levels.

    Signed-off-by: Haggai Eran
    Signed-off-by: Yotam Kenneth
    Signed-off-by: Shachar Raindel
    Signed-off-by: Guy Shapiro
    Signed-off-by: Doug Ledford

    Guy Shapiro
     
  • iser is perfectly capable supporting SG clustering as it translates
    the SG list to a page vector. Enabling SG clustering can dramatically
    reduce the number of SG elements, which doesn't make much of a difference
    at this point, but with arbitrary SG list support, reducing the
    number of SG elements can benefit greatly as as it would reduce
    the length of the HW descriptors array.

    Signed-off-by: Sagi Grimberg
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Doug Ledford

    Sagi Grimberg