Skip to content
  • Eric Blake's avatar
    0b576b6b
    nbd/client: Add meta contexts to nbd_receive_export_list() · 0b576b6b
    Eric Blake authored
    
    
    We want to be able to detect whether a given qemu NBD server is
    exposing the right export(s) and dirty bitmaps, at least for
    regression testing.  We could use 'nbd-client -l' from the upstream
    NBD project to list exports, but it's annoying to rely on
    out-of-tree binaries; furthermore, nbd-client doesn't necessarily
    know about all of the qemu NBD extensions.  Thus, we plan on adding
    a new mode to qemu-nbd that merely sniffs all possible information
    from the server during handshake phase, then disconnects and dumps
    the information.
    
    This patch continues the work of the previous patch, by adding the
    ability to track the list of available meta contexts into
    NBDExportInfo.  It benefits from the recent refactoring patches
    with a new nbd_list_meta_contexts() that reuses much of the same
    framework as setting a meta context.
    
    Note: a malicious server could exhaust memory of a client by feeding
    an unending loop of contexts; perhaps we could place a limit on how
    many we are willing to receive. But this is no different from our
    earlier analysis on a server sending an unending list of exports,
    and the death of a client due to memory exhaustion when the client
    was going to exit soon anyways is not really a denial of service
    attack.
    
    Signed-off-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarRichard W.M. Jones <rjones@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-Id: <20190117193658.16413-19-eblake@redhat.com>
    0b576b6b
    nbd/client: Add meta contexts to nbd_receive_export_list()
    Eric Blake authored
    
    
    We want to be able to detect whether a given qemu NBD server is
    exposing the right export(s) and dirty bitmaps, at least for
    regression testing.  We could use 'nbd-client -l' from the upstream
    NBD project to list exports, but it's annoying to rely on
    out-of-tree binaries; furthermore, nbd-client doesn't necessarily
    know about all of the qemu NBD extensions.  Thus, we plan on adding
    a new mode to qemu-nbd that merely sniffs all possible information
    from the server during handshake phase, then disconnects and dumps
    the information.
    
    This patch continues the work of the previous patch, by adding the
    ability to track the list of available meta contexts into
    NBDExportInfo.  It benefits from the recent refactoring patches
    with a new nbd_list_meta_contexts() that reuses much of the same
    framework as setting a meta context.
    
    Note: a malicious server could exhaust memory of a client by feeding
    an unending loop of contexts; perhaps we could place a limit on how
    many we are willing to receive. But this is no different from our
    earlier analysis on a server sending an unending list of exports,
    and the death of a client due to memory exhaustion when the client
    was going to exit soon anyways is not really a denial of service
    attack.
    
    Signed-off-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarRichard W.M. Jones <rjones@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-Id: <20190117193658.16413-19-eblake@redhat.com>
Loading