ceph: control access to page vector for incoming data
authorSage Weil <sage@newdream.net>
Tue, 22 Dec 2009 18:45:45 +0000 (10:45 -0800)
committerSage Weil <sage@newdream.net>
Wed, 23 Dec 2009 16:17:20 +0000 (08:17 -0800)
commit350b1c32ea58d29e25d63fc25e92dd48f9339546
tree4b9e8b06de8fd7e07c2292307e9a67c121f1e079
parentec302645f4a9bd9ec757c30d185557e1c0972c1a
ceph: control access to page vector for incoming data

When we issue an OSD read, we specify a vector of pages that the data is to
be read into.  The request may be sent multiple times, to multiple OSDs, if
the osdmap changes, which means we can get more than one reply.

Only read data into the page vector if the reply is coming from the
OSD we last sent the request to.  Keep track of which connection is using
the vector by taking a reference.  If another connection was already
using the vector before and a new reply comes in on the right connection,
revoke the pages from the other connection.

Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/messenger.c
fs/ceph/messenger.h
fs/ceph/osd_client.c
fs/ceph/osd_client.h