Message ID | 20221006081222.2606746-3-marcandre.lureau@redhat.com |
---|---|
State | New |
Headers | show |
Series | io/command: implement portable spawn | expand |
On Thu, Oct 06, 2022 at 12:12:19PM +0400, marcandre.lureau@redhat.com wrote: > From: Marc-André Lureau <marcandre.lureau@redhat.com> > > The /io/channel/command/echo tests run the reader side and the writer > side with the same underlying command channel. Setting the blocking mode > of the fd/handles while the other end is already reading/writing may > create issues (deadlock in win32 when earlier attempt of this series > were using SetNamedPipeHandleState). Let's just do it before spawning > the threads to avoid further concurrency issues. Curious, makes me wonder why I did this in the threads in the first place... > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > tests/unit/io-channel-helpers.c | 9 +++------ > 1 file changed, 3 insertions(+), 6 deletions(-) Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> > > diff --git a/tests/unit/io-channel-helpers.c b/tests/unit/io-channel-helpers.c > index ff156ed3c4..c0799c21c2 100644 > --- a/tests/unit/io-channel-helpers.c > +++ b/tests/unit/io-channel-helpers.c > @@ -25,7 +25,6 @@ > struct QIOChannelTest { > QIOChannel *src; > QIOChannel *dst; > - bool blocking; > size_t len; > size_t niov; > char *input; > @@ -42,8 +41,6 @@ static gpointer test_io_thread_writer(gpointer opaque) > { > QIOChannelTest *data = opaque; > > - qio_channel_set_blocking(data->src, data->blocking, NULL); > - > qio_channel_writev_all(data->src, > data->inputv, > data->niov, > @@ -58,8 +55,6 @@ static gpointer test_io_thread_reader(gpointer opaque) > { > QIOChannelTest *data = opaque; > > - qio_channel_set_blocking(data->dst, data->blocking, NULL); > - > qio_channel_readv_all(data->dst, > data->outputv, > data->niov, > @@ -113,7 +108,9 @@ void qio_channel_test_run_threads(QIOChannelTest *test, > > test->src = src; > test->dst = dst; > - test->blocking = blocking; > + > + qio_channel_set_blocking(test->dst, blocking, NULL); > + qio_channel_set_blocking(test->src, blocking, NULL); > > reader = g_thread_new("reader", > test_io_thread_reader, > -- > 2.37.3 > With regards, Daniel
diff --git a/tests/unit/io-channel-helpers.c b/tests/unit/io-channel-helpers.c index ff156ed3c4..c0799c21c2 100644 --- a/tests/unit/io-channel-helpers.c +++ b/tests/unit/io-channel-helpers.c @@ -25,7 +25,6 @@ struct QIOChannelTest { QIOChannel *src; QIOChannel *dst; - bool blocking; size_t len; size_t niov; char *input; @@ -42,8 +41,6 @@ static gpointer test_io_thread_writer(gpointer opaque) { QIOChannelTest *data = opaque; - qio_channel_set_blocking(data->src, data->blocking, NULL); - qio_channel_writev_all(data->src, data->inputv, data->niov, @@ -58,8 +55,6 @@ static gpointer test_io_thread_reader(gpointer opaque) { QIOChannelTest *data = opaque; - qio_channel_set_blocking(data->dst, data->blocking, NULL); - qio_channel_readv_all(data->dst, data->outputv, data->niov, @@ -113,7 +108,9 @@ void qio_channel_test_run_threads(QIOChannelTest *test, test->src = src; test->dst = dst; - test->blocking = blocking; + + qio_channel_set_blocking(test->dst, blocking, NULL); + qio_channel_set_blocking(test->src, blocking, NULL); reader = g_thread_new("reader", test_io_thread_reader,