<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/infiniband/ulp/srp, branch linux-3.18.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.18.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.18.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-08-14T15:57:54Z</updated>
<entry>
<title>IB/srp: Fix return value check in srp_init_module()</title>
<updated>2014-08-14T15:57:54Z</updated>
<author>
<name>Wei Yongjun</name>
</author>
<published>2014-08-14T00:56:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=da05be290f5040e488ea4d13edc4da889f6f6929'/>
<id>urn:sha1:da05be290f5040e488ea4d13edc4da889f6f6929</id>
<content type='text'>
In case of error, the function create_workqueue() returns NULL pointer
not ERR_PTR().  The IS_ERR() test in the return value check should be
replaced with NULL test.

Signed-off-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Acked-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/srp: Fix residual handling</title>
<updated>2014-08-01T22:21:51Z</updated>
<author>
<name>Bart Van Assche</name>
</author>
<published>2014-07-09T13:57:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e714531a349f614885ca11f68c38270940c5e915'/>
<id>urn:sha1:e714531a349f614885ca11f68c38270940c5e915</id>
<content type='text'>
From Documentation/scsi/scsi_mid_low_api.txt: "resid - an LLD should
set this signed integer to the requested transfer length (i.e.
'request_bufflen') less the number of bytes that are actually
transferred."  This means that resid &gt; 0 in case of an underrun and
also that resid &lt; 0 in case of an overrun.  Modify the SRP initiator
code such that it matches this requirement.

Signed-off-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Reviewed-by: Sagi Grimberg &lt;sagig@mellanox.com&gt;
Reviewed-by: David Dillow &lt;dave@thedillows.org&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/srp: Fix deadlock between host removal and multipathd</title>
<updated>2014-08-01T22:21:51Z</updated>
<author>
<name>Bart Van Assche</name>
</author>
<published>2014-07-09T13:57:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bcc05910359183b431da92713e98eed478edf83a'/>
<id>urn:sha1:bcc05910359183b431da92713e98eed478edf83a</id>
<content type='text'>
If scsi_remove_host() is invoked after a SCSI device has been blocked,
if the fast_io_fail_tmo or dev_loss_tmo work gets scheduled on the
workqueue executing srp_remove_work() and if an I/O request is
scheduled after the SCSI device had been blocked by e.g. multipathd
then the following deadlock can occur:

    kworker/6:1     D ffff880831f3c460     0   195      2 0x00000000
    Call Trace:
     [&lt;ffffffff814aafd9&gt;] schedule+0x29/0x70
     [&lt;ffffffff814aa0ef&gt;] schedule_timeout+0x10f/0x2a0
     [&lt;ffffffff8105af6f&gt;] msleep+0x2f/0x40
     [&lt;ffffffff8123b0ae&gt;] __blk_drain_queue+0x4e/0x180
     [&lt;ffffffff8123d2d5&gt;] blk_cleanup_queue+0x225/0x230
     [&lt;ffffffffa0010732&gt;] __scsi_remove_device+0x62/0xe0 [scsi_mod]
     [&lt;ffffffffa000ed2f&gt;] scsi_forget_host+0x6f/0x80 [scsi_mod]
     [&lt;ffffffffa0002eba&gt;] scsi_remove_host+0x7a/0x130 [scsi_mod]
     [&lt;ffffffffa07cf5c5&gt;] srp_remove_work+0x95/0x180 [ib_srp]
     [&lt;ffffffff8106d7aa&gt;] process_one_work+0x1ea/0x6c0
     [&lt;ffffffff8106dd9b&gt;] worker_thread+0x11b/0x3a0
     [&lt;ffffffff810758bd&gt;] kthread+0xed/0x110
     [&lt;ffffffff814b972c&gt;] ret_from_fork+0x7c/0xb0
    multipathd      D ffff880096acc460     0  5340      1 0x00000000
    Call Trace:
     [&lt;ffffffff814aafd9&gt;] schedule+0x29/0x70
     [&lt;ffffffff814aa0ef&gt;] schedule_timeout+0x10f/0x2a0
     [&lt;ffffffff814ab79b&gt;] io_schedule_timeout+0x9b/0xf0
     [&lt;ffffffff814abe1c&gt;] wait_for_completion_io_timeout+0xdc/0x110
     [&lt;ffffffff81244b9b&gt;] blk_execute_rq+0x9b/0x100
     [&lt;ffffffff8124f665&gt;] sg_io+0x1a5/0x450
     [&lt;ffffffff8124fd21&gt;] scsi_cmd_ioctl+0x2a1/0x430
     [&lt;ffffffff8124fef2&gt;] scsi_cmd_blk_ioctl+0x42/0x50
     [&lt;ffffffffa00ec97e&gt;] sd_ioctl+0xbe/0x140 [sd_mod]
     [&lt;ffffffff8124bd04&gt;] blkdev_ioctl+0x234/0x840
     [&lt;ffffffff811cb491&gt;] block_ioctl+0x41/0x50
     [&lt;ffffffff811a0df0&gt;] do_vfs_ioctl+0x300/0x520
     [&lt;ffffffff811a1051&gt;] SyS_ioctl+0x41/0x80
     [&lt;ffffffff814b9962&gt;] tracesys+0xd0/0xd5

Fix this by scheduling removal work on another workqueue than the
transport layer timers.

