On Mon, Jun 30, 2014 at 5:39 PM, Alex Elder <elder@xxxxxxxx> 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html