[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.6 3/8] tools/libxl: Make libxl__conversion_helper_abort() safe to use
Andrew Cooper writes ("[PATCH for-4.6 3/8] tools/libxl: Make libxl__conversion_helper_abort() safe to use"): > STATE_AO_GC(chs->ao) uses chs->ao before determining whether the helper > is active. In the case that the helper has not been started, its ao > will not have been set up. I am not happy with this, because we are further complicating the rules for the abstract state of the chs. As I said on irc, 19:07 <Diziet> The problem here is that the rules are not written down clearly enough. In this particular case the set of abstract states is written down. 19:07 <Diziet> The Undefined / Idle / Active thing from libxl__ev_* doesn't quite apply because libxl__ev_blah_register takes things as arguments, rather than expecting the caller to fill them in. So at the very least if you are to do this I would like to see a comment explicitly and formally setting out the abstract states of a chs. For examples of how to write this, look for the doc comments which show up in searches for: - libxl__xs_transaction_start - libxl__ev_KIND_register This comment should explain that libxl__conversion_helper_abort is a special case. I think you will find that trying to write this down in this form results in your proposal requiring an extra abstract state. Instead, I think it would be preferable for all similar operations to all work the same. And then, such a comment about the abstract states could be written in a general way so that it describes libxl__datacopier and libxl__openpty too. In this case IMO while it would be nice for there to be a comment, it's not essential, because it is (very nearly) implied by the comment about libxl__ev_KIND_*, when read together with the comment saying the caller must fill in ao. So as I say I think it is simpler to require that the foostate->ao be valid on all entries to libxl__foo_abort(). This is indeed the current behaviour of: - libxl__datacopier_kill - libxl__save_helper_abort I think it is only an accident that libxl__xswait_stop and libxl__stream_{read,write}_abort don't dereference xswa->ao. I would also like a comment (which is currently missing) about who is supposed to fill in the public fields in the chs. See for example the comment at the top of libxl__datacopier_state. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |