intel-git-ceph/ceph — pull request #1 by xiaoxichen (2014-12-29 06:31:36+00:00)
Title: Xiaoxi wip memstore

Basically these two patches enabled us to trace a request from client side to server side, the basic idea is:

1. use the address of completion structure to identify different IO in client side
2. expose tid, which is unique in a given client, but tids from different client may overlap, but since different client work on different volume(objects) , so we need
to unique identify a request in both client and server side.
3. In server side ,Chendi already use < caller name , tid> to unique identify this request. It's easy to add a mapping between oid and caller_id

Sample output:

[12:26:44.406358932] (+0.000166879) bigmem librbd:aio_write_enter: { cpu_id = 0 }, { imagectx = 0x7FD49C014830, name = "test", snap_name = "", read_only = 0, off = 21849210880, len = 4096, buf = 0x7FD49C000C10, buf_isnull = 0, buf_len = 4096, completion = 0x7FD49C02F9D0 }
[12:26:44.406443971] (+0.000085039) bigmem librados:rados_aio_create_completion_enter: { cpu_id = 0 }, { cb_arg = 0x7FD49C035A20, cb_complete = 0x0, cb_safe = 0x7FD4B43AD1A0 }
[12:26:44.406445651] (+0.000001680) bigmem librados:rados_aio_create_completion_exit: { cpu_id = 0 }, { retval = 0, cb_arg = 0x7FD49C035A20 ，completion = 0x7FD49C02AB50 }
[12:26:44.406477856] (+0.000032205) bigmem librbd:aio_subreq_sent: { cpu_id = 0 }, { req = 0x7FD49C035A20, tid = 0x39DA, oid = "rb.0.113c.6b8b4567.000000001459", off = 1081344, len = 4096, completion = 0x7FD49C02F9D0 }

[12:26:44.406483068] (+0.000005212) bigmem librbd:aio_write_exit: { cpu_id = 0 }, { retval = 0 }
[12:26:44.408222334] (+0.001739266) bigmem librados:rados_aio_get_return_value_enter: { cpu_id = 6 }, { completion = 0x7FD49C02AB50 }
[12:26:44.408224323] (+0.000001989) bigmem librados:rados_aio_get_return_value_exit: { cpu_id = 6 }, { retval = 0 }
[12:26:44.408243694] (+0.000019371) bigmem librbd:aio_complete_enter: { cpu_id = 6 }, { completion = 0x7FD49C02F9D0, rval = 0 }
[12:26:44.408245880] (+0.000002186) bigmem librbd:aio_complete_exit: { cpu_id = 6 }, { }