Displaying 14 results from an estimated 14 matches for "backend_flush".
2020 Mar 16
1
nbdkit Assertion `h->can_flush == 1' failed on Arch
https://aur.archlinux.org/packages/nbdkit/#comment-733981 reports that
tests-parallel-nbd.sh hangs. Looking at the log file from the test
reveals:
nbdkit: backend.c:523: backend_flush: Assertion `h->can_flush == 1' failed.
I've attached the full log. If you want to see other logs from the
run (probably not relevant) then download
https://svenne.dk/nbdkit-20200315/nbdkit-logs-20200315.tar.gz
I believe the assertion comes from calling flush when can_flush
previously...
2020 Feb 12
0
[PATCH nbdkit 3/3] server: filters: Remove struct b_h.
...ackend_pwrite (b_h->b, buf, count, offset, flags,
- err);
+ struct backend *b_next = nxdata;
+ return backend_pwrite (b_next, buf, count, offset, flags, err);
}
static int
next_flush (void *nxdata, uint32_t flags, int *err)
{
- struct b_h *b_h = nxdata;
- return backend_flush (b_h->b, flags, err);
+ struct backend *b_next = nxdata;
+ return backend_flush (b_next, flags, err);
}
static int
next_trim (void *nxdata, uint32_t count, uint64_t offset, uint32_t flags,
int *err)
{
- struct b_h *b_h = nxdata;
- return backend_trim (b_h->b, count, offs...
2020 Feb 12
5
[PATCH nbdkit 1/3] server: Rename global backend pointer to "top".
...case NBD_CMD_WRITE:
if (flags & NBD_CMD_FLAG_FUA)
f |= NBDKIT_FLAG_FUA;
- if (backend_pwrite (backend, buf, count, offset, f, &err) == -1)
+ if (backend_pwrite (top, buf, count, offset, f, &err) == -1)
return err;
break;
case NBD_CMD_FLUSH:
- if (backend_flush (backend, 0, &err) == -1)
+ if (backend_flush (top, 0, &err) == -1)
return err;
break;
case NBD_CMD_TRIM:
if (flags & NBD_CMD_FLAG_FUA)
f |= NBDKIT_FLAG_FUA;
- if (backend_trim (backend, count, offset, f, &err) == -1)
+ if (backend_trim (top, co...
2020 Feb 11
0
[PATCH nbdkit 3/3] server: Remove explicit connection parameter, use TLS instead.
...t connection *conn,
+ __attribute__((__nonnull__ (1, 2, 6)));
+extern int backend_pwrite (struct backend *b,
const void *buf, uint32_t count, uint64_t offset,
uint32_t flags, int *err)
- __attribute__((__nonnull__ (1, 2, 3, 7)));
-extern int backend_flush (struct backend *b, struct connection *conn,
+ __attribute__((__nonnull__ (1, 2, 6)));
+extern int backend_flush (struct backend *b,
uint32_t flags, int *err)
- __attribute__((__nonnull__ (1, 2, 4)));
-extern int backend_trim (struct backend *b, struct connection *conn,...
2020 Feb 11
4
[PATCH nbdkit v2 0/3] server: Remove explicit connection parameter.
v1 was here:
https://www.redhat.com/archives/libguestfs/2020-February/msg00081.html
v2 replaces
struct connection *conn = GET_CONN;
with
GET_CONN;
which sets conn implicitly and asserts that it is non-NULL.
If we actually want to test if conn is non-NULL or behave
differently, then you must use threadlocal_get_conn() instead,
and some existing uses do that.
Rich.
2020 Feb 11
5
[PATCH nbdkit 0/3] server: Remove explicit connection parameter.
The third patch is a large but mechanical change which gets rid of
passing around struct connection * entirely within the server,
preferring instead to reference the connection through thread-local
storage.
I hope this is a gateway to simplifying other parts of the code.
Rich.
2020 Feb 12
2
[nbdkit PATCH] filters: Remove most next_* wrappers
..., uint32_t count, uint64_t offset,
- uint32_t flags, int *err)
-{
- struct backend *b_next = nxdata;
- return backend_pwrite (b_next, buf, count, offset, flags, err);
-}
-
-static int
-next_flush (void *nxdata, uint32_t flags, int *err)
-{
- struct backend *b_next = nxdata;
- return backend_flush (b_next, flags, err);
-}
-
-static int
-next_trim (void *nxdata, uint32_t count, uint64_t offset, uint32_t flags,
- int *err)
-{
- struct backend *b_next = nxdata;
- return backend_trim (b_next, count, offset, flags, err);
-}
-
-static int
-next_zero (void *nxdata, uint32_t count, uint6...
2020 Feb 12
0
[PATCH nbdkit 2/3] server: Rename ‘struct b_conn_handle’ to plain ‘struct handle’.
...496,7 +496,7 @@ backend_pwrite (struct backend *b,
uint32_t flags, int *err)
{
GET_CONN;
- struct b_conn_handle *h = &conn->handles[b->i];
+ struct handle *h = get_handle (conn, b->i);
bool fua = !!(flags & NBDKIT_FLAG_FUA);
int r;
@@ -520,7 +520,7 @@ backend_flush (struct backend *b,
uint32_t flags, int *err)
{
GET_CONN;
- struct b_conn_handle *h = &conn->handles[b->i];
+ struct handle *h = get_handle (conn, b->i);
int r;
assert (h->handle && (h->state & HANDLE_CONNECTED));
@@ -540,7 +540,7 @@ back...
2019 Aug 30
0
[nbdkit PATCH 9/9] server: Move command validation from protocol.c to backend.c
...pwrite", flags)) {
+ *err = EROFS;
+ return -1;
+ }
+ if (invalid_range (b, conn, "pwrite", offset, count)) {
+ *err = ENOSPC;
+ return -1;
+ }
r = b->pwrite (b, conn, buf, count, offset, flags, err);
if (r == -1)
assert (*err);
@@ -310,11 +359,18 @@ int
backend_flush (struct backend *b, struct connection *conn,
uint32_t flags, int *err)
{
+ struct b_conn_handle *h = &conn->handles[b->i];
int r;
assert (flags == 0);
debug ("%s: flush", b->name);
+ assert (h->can_flush >= 0);
+ if (h->can_flush == 0)...
2020 Feb 11
1
[nbdkit PATCH] filters: Make nxdata persistent
...handle;
+ assert (nxdata->b == b->next && nxdata->conn == conn);
if (f->filter.flush)
- return f->filter.flush (&next_ops, &nxdata, handle, flags, err);
+ return f->filter.flush (&next_ops, nxdata, nxdata->handle, flags, err);
else
return backend_flush (b->next, conn, flags, err);
}
@@ -623,11 +659,12 @@ filter_trim (struct backend *b, struct connection *conn, void *handle,
uint32_t flags, int *err)
{
struct backend_filter *f = container_of (b, struct backend_filter, backend);
- struct b_conn nxdata = { .b = b->next, .co...
2019 Aug 30
15
[nbdkit PATCH 0/9] can_FOO caching, more filter validation
It's easy to use the sh script to demonstrate that nbdkit is
inefficiently calling into .get_size, .can_fua, and friends more than
necessary. We've also commented on the list in the past that it would
be nice to ensure that when filters call into next_ops, they are not
violating constraints (as we've have to fix several bugs in the past
where we did not have such checking to protect
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
2019 Dec 12
9
[PATCH nbdkit 0/7] server: Allow datapath debug messages to be suppressed.
The immediate reason for this patch is to reduce the amount of
debugging in virt-v2v with using the virt-v2v -v option (because this
implies running nbdkit in verbose mode too). Most of the messages are
datapath ones about pread/pwrite requests, and in fact as we've added
more filters on top of nbdkit these messages have got more and more
verbose. However they are not particularly
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