Signed-off-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Reviewed-by: Sagi Grimberg &lt;sagig@mellanox.com&gt;
Reviewed-by: David Dillow &lt;dave@thedillows.org&gt;
Cc: Sebastian Parschauer &lt;sebastian.riemer@profitbricks.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/srp: Avoid problems if a header uses pr_fmt</title>
<updated>2014-05-30T04:32:54Z</updated>
<author>
<name>Joe Perches</name>
</author>
<published>2013-02-01T22:33:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d236cd0e209c595434ba15defe56f2e5aa488d1a'/>
<id>urn:sha1:d236cd0e209c595434ba15defe56f2e5aa488d1a</id>
<content type='text'>
SRP defines pr_fmt(fmt) to be "PFX fmt", and then includes a bunch of
header files before it gets around to defining PFX.  This causes
problems if any of the header files do a pr_... and use pr_fmt().

Fix this by using KBUILD_MODNAME instead of the private PFX.

Acked-by: Chris Metcalf &lt;cmetcalf@tilera.com&gt;

Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/srp: Add fast registration support</title>
<updated>2014-05-20T16:20:52Z</updated>
<author>
<name>Bart Van Assche</name>
</author>
<published>2014-05-20T13:08:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5cfb17828d877a5541171087b9d746befdf2a126'/>
<id>urn:sha1:5cfb17828d877a5541171087b9d746befdf2a126</id>
<content type='text'>
Certain HCA types (e.g. Connect-IB) and certain configurations (e.g.
ConnectX VF) support fast registration but not FMR. Hence add fast
registration support.

In function srp_rport_reconnect(), move the the srp_finish_req()
loop from after to before the srp_create_target_ib() call. This is
needed to avoid that srp_finish_req() tries to queue any
invalidation requests for rkeys associated with the old queue pair
on the newly allocated queue pair. Invoking srp_finish_req() before
the queue pair has been reallocated is safe since srp_claim_req()
handles completions correctly that arrive after srp_finish_req()
has been invoked.

Signed-off-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/srp: Rename FMR-related variables</title>
<updated>2014-05-20T16:20:52Z</updated>
<author>
<name>Bart Van Assche</name>
</author>
<published>2014-05-20T13:07:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=52ede08f00ebfc21d50a1f3e5908a78655900519'/>
<id>urn:sha1:52ede08f00ebfc21d50a1f3e5908a78655900519</id>
<content type='text'>
The next patch will cause the renamed variables to be shared between
the code for FMR and for FR memory registration. Make the names of
these variables independent of the memory registration mode. This
patch does not change any functionality. The start of this patch was
the changes applied via the following shell command:

sed -i.orig 's/SRP_FMR_SIZE/SRP_MAX_PAGES_PER_MR/g; \
    s/fmr_page_mask/mr_page_mask/g;s/fmr_page_size/mr_page_size/g; \
    s/fmr_page_shift/mr_page_shift/g;s/fmr_max_size/mr_max_size/g; \
    s/max_pages_per_fmr/max_pages_per_mr/g;s/nfmr/nmdesc/g; \
    s/fmr_len/dma_len/g' drivers/infiniband/ulp/srp/ib_srp.[ch]

Signed-off-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/srp: One FMR pool per SRP connection</title>
<updated>2014-05-20T16:20:52Z</updated>
<author>
<name>Bart Van Assche</name>
</author>
<published>2014-05-20T13:07:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d1b4289e16477fe13e95b88ffb7067c87b10ab6e'/>
<id>urn:sha1:d1b4289e16477fe13e95b88ffb7067c87b10ab6e</id>
<content type='text'>
Allocate one FMR pool per SRP connection instead of one SRP pool
per HCA. This improves scalability of the SRP initiator.

Only request the SCSI mid-layer to retry a SCSI command after a
temporary mapping failure (-ENOMEM) but not after a permanent
mapping failure. This avoids that SCSI commands are retried
indefinitely if a permanent memory mapping failure occurs.

Tell the SCSI mid-layer to reduce queue depth temporarily in the
unlikely case where an application is queuing many requests with
more than max_pages_per_fmr sg-list elements.

For FMR pool allocation, base the max_pages_per_fmr parameter on
the HCA memory registration limit. Only try to allocate an FMR
pool if FMR is supported.

Signed-off-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/srp: Introduce the 'register_always' kernel module parameter</title>
<updated>2014-05-20T16:20:52Z</updated>
<author>
<name>Bart Van Assche</name>
</author>
<published>2014-05-20T13:06:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b1b8854d1622b99b64cd98ed307ffd168c6d3ebd'/>
<id>urn:sha1:b1b8854d1622b99b64cd98ed307ffd168c6d3ebd</id>
<content type='text'>
Add a kernel module parameter that enables memory registration also for SG-lists
that can be processed without memory registration. This makes it easier for kernel
developers to test the memory registration code.

Signed-off-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Reviewed-by: Sagi Grimberg &lt;sagig@mellanox.com&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/srp: Introduce srp_finish_mapping()</title>
<updated>2014-05-20T16:20:52Z</updated>
<author>
<name>Bart Van Assche</name>
</author>
<published>2014-05-20T13:05:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=539dde6fc5c30cfa76439de03ed3ba444d2579b3'/>
<id>urn:sha1:539dde6fc5c30cfa76439de03ed3ba444d2579b3</id>
<content type='text'>
This patch does not change any functionality.

Signed-off-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Reviewed-by: Sagi Grimberg &lt;sagig@mellanox.com&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/srp: Introduce srp_map_fmr()</title>
<updated>2014-05-20T16:20:51Z</updated>
<author>
<name>Bart Van Assche</name>
</author>
<published>2014-05-20T13:05:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=76bc1e1ddd1ea8d4bc230fc0aa45c1d14c232531'/>
<id>urn:sha1:76bc1e1ddd1ea8d4bc230fc0aa45c1d14c232531</id>
<content type='text'>
This patch does not change any functionality.

Signed-off-by: Bart Van Assche &lt;bvanassche@acm.org&gt;
Reviewed-by: Sagi Grimberg &lt;sagig@mellanox.com&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
</feed>
