<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/nvme/target, branch v4.8.16</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v4.8.16</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v4.8.16'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2017-01-06T10:16:23+00:00</updated>
<entry>
<title>nvmet: Fix possible infinite loop triggered on hot namespace removal</title>
<updated>2017-01-06T10:16:23+00:00</updated>
<author>
<name>Solganik Alexander</name>
<email>sashas@lightbitslabs.com</email>
</author>
<published>2016-10-30T08:35:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=3e0ef1b8e0cc9179f498da7892af8ed6621c9a2b'/>
<id>urn:sha1:3e0ef1b8e0cc9179f498da7892af8ed6621c9a2b</id>
<content type='text'>
commit e4fcf07cca6a3b6c4be00df16f08be894325eaa3 upstream.

When removing a namespace we delete it from the subsystem namespaces
list with list_del_init which allows us to know if it is enabled or
not.

The problem is that list_del_init initialize the list next and does
not respect the RCU list-traversal we do on the IO path for locating
a namespace. Instead we need to use list_del_rcu which is allowed to
run concurrently with the _rcu list-traversal primitives (keeps list
next intact) and guarantees concurrent nvmet_find_naespace forward
progress.

By changing that, we cannot rely on ns-&gt;dev_link for knowing if the
namspace is enabled, so add enabled indicator entry to nvmet_ns for
that.

Signed-off-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
Signed-off-by: Solganik Alexander &lt;sashas@lightbitslabs.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>nvme: fabrics drivers don't need the nvme-pci driver</title>
<updated>2016-08-19T11:22:28+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2016-08-18T18:16:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=aa71987472a974f4f6dc4be377720564079ef42e'/>
<id>urn:sha1:aa71987472a974f4f6dc4be377720564079ef42e</id>
<content type='text'>
So select the NVME_CORE symbol instead of depending on BLK_DEV_NVME.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Jay Freyensee &lt;james_p_freyensee@linux.intel.com&gt;
Signed-off-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
</content>
</entry>
<entry>
<title>nvme-loop: set sqsize to 0-based value, per spec</title>
<updated>2016-08-18T06:58:06+00:00</updated>
<author>
<name>Jay Freyensee</name>
<email>james_p_freyensee@linux.intel.com</email>
</author>
<published>2016-08-17T22:00:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=eadb7cf44105ae8250f0d638dc880c3ed511c4e2'/>
<id>urn:sha1:eadb7cf44105ae8250f0d638dc880c3ed511c4e2</id>
<content type='text'>
Signed-off-by: Jay Freyensee &lt;james_p_freyensee@linux.intel.com&gt;
Signed-off-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
</content>
</entry>
<entry>
<title>nvmet-rdma: +1 to *queue_size from hsqsize/hrqsize</title>
<updated>2016-08-18T06:57:37+00:00</updated>
<author>
<name>Jay Freyensee</name>
<email>james_p_freyensee@linux.intel.com</email>
</author>
<published>2016-08-17T22:00:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b825b44c4ef4dabfdaf4e82db2263d377ac45d67'/>
<id>urn:sha1:b825b44c4ef4dabfdaf4e82db2263d377ac45d67</id>
<content type='text'>
The host will be sending sqsize 0-based hsqsize value,
the target need to be adjusted as well.

Signed-off-by: Jay Freyensee &lt;james_p_freyensee@linux.intel.com&gt;
Reviewed-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
Signed-off-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
</content>
</entry>
<entry>
<title>nvmet-rdma: Fix use after free</title>
<updated>2016-08-16T13:16:31+00:00</updated>
<author>
<name>Vincent Stehlé</name>
<email>vincent.stehle@intel.com</email>
</author>
<published>2016-08-16T13:11:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=3256aaef5e9a851f6be47656868020726e102187'/>
<id>urn:sha1:3256aaef5e9a851f6be47656868020726e102187</id>
<content type='text'>
Avoid dereferencing the queue pointer in nvmet_rdma_release_queue_work()
after it has been freed by nvmet_rdma_free_queue().

Fixes: d8f7750a08968b10 ("nvmet-rdma: Correctly handle RDMA device hot removal")
Signed-off-by: Vincent Stehlé &lt;vincent.stehle@intel.com&gt;
Cc: Sagi Grimberg &lt;sagi@grimberg.me&gt;
Cc: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
</content>
</entry>
<entry>
<title>nvmet: Fix controller serial number inconsistency</title>
<updated>2016-08-04T14:45:10+00:00</updated>
<author>
<name>Sagi Grimberg</name>
<email>sagi@grimberg.me</email>
</author>
<published>2016-08-04T08:18:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=28b89118539da03f4b188763e1b2fd1aec0f580a'/>
<id>urn:sha1:28b89118539da03f4b188763e1b2fd1aec0f580a</id>
<content type='text'>
The host is allowed to issue identify as many times
as it wants, we need to stay consistent when reporting
the serial number for a given controller.

