[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v1 5/7] tools/livepatch: Remove pointless retry loop
On Mon, Dec 12, 2016 at 04:18:08PM +0000, Ross Lagerwall wrote: > The default timeout in the hypervisor for a livepatch operation is 30 ms, > but xen-livepatch currently waits for up to 30 seconds for the operation > to complete. Instead, remove the retry loop and simply wait for 2 * 30 ms > for the operation to complete. The extra period is to account for the > time to actually start the operation. > > Furthermore, have xen-livepatch set the hypervisor timeout rather than > relying on the hypervisor default since the tool doesn't know how long > it will be. Use nanosleep rather than usleep since usleep has been > removed from POSIX.1-2008. > > Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> > --- > tools/misc/xen-livepatch.c | 102 > ++++++++++++++++++++++----------------------- > 1 file changed, 51 insertions(+), 51 deletions(-) > > diff --git a/tools/misc/xen-livepatch.c b/tools/misc/xen-livepatch.c > index afd8c48..d683860 100644 > --- a/tools/misc/xen-livepatch.c > +++ b/tools/misc/xen-livepatch.c > @@ -7,6 +7,7 @@ > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > +#include <time.h> > #include <sys/mman.h> > #include <sys/stat.h> > #include <unistd.h> Please order the inclusion in alphabetic order. > @@ -265,17 +266,31 @@ struct { > }, > }; > > -/* Go around 300 * 0.1 seconds = 30 seconds. */ > -#define RETRIES 300 > -/* aka 0.1 second */ > -#define DELAY 100000 > +/* The hypervisor timeout for the live patching operation is 30 msec, > + * but it could take some time for the operation to start, so wait twice > + * that period. */ > +#define HYPERVISOR_TIMEOUT 30000000 /* in ns */ Use HYPERVISOR_TIMEOUT_NS and remove the comment? > +#define DELAY (2 * HYPERVISOR_TIMEOUT) > + > +static void nanosleep_retry(long ns) > +{ > + struct timespec req, rem; > + int rc; > + > + rem.tv_sec = 0; > + rem.tv_nsec = ns; > + > + do { > + req = rem; > + rc = nanosleep(&req, &rem); > + } while (rc != -1 && errno == EINTR); Coding style. And shouldn't it be ( rc == -1 && errno == EINTR ) ? I don't really have more comment on this approach. Wei. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |