libceph: fix linger request requeueing
authorSage Weil <sage@newdream.net>
Wed, 6 Apr 2011 16:09:16 +0000 (09:09 -0700)
committerSage Weil <sage@newdream.net>
Wed, 6 Apr 2011 16:09:16 +0000 (09:09 -0700)
commit77f38e0eeac290827f41fd2215ab82546b8f73b8
treef3fe7b7989188f39c7618848ac30754c41c6eee0
parent4b2a58abd1e17c0ee53c8dded879e015917cca67
libceph: fix linger request requeueing

Fix the request transition from linger -> normal request.  The key is to
preserve r_osd and requeue on the same OSD.  Reregister as a normal request,
add the request to the proper queues, then unregister the linger.  Fix the
unregister helper to avoid clearing r_osd (and also simplify the parallel
check in __unregister_request()).

Reported-by: Henry Chang <henry.cy.chang@gmail.com>
Signed-off-by: Sage Weil <sage@newdream.net>
net/ceph/osd_client.c