On 07/08/2014 06:18 AM, Ilya Dryomov wrote: >> > The only question that leaves me with is, does >> > ceph_osdc_cancel_request() need to include the >> > call to complete_request() that's present in >> > ceph_osdc_wait_request()? > I don't think so - I mentioned it in the ceph_osdc_cancel_request() > function comment. ceph_osdc_cancel_request() is supposed to be used by > higher layers - rbd, cephfs - and exactly because their completion > logic is decoupled from libceph completions (as you have brilliantly > explained above) it's the higher layers who should be taking care of > it. IOW higher layers are in charge and are supposed to know what and > when they are cancelling. I noticed that comment only after sending my message. RBD doesn't use the safe completion, only the FS client does, and I was pretty focused on RBD behavior while looking at this. I was trying to conceptualize how (from the perspective of the upper layer) the safe completion differs from the "normal" completion. It's possible that an "I have your request" (normal completion) *also* carries with it the "your request has completed" (safe completion) indication, but the higher layer caller has no way of knowing that. Maybe I should flip my question around, and ask, why should the ceph_osdc_cancel_request() include the call to complete_request()? The answer lies in details of the file system client, and I'm not in a position right now to dive into that. Whether it's called in ceph_osdc_cancel_request() or not has no effect on RBD. Anyway, your response is fine with me, thank you. -Alex -- 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