<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/net/ceph/debugfs.c, branch v4.8</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v4.8</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v4.8'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2016-07-28T00:55:37Z</updated>
<entry>
<title>libceph: rados pool namespace support</title>
<updated>2016-07-28T00:55:37Z</updated>
<author>
<name>Yan, Zheng</name>
<email>zyan@redhat.com</email>
</author>
<published>2016-02-14T03:24:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=30c156d9951e0aa88202707d80c583b0a09d3167'/>
<id>urn:sha1:30c156d9951e0aa88202707d80c583b0a09d3167</id>
<content type='text'>
Add pool namesapce pointer to struct ceph_file_layout and struct
ceph_object_locator. Pool namespace is used by when mapping object
to PG, it's also used when composing OSD request.

The namespace pointer in struct ceph_file_layout is RCU protected.
So libceph can read namespace without taking lock.

Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
[idryomov@gmail.com: ceph_oloc_destroy(), misc minor changes]
Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: support for subscribing to "mdsmap.&lt;id&gt;" maps</title>
<updated>2016-05-25T23:15:30Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2016-05-25T22:05:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=737cc81ead34bcef0b1f6ea8322228e4378cf21a'/>
<id>urn:sha1:737cc81ead34bcef0b1f6ea8322228e4378cf21a</id>
<content type='text'>
Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: take osdc-&gt;lock in osdmap_show() and dump flags in hex</title>
<updated>2016-05-25T23:15:29Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2016-04-28T14:07:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=b4f34795697de9d1ee84a10c8439b4b9970ebd96'/>
<id>urn:sha1:b4f34795697de9d1ee84a10c8439b4b9970ebd96</id>
<content type='text'>
There is now about a dozen CEPH_OSDMAP_* flags.  This is a debugging
interface, so just dump in hex instead of spelling each flag out.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: support for sending notifies</title>
<updated>2016-05-25T23:15:28Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2016-04-28T14:07:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=1907920324f1f3ebb6618344417c03a2863bba01'/>
<id>urn:sha1:1907920324f1f3ebb6618344417c03a2863bba01</id>
<content type='text'>
Implement ceph_osdc_notify() for sending notifies.

Due to the fact that the current messenger can't do read-in into
pagelists (it can only do write-out from them), I had to go with a page
vector for a NOTIFY_COMPLETE payload, for now.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph, rbd: ceph_osd_linger_request, watch/notify v2</title>
<updated>2016-05-25T23:15:02Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2016-05-25T23:15:02Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=922dab6134178cae317ae00de86376cba59f3147'/>
<id>urn:sha1:922dab6134178cae317ae00de86376cba59f3147</id>
<content type='text'>
This adds support and switches rbd to a new, more reliable version of
watch/notify protocol.  As with the OSD client update, this is mostly
about getting the right structures linked into the right places so that
reconnects are properly sent when needed.  watch/notify v2 also
requires sending regular pings to the OSDs - send_linger_ping().

A major change from the old watch/notify implementation is the
introduction of ceph_osd_linger_request - linger requests no longer
piggy back on ceph_osd_request.  ceph_osd_event has been merged into
ceph_osd_linger_request.

All the details are now hidden within libceph, the interface consists
of a simple pair of watch/unwatch functions and ceph_osdc_notify_ack().
ceph_osdc_watch() does return ceph_osd_linger_request, but only to keep
the lifetime management simple.

ceph_osdc_notify_ack() accepts an optional data payload, which is
relayed back to the notifier.

Portions of this patch are loosely based on work by Douglas Fuller
&lt;dfuller@redhat.com&gt; and Mike Christie &lt;michaelc@cs.wisc.edu&gt;.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: a major OSD client update</title>
<updated>2016-05-25T23:14:03Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2016-04-28T14:07:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5aea3dcd50215fa9563270251ad7323e2f2490ee'/>
<id>urn:sha1:5aea3dcd50215fa9563270251ad7323e2f2490ee</id>
<content type='text'>
This is a major sync up, up to ~Jewel.  The highlights are:

