[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 06/24] nbd/client: Simplify cookie vs. index computation
From: |
Eric Blake |
Subject: |
Re: [PATCH v4 06/24] nbd/client: Simplify cookie vs. index computation |
Date: |
Mon, 12 Jun 2023 14:13:43 -0500 |
User-agent: |
NeoMutt/20230517 |
On Mon, Jun 12, 2023 at 05:27:19PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> On 08.06.23 16:56, Eric Blake wrote:
> > Our code relies on a sentinel cookie value of zero for deciding when a
> > packet has been handled, as well as relying on array indices between 0
> > and MAX_NBD_REQUESTS-1 for dereferencing purposes. As long as we can
> > symmetrically convert between two forms, there is no reason to go with
> > the odd choice of using XOR with a random pointer, when we can instead
> > simplify the mappings with a mere offset of 1.
>
> Should we go further and use (uint64)-1 as a sentinel cookie value, and just
> use index as a cookie? Or, using zero cookie in a wire looks too asymmetric?
I thought about that too, but in the end I decided it would require
auditing more lines of code to make sure I was catching all places
where we currently expected a zero sentinel (where some of those uses
are not obvious, because of things like hiding behind g_new0). And
there is indeed the argument that if data corruption is going to
happen, it's harder to tell if an all-zero field on the wire was
intentional than a non-zero field.
>
> >
> > Signed-off-by: Eric Blake <eblake@redhat.com>
>
> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Thanks; for now, I'll just leave this one as-is.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
- [PATCH v4 03/24] nbd/server: Prepare for alternate-size headers, (continued)
- [PATCH v4 03/24] nbd/server: Prepare for alternate-size headers, Eric Blake, 2023/06/08
- [PATCH v4 04/24] nbd/server: Refactor to pass full request around, Eric Blake, 2023/06/08
- [PATCH v4 05/24] nbd: s/handle/cookie/ to match NBD spec, Eric Blake, 2023/06/08
- [PATCH v4 08/24] nbd: Use enum for various negotiation modes, Eric Blake, 2023/06/08
- [PATCH v4 06/24] nbd/client: Simplify cookie vs. index computation, Eric Blake, 2023/06/08
- [PATCH v4 14/24] nbd/server: Prepare to receive extended header requests, Eric Blake, 2023/06/08
- [PATCH v4 17/24] nbd/server: Enable initial support for extended headers, Eric Blake, 2023/06/08
- [PATCH v4 07/24] nbd/client: Add safety check on chunk payload length, Eric Blake, 2023/06/08
- [PATCH v4 10/24] nbd/client: Pass mode through to nbd_send_request, Eric Blake, 2023/06/08
- [PATCH v4 12/24] nbd: Prepare for 64-bit request effect lengths, Eric Blake, 2023/06/08