[Qemu-devel] [PATCH] nbd/server: fix NBD_CMD_CACHE

Vladimir Sementsov-Ogievskiy posted 1 patch 5 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20181003144738.70670-1-vsementsov@virtuozzo.com
Test docker-clang@ubuntu failed
Test checkpatch passed
nbd/server.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[Qemu-devel] [PATCH] nbd/server: fix NBD_CMD_CACHE
Posted by Vladimir Sementsov-Ogievskiy 5 years, 6 months ago
We should not go to structured-read branch on CACHE command, fix that.

Bug intoroduced in bc37b06a5cde24 "nbd/server: introduce NBD_CMD_CACHE"
with the whole feature and affects 3.0.0 release.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
 nbd/server.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/nbd/server.c b/nbd/server.c
index c3dd402b45..1fba21414b 100644
--- a/nbd/server.c
+++ b/nbd/server.c
@@ -2177,7 +2177,8 @@ static coroutine_fn int nbd_do_cmd_read(NBDClient *client, NBDRequest *request,
     }
 
     if (client->structured_reply && !(request->flags & NBD_CMD_FLAG_DF) &&
-        request->len) {
+        request->len && request->type != NBD_CMD_CACHE)
+    {
         return nbd_co_send_sparse_read(client, request->handle, request->from,
                                        data, request->len, errp);
     }
-- 
2.18.0


Re: [Qemu-devel] [PATCH] nbd/server: fix NBD_CMD_CACHE
Posted by Eric Blake 5 years, 6 months ago
On 10/3/18 9:47 AM, Vladimir Sementsov-Ogievskiy wrote:
> We should not go to structured-read branch on CACHE command, fix that.
> 
> Bug intoroduced in bc37b06a5cde24 "nbd/server: introduce NBD_CMD_CACHE"

s/intoroduced/introduced/

> with the whole feature and affects 3.0.0 release.

Ouch. It's because I don't have an NBD client that can issue the 
command, so the server side got released without sufficient testing. Is 
there some way we could enhance qemu-io as NBD client to issue such a 
command?

> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

CC: qemu-stable@nongnu.org

Reviewed-by: Eric Blake <eblake@redhat.com>

Will queue through my NBD tree.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Re: [Qemu-devel] [PATCH] nbd/server: fix NBD_CMD_CACHE
Posted by Vladimir Sementsov-Ogievskiy 5 years, 6 months ago
03.10.2018 17:57, Eric Blake wrote:
> On 10/3/18 9:47 AM, Vladimir Sementsov-Ogievskiy wrote:
>> We should not go to structured-read branch on CACHE command, fix that.
>>
>> Bug intoroduced in bc37b06a5cde24 "nbd/server: introduce NBD_CMD_CACHE"
>
> s/intoroduced/introduced/
>
>> with the whole feature and affects 3.0.0 release.
>
> Ouch. It's because I don't have an NBD client that can issue the 
> command, so the server side got released without sufficient testing. 
> Is there some way we could enhance qemu-io as NBD client to issue such 
> a command?

may be, just add qemu-io command, like x-debug-nbd-cmd, which will just 
send any nbd command? and prints all server replies? Then we'll be able 
to write any unit tests on nbd-server. It's not the first time the 
problem arise..

>
>>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>
> CC: qemu-stable@nongnu.org
>
> Reviewed-by: Eric Blake <eblake@redhat.com>
>
> Will queue through my NBD tree.
>


-- 
Best regards,
Vladimir

Re: [Qemu-devel] [Qemu-block] [PATCH] nbd/server: fix NBD_CMD_CACHE
Posted by Kevin Wolf 5 years, 6 months ago
Am 03.10.2018 um 17:10 hat Vladimir Sementsov-Ogievskiy geschrieben:
> 03.10.2018 17:57, Eric Blake wrote:
> > On 10/3/18 9:47 AM, Vladimir Sementsov-Ogievskiy wrote:
> >> We should not go to structured-read branch on CACHE command, fix that.
> >>
> >> Bug intoroduced in bc37b06a5cde24 "nbd/server: introduce NBD_CMD_CACHE"
> >
> > s/intoroduced/introduced/
> >
> >> with the whole feature and affects 3.0.0 release.
> >
> > Ouch. It's because I don't have an NBD client that can issue the 
> > command, so the server side got released without sufficient testing. 
> > Is there some way we could enhance qemu-io as NBD client to issue such 
> > a command?
> 
> may be, just add qemu-io command, like x-debug-nbd-cmd, which will just 
> send any nbd command? and prints all server replies? Then we'll be able 
> to write any unit tests on nbd-server. It's not the first time the 
> problem arise..

Shouldn't it be easy to write a simple NBD client in Python and then use
that for test cases? I don't see why this needs to be in qemu-io, and
testing illegal requests is certainly easier with a custom client.

Kevin

Re: [Qemu-devel] [Qemu-block] [PATCH] nbd/server: fix NBD_CMD_CACHE
Posted by Eric Blake 5 years, 6 months ago
On 10/4/18 8:02 AM, Kevin Wolf wrote:
> Am 03.10.2018 um 17:10 hat Vladimir Sementsov-Ogievskiy geschrieben:
>> 03.10.2018 17:57, Eric Blake wrote:
>>> On 10/3/18 9:47 AM, Vladimir Sementsov-Ogievskiy wrote:
>>>> We should not go to structured-read branch on CACHE command, fix that.
>>>>
>>>> Bug intoroduced in bc37b06a5cde24 "nbd/server: introduce NBD_CMD_CACHE"
>>>
>>> s/intoroduced/introduced/
>>>
>>>> with the whole feature and affects 3.0.0 release.
>>>
>>> Ouch. It's because I don't have an NBD client that can issue the
>>> command, so the server side got released without sufficient testing.
>>> Is there some way we could enhance qemu-io as NBD client to issue such
>>> a command?
>>
>> may be, just add qemu-io command, like x-debug-nbd-cmd, which will just
>> send any nbd command? and prints all server replies? Then we'll be able
>> to write any unit tests on nbd-server. It's not the first time the
>> problem arise..
> 
> Shouldn't it be easy to write a simple NBD client in Python and then use
> that for test cases? I don't see why this needs to be in qemu-io, and
> testing illegal requests is certainly easier with a custom client.

Indeed, and we already have tests/qemu-iotests/nbd-fault-injector.py 
which implements a custom server (unfortunately, it has not been updated 
to use newstyle yet!), as a reference for implementing a similar custom 
client.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org