|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 16/27] tools/libxl: Infrastructure for reading a libxl migration v2 stream
Andrew Cooper writes ("Re: [PATCH v2 16/27] tools/libxl: Infrastructure for
reading a libxl migration v2 stream"):
...
> > This function has one call site. As an alternative to abolishing
> > stream_failed, maybe stream_failed should be renamed to
> > `stream_complete' and then the call site for stream_success could
> > simply say `stream_complete(egc, stream, 0)' ?
>
> I have to admit that I find that paragdim specifically confusing to
> read, which is why I deliberately split the _success() and _failed()
> cases.
I'm not sure why it's confusing. It means you have a unified exit
path.
> >> +static void stream_failed(libxl__egc *egc,
> >> + libxl__stream_read_state *stream, int rc)
> >> +{
...
> >> + if (stream->running) {
> >> + stream_done(egc, stream);
> > Is the check for running necessary here ?
>
> Yes. An _abort() call from outside can happen at any arbitrary time.
> We must not deliver the callback twice.
Obviously. But it is surely a serious bug if stream_failed is called
when the stream is not running, because stream_failed is then in
flight in circumstances where the caller might reuse the
libxl__stream_read_state.
> >> + sprintf(path, XC_DEVICE_MODEL_RESTORE_FILE".%u", dcs->guest_domid);
> >> +
> >> + libxl__carefd_begin();
> >> + writefd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0600);
> > Does this need to be a carefd ? This is going to be a small amount of
> > data, and the worst that happens is some other process inherits an fd
> > onto a file which might otherwise be deleted sooner.
>
> Who says the file will be deleted? That will be down to the exact
> semantics of the device model.
If the file is not going to be deleted then it is even less necessary.
> (I was asked to switch from a plain open() to a carefd as part of review
> from v1).
I tried to find this and all I found was Ian C saying:
Also, should consider whether this fd needs to be subject to the
carefd machinery.
I think it doesn't. But overuse of the carefd machinery is just
pointless and not actually incorrect. So:
> > If it does, then please use libxl__carefd_opened. (Best would be to
> > libxl__carefd_opened to save and restore errno and then you can call
> > it unconditionally after the open.)
>
> I will go down this route.
... if you do this it won't be a blocker.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |