<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/include/linux/ceph, branch v4.1.18</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v4.1.18</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v4.1.18'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2016-02-15T20:45:18Z</updated>
<entry>
<title>libceph: fix ceph_msg_revoke()</title>
<updated>2016-02-15T20:45:18Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2015-12-28T10:18:34Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=65a7633357c158ed164878d97e8a7fc09fb75946'/>
<id>urn:sha1:65a7633357c158ed164878d97e8a7fc09fb75946</id>
<content type='text'>
[ Upstream commit 67645d7619738e51c668ca69f097cb90b5470422 ]

There are a number of problems with revoking a "was sending" message:

(1) We never make any attempt to revoke data - only kvecs contibute to
con-&gt;out_skip.  However, once the header (envelope) is written to the
socket, our peer learns data_len and sets itself to expect at least
data_len bytes to follow front or front+middle.  If ceph_msg_revoke()
is called while the messenger is sending message's data portion,
anything we send after that call is counted by the OSD towards the now
revoked message's data portion.  The effects vary, the most common one
is the eventual hang - higher layers get stuck waiting for the reply to
the message that was sent out after ceph_msg_revoke() returned and
treated by the OSD as a bunch of data bytes.  This is what Matt ran
into.

(2) Flat out zeroing con-&gt;out_kvec_bytes worth of bytes to handle kvecs
is wrong.  If ceph_msg_revoke() is called before the tag is sent out or
while the messenger is sending the header, we will get a connection
reset, either due to a bad tag (0 is not a valid tag) or a bad header
CRC, which kind of defeats the purpose of revoke.  Currently the kernel
client refuses to work with header CRCs disabled, but that will likely
change in the future, making this even worse.

(3) con-&gt;out_skip is not reset on connection reset, leading to one or
more spurious connection resets if we happen to get a real one between
con-&gt;out_skip is set in ceph_msg_revoke() and before it's cleared in
write_partial_skip().

Fixing (1) and (3) is trivial.  The idea behind fixing (2) is to never
zero the tag or the header, i.e. send out tag+header regardless of when
ceph_msg_revoke() is called.  That way the header is always correct, no
unnecessary resets are induced and revoke stands ready for disabled
CRCs.  Since ceph_msg_revoke() rips out con-&gt;out_msg, introduce a new
"message out temp" and copy the header into it before sending.

Cc: stable@vger.kernel.org # 4.0+
Reported-by: Matt Conner &lt;matt.conner@keepertech.com&gt;
Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
Tested-by: Matt Conner &lt;matt.conner@keepertech.com&gt;
Reviewed-by: Sage Weil &lt;sage@redhat.com&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>libceph: announce support for straw2 buckets</title>
<updated>2015-04-22T15:33:48Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2015-04-14T20:13:31Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=7c1c4747f28f59f2939687168203863f7e095d10'/>
<id>urn:sha1:7c1c4747f28f59f2939687168203863f7e095d10</id>
<content type='text'>
Sync up feature bits and enable CEPH_FEATURE_CRUSH_V4.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>ceph: rename snapshot support</title>
<updated>2015-04-22T15:33:41Z</updated>
<author>
<name>Yan, Zheng</name>
<email>zyan@redhat.com</email>
</author>
<published>2015-04-07T07:36:32Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=0ea611a3bc5fb8f6a0bb1a76fe2dbf8ebe4bdf77'/>
<id>urn:sha1:0ea611a3bc5fb8f6a0bb1a76fe2dbf8ebe4bdf77</id>
<content type='text'>
Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
</content>
</entry>
<entry>
<title>libceph: simplify our debugfs attr macro</title>
<updated>2015-04-20T15:55:39Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2015-03-25T18:15:17Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=9571eb4f9617e89b3f979a3856b1296eba277bb1'/>
<id>urn:sha1:9571eb4f9617e89b3f979a3856b1296eba277bb1</id>
<content type='text'>
No need to do single_open()'s job ourselves.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: expose client options through debugfs</title>
<updated>2015-04-20T15:55:39Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2015-03-25T18:07:41Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=5cf7bd30120ead3db43ef9074be38018d9acf22f'/>
<id>urn:sha1:5cf7bd30120ead3db43ef9074be38018d9acf22f</id>
<content type='text'>
Add a client_options attribute for showing libceph options.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph, ceph: split ceph_show_options()</title>
<updated>2015-04-20T15:55:38Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2015-03-25T18:02:16Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=ff40f9ae95917b72b6acb6057471c99054b6ee24'/>
<id>urn:sha1:ff40f9ae95917b72b6acb6057471c99054b6ee24</id>
<content type='text'>
Split ceph_show_options() into two pieces and move the piece
responsible for printing client (libceph) options into net/ceph.  This
way people adding a libceph option wouldn't have to remember to update
code in fs/ceph.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: osdmap.h: Add missing format newlines</title>
<updated>2015-04-20T15:55:35Z</updated>
<author>
<name>Joe Perches</name>
<email>joe@perches.com</email>
</author>
<published>2015-03-23T20:35:03Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=3ef650d3989677bd460497f9c3b0d58caaba0116'/>
<id>urn:sha1:3ef650d3989677bd460497f9c3b0d58caaba0116</id>
<content type='text'>
To avoid possible interleaving, add missing '\n' to formats.

