Displaying 18 results from an estimated 18 matches for "generate_lib_states_c".
2019 Jun 05
0
[PATCH libnbd 3/4] lib: Add set_state / get_state macros.
...| 3 +++
lib/is-state.c | 12 ++++++------
lib/rw.c | 4 ++--
6 files changed, 29 insertions(+), 26 deletions(-)
diff --git a/generator/generator b/generator/generator
index 8ed0a06..a3fbea9 100755
--- a/generator/generator
+++ b/generator/generator
@@ -2415,11 +2415,11 @@ let generate_lib_states_c () =
pr " enum state next_state = %s;\n" state_enum;
pr "\n";
pr " r = _enter_%s (h, &next_state, blocked);\n" state_enum;
- pr " if (h->state != next_state) {\n";
+ pr " if (get_state (h) != next_state) {\n"...
2019 Jun 05
0
[PATCH libnbd 4/4] lib: Atomically update h->state when leaving the locked region.
...| 2 +-
lib/internal.h | 15 +++++++++++++--
lib/rw.c | 4 ++--
6 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/generator/generator b/generator/generator
index a3fbea9..d198007 100755
--- a/generator/generator
+++ b/generator/generator
@@ -2415,11 +2415,11 @@ let generate_lib_states_c () =
pr " enum state next_state = %s;\n" state_enum;
pr "\n";
pr " r = _enter_%s (h, &next_state, blocked);\n" state_enum;
- pr " if (get_state (h) != next_state) {\n";
+ pr " if (get_next_state (h) != next_state) {...
2019 Jun 08
0
[PATCH libnbd v3] lib: Atomically update h->state when leaving the locked region.
...functions which return a constant (eg. [nbd_supports_uri])
+ * - functions which {b only} read from the atomic
+ * [get_public_state] and do nothing else with the handle.
*)
is_locked : bool;
(* Most functions can call set_error. For functions which are
@@ -2449,11 +2450,11 @@ let generate_lib_states_c () =
pr " enum state next_state = %s;\n" state_enum;
pr "\n";
pr " r = _enter_%s (h, &next_state, blocked);\n" state_enum;
- pr " if (get_state (h) != next_state) {\n";
+ pr " if (get_next_state (h) != next_state) {...
2019 Jun 05
9
[PATCH libnbd 0/4] lib: Atomically update h->state.
I need to think about this patch series a bit more, but it
does at least pass the tests.
Rich.
2019 Jun 05
1
[PATCH libnbd v2] lib: Atomically update h->state when leaving the locked region.
...* field and does nothing else with the handle.
+ * for a function which {b only} reads from the atomic
+ * [get_public_state] field and does nothing else with the handle.
*)
is_locked : bool;
(* Most functions can call set_error. For functions which are
@@ -2418,11 +2418,11 @@ let generate_lib_states_c () =
pr " enum state next_state = %s;\n" state_enum;
pr "\n";
pr " r = _enter_%s (h, &next_state, blocked);\n" state_enum;
- pr " if (get_state (h) != next_state) {\n";
+ pr " if (get_next_state (h) != next_state) {...
2019 Jun 08
4
[PATCH libnbd v3] lib: Atomically update h->state when leaving the locked region.
v1 was here:
https://www.redhat.com/archives/libguestfs/2019-June/thread.html#00055
v2 was here:
https://www.redhat.com/archives/libguestfs/2019-June/thread.html#00067
v3:
- Fix atomicly -> atomically in commit message.
- Fix a comment.
- Fix TOCTTOU: There is now an inline function generated called
<name>_is_permitted_state, and this is called twice, first outside
the
2019 Jun 25
2
Re: [libnbd PATCH 2/1] states: Avoid wasted send() when REPLY interrupts request
On Wed, Jun 19, 2019 at 09:11:52PM -0500, Eric Blake wrote:
> When we are blocked waiting for POLLOUT during a request, and happen
> to receive notice of POLLIN instead, we know that the work done in
> response to POLLIN will be non-blocking (it returns to %.READY as soon
> as it would block, which in turn jumps right back into ISSUE_COMMAND
> because we have a pending request not
2019 Jun 25
0
Re: [libnbd PATCH 2/1] states: Avoid wasted send() when REPLY interrupts request
...he server anyway); but it may still be possible to
come up with a scenario where it matters more.
Should I push with this squashed in?
diff --git i/generator/generator w/generator/generator
index 34e70da..cbf4e59 100755
--- i/generator/generator
+++ w/generator/generator
@@ -2541,6 +2541,7 @@ let generate_lib_states_c () =
pr "%s\n" state_machine_prologue;
pr "\n";
pr "#define SET_NEXT_STATE(s) (*blocked = false, *next_state = (s))\n";
+ pr "#define SET_NEXT_STATE_AND_BLOCK(s) (*next_state = (s))\n";
pr "\n";
(* The state machine C code fragments...
2019 May 28
1
Re: [PATCH] api: Add a special type for the flags argument.
...te.py | 2 +-
> python/t/460-block-status.py | 4 +--
> python/t/500-aio-pread.py | 2 +-
> python/t/510-aio-pwrite.py | 2 +-
> 6 files changed, 53 insertions(+), 25 deletions(-)
Definitely nicer than my poor attempt at OCaml hacking :)
> @@ -2494,6 +2495,21 @@ let generate_lib_states_c () =
>
> (* Generate C API. *)
>
> +(* Check the API definition. *)
> +let () =
> + (* Flags must only appear once in the final argument position. *)
> + List.iter (
> + fun (name, { args }) ->
> + let args = List.rev args in
> + match args with...
2019 May 28
2
[PATCH] api: Add a special type for the flags argument.
This applies on top of patches 1 & 2 here (instead of patch 3):
https://www.redhat.com/archives/libguestfs/2019-May/msg00206.html
https://www.redhat.com/archives/libguestfs/2019-May/msg00207.html
Rich.
2019 May 23
2
[PATCH libnbd] api: Get rid of nbd_connection.
This isn't quite finished because not all of the tests or examples
have been updated, but it demonstrates an idea: Should we forget about
the concept of having multiple connections managed under a single
handle?
In this patch there is a single ‘struct nbd_handle *’ which manages a
single state machine and connection (and therefore no nbd_connection).
To connect to a multi-conn server you must
2019 May 28
0
[PATCH] api: Add a special type for the flags argument.
...uot;,
"nr_entries")]);
- UInt32 "flags" ];
+ Flags "flags" ];
ret = RInt64;
shortdesc = "send block status to the NBD server";
longdesc = "\
@@ -2494,6 +2495,21 @@ let generate_lib_states_c () =
(* Generate C API. *)
+(* Check the API definition. *)
+let () =
+ (* Flags must only appear once in the final argument position. *)
+ List.iter (
+ fun (name, { args }) ->
+ let args = List.rev args in
+ match args with
+ | [] -> ()
+ | Flags _ :: xs
+...
2019 Jun 05
2
Re: [PATCH libnbd 4/4] lib: Atomically update h->state when leaving the locked region.
...-----
> lib/connect.c | 10 +++++-----
> lib/disconnect.c | 8 ++++----
> lib/handle.c | 2 +-
> lib/internal.h | 15 +++++++++++++--
> lib/rw.c | 4 ++--
> 6 files changed, 38 insertions(+), 24 deletions(-)
>
> @@ -2462,7 +2462,7 @@ let generate_lib_states_c () =
> pr " }\n";
> pr "\n";
> pr " set_error (EINVAL, \"external event %%d is invalid in state %%s\",\n";
> - pr " ev, nbd_internal_state_short_string (get_state (h)));\n";
> + pr " ev, nbd_i...
2019 Sep 26
0
[PATCH libnbd 2/2] api: Implement local command with systemd socket activation.
...CmdConnectTCP -> "cmd_connect_tcp"
| CmdConnectCommand -> "cmd_connect_command"
+ | CmdConnectSA -> "cmd_connect_sa"
| CmdIssue -> "cmd_issue"
(* Find a state in the state machine hierarchy by path. The [path]
@@ -3484,7 +3530,8 @@ let generate_lib_states_c () =
| NotifyWrite -> pr " r |= LIBNBD_AIO_DIRECTION_WRITE;\n"
| CmdCreate
| CmdConnectSockAddr
- | CmdConnectUnix | CmdConnectTCP | CmdConnectCommand
+ | CmdConnectUnix | CmdConnectTCP
+ | CmdConnectCommand | CmdConnectSA...
2019 May 22
8
[PATCH libnbd v2 0/6] Test connection states.
Patch 1/6 was posted before and I didn't change it:
https://www.redhat.com/archives/libguestfs/2019-May/thread.html#00134
That doesn't necessarily mean I shouldn't change it, I'm posting
it again because the other patches depend on it.
The main change in this series is we add three new API functions:
nbd_aio_is_created - connection has just been created
2019 Jun 29
0
[libnbd PATCH 2/6] generator: Allow DEAD state actions to run
...p actions;
+ * the earlier state that wants to transition to DEAD should return 0
+ * rather than -1, so as not to bypass this cleanup.
*
* An external event is something like the file descriptor being
* ready to read or write, or the main program calling a function
@@ -2708,7 +2719,10 @@ let generate_lib_states_c () =
pr " abort (); /* Should never happen, but keeps GCC happy. */\n";
pr " }\n";
pr "\n";
- pr " if (r == -1) return -1;\n";
+ pr " if (r == -1) {\n";
+ pr " assert (nbd_get_error () != NULL);\n";
+ pr &qu...
2019 Sep 26
5
[PATCH libnbd 1/2] lib: Avoid killing subprocess twice.
If the user calls nbd_kill_subprocess, we shouldn't kill the process
again when we close the handle (since the process has likely gone and
we might be killing a different process).
---
lib/handle.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/handle.c b/lib/handle.c
index 2af25fe..5ad818e 100644
--- a/lib/handle.c
+++ b/lib/handle.c
@@ -315,6 +315,8 @@
2019 Jun 29
19
[libnbd PATCH 0/6] new APIs: aio_in_flight, aio_FOO_notify
I still need to wire in the use of *_notify functions into nbdkit to
prove whether it makes the code any faster or easier to maintain, but
at least the added example shows one good use case for the new API.
Eric Blake (6):
api: Add nbd_aio_in_flight
generator: Allow DEAD state actions to run
generator: Allow Int64 in callbacks
states: Prepare for aio notify callback
api: Add new