On Wed, May 22, 2019 at 04:29:03PM -0500, Eric Blake wrote:
+int64_t
+nbd_unlocked_aio_peek_command_completed (struct nbd_connection *conn)
+{
+ if (conn->cmds_done != NULL)
+ return conn->cmds_done->handle;
+
+ if (conn->cmds_in_flight != NULL || conn->cmds_to_issue != NULL)
+ set_error (0, "no in-flight command has completed yet");
+ else
+ set_error (0, "no commands are in flight");
+ return -1;
+}
--
There are two ways I think we could improve this. Either:
(1) I believe that all handles are >= 1 (and if this isn't true, it's
easy to achieve by starting the h->unique counter at 1). Return
0 to mean "no completed command". Of course "no commands in
flight" is still an error.
I think (1) is more elegant, but the alternative is:
(2) Use the errno field (currently 0) to distinguish the two cases
with a suitable errno value (EAGAIN maybe?) for the "no completed
command" case.
No need to post this patch again, ACK if you make this kind of change.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/