Convert pr_warning to pr_warn while there.

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: tcp_nodelay support</title>
<updated>2015-02-19T10:31:40Z</updated>
<author>
<name>Chaitanya Huilgol</name>
<email>chaitanya.huilgol@gmail.com</email>
</author>
<published>2015-01-23T11:11:25Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=ba988f87f532cd2b8c4740aa8ec49056521ae833'/>
<id>urn:sha1:ba988f87f532cd2b8c4740aa8ec49056521ae833</id>
<content type='text'>
TCP_NODELAY socket option set on connection sockets,
disables Nagle’s algorithm and improves latency characteristics.
tcp_nodelay(default)/notcp_nodelay option flags provided to
enable/disable setting the socket option.

Signed-off-by: Chaitanya Huilgol &lt;chaitanya.huilgol@sandisk.com&gt;
[idryomov@redhat.com: NO_TCP_NODELAY -&gt; TCP_NODELAY, minor adjustments]
Signed-off-by: Ilya Dryomov &lt;idryomov@redhat.com&gt;
</content>
</entry>
<entry>
<title>ceph: handle SESSION_FORCE_RO message</title>
<updated>2015-02-19T10:31:37Z</updated>
<author>
<name>Yan, Zheng</name>
<email>zyan@redhat.com</email>
</author>
<published>2015-01-05T03:04:04Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=03f4fcb02884859b584c709652bb48f8125ceb45'/>
<id>urn:sha1:03f4fcb02884859b584c709652bb48f8125ceb45</id>
<content type='text'>
mark session as readonly and wake up all cap waiters.

Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
</content>
</entry>
<entry>
<title>libceph: nuke pool op infrastructure</title>
<updated>2015-02-19T10:31:37Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@redhat.com</email>
</author>
<published>2014-12-22T16:14:26Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=7a6fdeb2b1e93548854063c46c9724458564c76b'/>
<id>urn:sha1:7a6fdeb2b1e93548854063c46c9724458564c76b</id>
<content type='text'>
On Mon, Dec 22, 2014 at 5:35 PM, Sage Weil &lt;sage@newdream.net&gt; wrote:
&gt; On Mon, 22 Dec 2014, Ilya Dryomov wrote:
&gt;&gt; Actually, pool op stuff has been unused for over two years - looks like
&gt;&gt; it was added for rbd create_snap and that got ripped out in 2012.  It's
&gt;&gt; unlikely we'd ever need to manage pools or snaps from the kernel client
&gt;&gt; so I think it makes sense to nuke it.  Sage?
&gt;
&gt; Yep!

Signed-off-by: Ilya Dryomov &lt;idryomov@redhat.com&gt;
</content>
</entry>
</feed>
