[Libguestfs] [nbdkit PATCH 6/9] server: Cache per-connection can_FOO flags

Eric Blake eblake at redhat.com
Fri Aug 30 13:35:35 UTC 2019


On 8/30/19 8:24 AM, Richard W.M. Jones wrote:
> On Thu, Aug 29, 2019 at 10:08:26PM -0500, Eric Blake wrote:
>> @@ -232,8 +257,8 @@ handle_request (struct connection *conn,
>>                  void *buf, struct nbdkit_extents *extents)
>>  {
>>    uint32_t f = 0;
>> -  bool fua = conn->can_fua && (flags & NBD_CMD_FLAG_FUA);
>>    int err = 0;
>> +  int r;
>>
>>    /* Clear the error, so that we know if the plugin calls
>>     * nbdkit_set_error() or relied on errno.  */
>> @@ -246,7 +271,7 @@ handle_request (struct connection *conn,
>>      break;
>>
>>    case NBD_CMD_WRITE:
>> -    if (fua)
>> +    if (flags & NBD_CMD_FLAG_FUA)
>>        f |= NBDKIT_FLAG_FUA;
> 
> So don't we need to keep the backend_can_fua() test here and later in
> this function?

handle_request() is run after validate_request(), which already rejected
any use of NBD_CMD_FLAG_FUA when it was not advertised.  And since the
flag is advertised only when backend_can_fua() succeeded, it is
redundant to check it here.  (You do have a point that we don't want to
call into a backend without checking the flag, and thus
backend_can_fua() _also_ needs to check things - but that's done in
patch 9 when we actually start enforcing things between backends; until
then, this patch is not a change in behavior).

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20190830/e4738b0e/attachment.sig>


More information about the Libguestfs mailing list