search for: do_retry

Displaying 20 results from an estimated 20 matches for "do_retry".

2019 Oct 01
0
[nbdkit PATCH 3/6] retry: Check next_ops->can_FOO on retry
...*next, void *nxdata, int readonly) } h->readonly = readonly; + h->reopens = 0; return h; } @@ -132,6 +134,7 @@ retry_close (void *handle) { struct retry_handle *h = handle; + nbdkit_debug ("reopens needed: %u", h->reopens); free (h); } @@ -179,6 +182,7 @@ do_retry (struct retry_handle *h, data->delay *= 2; /* Reopen the connection. */ + h->reopens++; if (next_ops->reopen (nxdata, h->readonly || force_readonly) == -1) { /* If the reopen fails we treat it the same way as a command * failing. @@ -218,7 +222,16 @@ retry_pwrite...
2023 Jan 27
2
[nbdkit PATCH 1/2] retry: Add in retry support during .open
...;, h->reopens); - free (h->exportname); - free (h); -} - /* This function encapsulates the common retry logic used across all * data commands. If it returns true then the data command will retry * the operation. ???struct retry_data??? is stack data saved between @@ -247,6 +208,63 @@ do_retry (struct retry_handle *h, struct retry_data *data, return true; } +static void * +retry_open (nbdkit_next_open *next, nbdkit_context *nxdata, + int readonly, const char *exportname, int is_tls) +{ + struct retry_handle *h; + struct retry_data data = {0}; + + h = malloc (sizeof *h)...
2019 Sep 19
0
[PATCH nbdkit v3 2/3] Add new retry filter.
...struct retry_data’ is stack data saved between + * retries within the same command, and is initialized to zero. + */ +struct retry_data { + int retry; /* Retry number (0 = first time). */ + int delay; /* Seconds to wait before retrying. */ +}; + +static bool +do_retry (struct retry_handle *h, + struct retry_data *data, + struct nbdkit_next_ops *next_ops, void *nxdata, + int *err) +{ + /* If it's the first retry, initialize the other fields in *data. */ + if (data->retry == 0) + data->delay = initial_delay; + + again: +...
2019 Oct 04
1
Re: [nbdkit PATCH 2/5] retry: Check size before transactions
...a, > + uint32_t count, uint64_t offset, bool is_write, int *err) > +{ > + if ((int64_t) offset + count > next_ops->get_size (nxdata)) { > + *err = is_write ? ENOSPC : EIO; > + return false; > + } > + return true; > +} > + > static bool > do_retry (struct retry_handle *h, > struct retry_data *data, > @@ -204,6 +215,8 @@ retry_pread (struct nbdkit_next_ops *next_ops, void *nxdata, > int r; > > again: > + if (! valid_range (next_ops, nxdata, count, offset, false, err)) > + return -1; > r = next_o...
2019 Sep 19
0
[PATCH nbdkit 2/2] Add new retry filter.
...struct retry_data’ is stack data saved between + * retries within the same command, and is initialized to zero. + */ +struct retry_data { + int retry; /* Retry number (0 = first time). */ + int delay; /* Seconds to wait before retrying. */ +}; + +static bool +do_retry (struct retry_handle *h, + struct retry_data *data, + struct nbdkit_next_ops *next_ops, void *nxdata, + int *err) +{ + /* If it's the first retry, initialize the other fields in *data. */ + if (data->retry == 0) + data->delay = initial_delay; + + /* Log th...
2019 Oct 01
9
[nbdkit PATCH v2 0/6] Improve retry filter
Includes a rework of the previously posted patch for --run improvements (mostly with improved comments and commit message; I decided that waiting for the captive nbdkit to exit was overkill), and four new patches. The tests are intentionally separate, to allow rearranging the order of the series to see the failures being fixed. Eric Blake (6): server: Propagate unexpected nbdkit failure with
2023 Jan 28
1
[nbdkit PATCH 1/2] retry: Add in retry support during .open
...xportname); > - free (h); > -} > - > /* This function encapsulates the common retry logic used across all > * data commands. If it returns true then the data command will retry > * the operation. ???struct retry_data??? is stack data saved between > @@ -247,6 +208,63 @@ do_retry (struct retry_handle *h, struct retry_data *data, > return true; > } > > +static void * > +retry_open (nbdkit_next_open *next, nbdkit_context *nxdata, > + int readonly, const char *exportname, int is_tls) > +{ > + struct retry_handle *h; > + struct retry...
2019 Oct 04
0
[nbdkit PATCH 2/5] retry: Check size before transactions
...id_range (struct nbdkit_next_ops *next_ops, void *nxdata, + uint32_t count, uint64_t offset, bool is_write, int *err) +{ + if ((int64_t) offset + count > next_ops->get_size (nxdata)) { + *err = is_write ? ENOSPC : EIO; + return false; + } + return true; +} + static bool do_retry (struct retry_handle *h, struct retry_data *data, @@ -204,6 +215,8 @@ retry_pread (struct nbdkit_next_ops *next_ops, void *nxdata, int r; again: + if (! valid_range (next_ops, nxdata, count, offset, false, err)) + return -1; r = next_ops->pread (nxdata, buf, count, offset...
2023 Jan 27
2
[nbdkit PATCH 0/2] retry: add support for retrying .open
In https://bugzilla.redhat.com/show_bug.cgi?id=1841820, it was pointed out that the retry filter not retrying .open means that an ssh connection (such as in a vmx+ssh v2v conversion) fails when the ssh connection itself cannot be retried. A year ago, this was an inherent limitation of our retry implementation; but in the meantime, my work to allow filters to open independent backends has made it
2019 Sep 19
6
[PATCH nbdkit 0/2] Add new retry filter.
This is a retry filter implementation as outlined here: https://www.redhat.com/archives/libguestfs/2019-September/msg00167.html It is only lightly tested. One way to test it is to try an SSH copy (see the commit message for patch 2/2), and in the middle of the copy kill the per-connection sshd on the remote machine. You will see that the copy recovers after a few seconds. Add the nbdkit -v
2019 Sep 19
7
[PATCH nbdkit v2 0/4] Add new retry filter.
v1 was here: https://www.redhat.com/archives/libguestfs/2019-September/msg00199.html v2: - Adds a fairly simple yet comprehensive test using sh plugin. - Rebase and retest. Patch 1 is a misc patch not really related to the series. Rich.
2019 Sep 19
7
[PATCH nbdkit v3 0/3] Add new retry filter.
v2 was here: https://www.redhat.com/archives/libguestfs/2019-September/msg00221.html I think this is more like "the one". It handles reopen failing correctly, and there is a second test for that. I also ran my sshd tests locally and it worked in all scenarios I could think up (except of course sshd not being available at the start, but we want that to fail). Rich.
2020 Mar 31
2
[nbdkit PATCH] retry: Tweak error message
...ugh the rest of the image even after the first error. filters/retry/retry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filters/retry/retry.c b/filters/retry/retry.c index 11e5313b..db91d7ca 100644 --- a/filters/retry/retry.c +++ b/filters/retry/retry.c @@ -173,7 +173,7 @@ do_retry (struct retry_handle *h, again: /* Log the original errno since it will be lost when we retry. */ - nbdkit_debug ("retry %d: original errno = %d", data->retry+1, *err); + nbdkit_debug ("retry attempt %d: original errno = %d", data->retry, *err); if (data->re...
2020 Apr 01
2
Re: [nbdkit PATCH] retry: Tweak error message
On 4/1/20 5:12 AM, Richard W.M. Jones wrote: > On Tue, Mar 31, 2020 at 04:00:22PM -0500, Eric Blake wrote: >> The retry filter defaults to 5 retries, but when run with verbose >> details produces some confusing output: >> >> $ rm -f /tmp/inject; (sleep 5s; touch /tmp/inject)& ./nbdkit -f -v -U - \ >> null 1G --filter=retry --filter=noextents --filter=error
2019 Oct 03
7
[nbdkit PATCH 0/4] More work with retry safety
I'm still working on another set of patches to have reopen call .finalize/.prepare (so that another filter can safely appear between retry and the plugin), but for tonight, these are the patches I think are ready to go. Eric Blake (4): retry: Handle can_fua and can_fast_zero changes tests: Test retry with different fua/fast-zero flags server: Close backends if a filter's .open fails
2020 Apr 01
0
Re: [nbdkit PATCH] retry: Tweak error message
...t error. > > filters/retry/retry.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/filters/retry/retry.c b/filters/retry/retry.c > index 11e5313b..db91d7ca 100644 > --- a/filters/retry/retry.c > +++ b/filters/retry/retry.c > @@ -173,7 +173,7 @@ do_retry (struct retry_handle *h, > > again: > /* Log the original errno since it will be lost when we retry. */ > - nbdkit_debug ("retry %d: original errno = %d", data->retry+1, *err); > + nbdkit_debug ("retry attempt %d: original errno = %d", data->retry, *...
2020 Apr 02
0
Re: [nbdkit PATCH] retry: Tweak error message
...t; > initial try fails: > retry 1: original error > delay > retry 1 fails: > retry 2: original error > delay > retry 2 fails: > could not recover after 2 retries > > where we lost the log of the errno of retry 2. It's not printed, but also it's not lost. do_retry will immediately return false, causing the called function to return this final errno (hopefully back to the client). The reason for printing the "original errno" was because those intermediate errnos would otherwise be lost. Attached is my suggested patch - it's a small evolution o...
2019 Oct 04
6
[nbdkit PATCH 0/5] Another round of retry fixes
I still don't have .prepare/.finalize working cleanly across reopen, but did find a nasty bug where a botched assertion means we failed to notice reads beyond EOF in both the xz and retry filter. Refactoring backend.c will make .finalize work easier. Eric Blake (5): xz: Avoid reading beyond EOF retry: Check size before transactions tests: Test retry when get_size values change
2019 Oct 07
6
[nbdkit PATCH 0/5] More retry fixes
I think this is my last round of patches for issues I identified with the retry filter. With this in place, it should be safe to interject another filter in between retry and the plugin. Eric Blake (5): retry: Don't call into closed plugin tests: Refactor test-retry-reopen-fail.sh tests: Enhance retry test to cover failed reopen server: Move prepare/finalize/close recursion to
2020 Jul 21
4
[PATCH nbdkit] server: Pass the export name through filter .open calls.
...n *next, void *nxdata, int readonly) } h->readonly = readonly; + h->exportname = strdup (exportname); + if (h->exportname == NULL) { + nbdkit_error ("strdup: %m"); + free (h); + return NULL; + } h->reopens = 0; h->open = true; @@ -198,7 +206,8 @@ do_retry (struct retry_handle *h, /* Reopen the connection. */ h->reopens++; - if (next_ops->reopen (nxdata, h->readonly || force_readonly) == -1) { + if (next_ops->reopen (nxdata, + h->readonly || force_readonly, h->exportname) == -1) { /* If the reop...