On Mon, Jun 30, 2014 at 5:39 PM, Alex Elder <[email protected]> wrote:
> On 06/25/2014 12:16 PM, Ilya Dryomov wrote:
>> Introduce ceph_osdc_cancel_request() intended for canceling requests
>> from the higher layers (rbd and cephfs). Because higher layers are in
>> charge and are supposed to know what and when they are canceling, the
>> request is not completed, only unref'ed and removed from the libceph
>> data structures.
>
> This seems reasonable.
>
> But you make two changes here that I'd like to see a little
> more explanation on. They seem significant enough to warrant
> a little more attention in the commit description.
>
> - __cancel_request() is no longer called when
> ceph_osdc_wait_request() fails due to an
> an interrupt. This is my main concern, and I
> plan to work through it but I'm in a small hurry
> right now.
Perhaps it should have been a separate commit. __unregister_request()
revokes r_request, so I opted for not trying to do it twice. As for
the r_sent condition and assignment, it doesn't seem to make much of
a difference, given that the request is about to be unregistered
anyway.
> - __unregister_linger_request() is now called when
> a request is canceled, but it wasn't before. (Since
> we're consistent about setting the r_linger flag
> this should be fine, but it *is* a behavior change.)
The general goal here is to make ceph_osdc_cancel_request() cancel
*any* request correctly, so if r_linger is set, which means that the
request in question *could* be lingering, __unregister_linger_request()
is called.
Thanks,
Ilya
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html