]> git.baikalelectronics.ru Git - kernel.git/commit
libceph: record residual bytes for all message data types
authorAlex Elder <elder@inktank.com>
Tue, 12 Mar 2013 04:34:22 +0000 (23:34 -0500)
committerSage Weil <sage@inktank.com>
Thu, 2 May 2013 04:17:24 +0000 (21:17 -0700)
commitad0fa50f91c50dfa65765116d9664f22d4410651
tree93db1b7a4941ab629abc36e31f8af51aa134aa3e
parenta3ff4b18766e3129d71c47a654488aae783555d4
libceph: record residual bytes for all message data types

All of the data types can use this, not just the page array.  Until
now, only the bio type doesn't have it available, and only the
initiator of the request (the rbd client) is able to supply the
length of the full request without re-scanning the bio list.  Change
the cursor init routines so the length is supplied based on the
message header "data_len" field, and use that length to intiialize
the "resid" field of the cursor.

In addition, change the way "last_piece" is defined so it is based
on the residual number of bytes in the original request.  This is
necessary (at least for bio messages) because it is possible for
a read request to succeed without consuming all of the space
available in the data buffer.

This resolves:
    http://tracker.ceph.com/issues/4427

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
include/linux/ceph/messenger.h
net/ceph/messenger.c