Signed-off-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
</content>
</entry>
<entry>
<title>nvmet-rdma: Don't use the inline buffer in order to avoid allocation for small reads</title>
<updated>2016-08-04T14:44:40+00:00</updated>
<author>
<name>Sagi Grimberg</name>
<email>sagi@grimberg.me</email>
</author>
<published>2016-07-28T15:04:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=40e64e07213201710a51e270595d6e6c028f9502'/>
<id>urn:sha1:40e64e07213201710a51e270595d6e6c028f9502</id>
<content type='text'>
Under extreme conditions this might cause data corruptions. By doing that
we we repost the buffer and then post this buffer for the device to send.
If we happen to use shared receive queues the device might write to the
buffer before it sends it (there is no ordering between send and recv
queues). Without SRQs we probably won't get that if the host doesn't
mis-behave and send more than we allowed it, but relying on that is not
really a good idea.

Signed-off-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
</content>
</entry>
<entry>
<title>nvmet-rdma: Correctly handle RDMA device hot removal</title>
<updated>2016-08-04T14:43:06+00:00</updated>
<author>
<name>Sagi Grimberg</name>
<email>sagi@grimberg.me</email>
</author>
<published>2016-05-19T12:24:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=d8f7750a08968b105056328652d2c332bdfa062d'/>
<id>urn:sha1:d8f7750a08968b105056328652d2c332bdfa062d</id>
<content type='text'>
When configuring a device attached listener, we may
see device removal events. In this case we return a
non-zero return code from the cm event handler which
implicitly destroys the cm_id. It is possible that in
the future the user will remove this listener and by
that trigger a second call to rdma_destroy_id on an
already destroyed cm_id -&gt; BUG.

In addition, when a queue bound (active session) cm_id
generates a DEVICE_REMOVAL event we must guarantee all
resources are cleaned up by the time we return from the
event handler.

Introduce nvmet_rdma_device_removal which addresses
(or at least attempts to) both scenarios.

Signed-off-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
</content>
</entry>
<entry>
<title>nvme-loop: Remove duplicate call to nvme_remove_namespaces</title>
<updated>2016-08-03T13:25:19+00:00</updated>
<author>
<name>Sagi Grimberg</name>
<email>sagi@grimberg.me</email>
</author>
<published>2016-07-24T06:32:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=a159c64d936eb0d1da29d8ad384183d8984899c9'/>
<id>urn:sha1:a159c64d936eb0d1da29d8ad384183d8984899c9</id>
<content type='text'>
nvme_uninit_ctrl already does that for us. Note that we
reordered nvme_loop_shutdown_ctrl with nvme_uninit_ctrl
but its safe because we want controller uninit to happen
before we shutdown the transport resources.

Signed-off-by: Sagi Grimberg &lt;sagi@grimberg.me&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
</content>
</entry>
<entry>
<title>nvme-loop: fix nvme-loop Kconfig dependencies</title>
<updated>2016-07-12T15:36:40+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2016-07-12T15:36:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=6eae8c45206733ba3a56b4f9e278774ad397b092'/>
<id>urn:sha1:6eae8c45206733ba3a56b4f9e278774ad397b092</id>
<content type='text'>
I ran into the same problem on NVME_TARGET_RDMA now,
which otherwise needs dependencies on both CONFIG_BLOCK and
CONFIGFS_FS:

    warning: (NVME_TARGET_LOOP &amp;&amp; NVME_TARGET_RDMA) selects NVME_TARGET which has unmet direct dependencies (BLOCK &amp;&amp; CONFIGFS_FS)
    0xA002B368 Mon Jul 11 18:00:45 CEST 2016 failed
    In file included from ../drivers/nvme/target/core.c:16:0:
    drivers/nvme/target/nvmet.h:222:14: error: field 'inline_bio' has incomplete type
      struct bio  inline_bio;
                  ^~~~~~~~~~
    drivers/nvme/target/core.c: In function 'nvmet_async_event_work':
    drivers/nvme/target/core.c:98:3: error: implicit declaration of function 'kfree' [-Werror=implicit-function-declaration]
       kfree(aen);
       ^~~~~
    ../drivers/nvme/target/core.c: In function 'nvmet_ns_enable':
    ../drivers/nvme/target/core.c:269:13: error: implicit declaration of function 'blkdev_get_by_path' [-Werror=implicit-function-declaration]
      ns-&gt;bdev = blkdev_get_by_path(ns-&gt;device_path, FMODE_READ | FMODE_WRITE,

Folding in my patch below should address that too.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Reported-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
</feed>