- per-session request trees (vs a global per-client tree)
- per-session locking (vs a global per-client rwlock)
- homeless OSD session
- no ad-hoc global per-client lists
- support for pool quotas
- foundation for watch/notify v2 support
- foundation for map check (pool deletion detection) support

The switchover is incomplete: lingering requests can be setup and
teared down but aren't ever reestablished.  This functionality is
restored with the introduction of the new lingering infrastructure
(ceph_osd_linger_request, linger_work, etc) in a later commit.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: switch to calc_target(), part 2</title>
<updated>2016-05-25T22:36:27Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2016-05-25T22:29:52Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=bb873b539154ab51893430b4ad6ba4051775276a'/>
<id>urn:sha1:bb873b539154ab51893430b4ad6ba4051775276a</id>
<content type='text'>
The crux of this is getting rid of ceph_osdc_build_request(), so that
MOSDOp can be encoded not before but after calc_target() calculates the
actual target.  Encoding now happens within ceph_osdc_start_request().

Also nuked is the accompanying bunch of pointers into the encoded
buffer that was used to update fields on each send - instead, the
entire front is re-encoded.  If we want to support target-&gt;name_len !=
base-&gt;name_len in the future, there is no other way, because oid is
surrounded by other fields in the encoded buffer.

Encoding OSD ops and adding data items to the request message were
mixed together in osd_req_encode_op().  While we want to re-encode OSD
ops, we don't want to add duplicate data items to the message when
resending, so all call to ceph_osdc_msg_data_add() are factored out
into a new setup_request_data().

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: switch to calc_target(), part 1</title>
<updated>2016-05-25T22:36:26Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2016-04-28T14:07:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=a66dd38309f5d9c66ec9bc7911ff8da8cc37bb9f'/>
<id>urn:sha1:a66dd38309f5d9c66ec9bc7911ff8da8cc37bb9f</id>
<content type='text'>
Replace __calc_request_pg() and most of __map_request() with
calc_target() and start using req-&gt;r_t.

ceph_osdc_build_request() however still encodes base_oid, because it's
called before calc_target() is and target_oid is empty at that point in
time; a printf in osdc_show() also shows base_oid.  This is fixed in
"libceph: switch to calc_target(), part 2".

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: pi-&gt;min_size, pi-&gt;last_force_request_resend</title>
<updated>2016-05-25T22:36:26Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2016-04-28T14:07:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=04812acf572ef41fd51c11e0bf3385f34c0e1b5b'/>
<id>urn:sha1:04812acf572ef41fd51c11e0bf3385f34c0e1b5b</id>
<content type='text'>
Add and decode pi-&gt;min_size and pi-&gt;last_force_request_resend.  These
are going to be used by calc_target().

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>libceph: variable-sized ceph_object_id</title>
<updated>2016-05-25T22:36:22Z</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2016-04-29T17:54:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=d30291b985d1854565d7f2c82a4457869d5265e8'/>
<id>urn:sha1:d30291b985d1854565d7f2c82a4457869d5265e8</id>
<content type='text'>
Currently ceph_object_id can hold object names of up to 100
(CEPH_MAX_OID_NAME_LEN) characters.  This is enough for all use cases,
expect one - long rbd image names:

- a format 1 header is named "&lt;imgname&gt;.rbd"
- an object that points to a format 2 header is named "rbd_id.&lt;imgname&gt;"

We operate on these potentially long-named objects during rbd map, and,
for format 1 images, during header refresh.  (A format 2 header name is
a small system-generated string.)

Lift this 100 character limit by making ceph_object_id be able to point
to an externally-allocated string.  Apart from being able to work with
almost arbitrarily-long named objects, this allows us to reduce the
size of ceph_object_id from &gt;100 bytes to 64 bytes.

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