Skip to content
  • Fabian Ebner's avatar
    9b38fc56
    block/gluster: correctly set max_pdiscard · 9b38fc56
    Fabian Ebner authored
    
    
    On 64-bit platforms, assigning SIZE_MAX to the int64_t max_pdiscard
    results in a negative value, and the following assertion would trigger
    down the line (it's not the same max_pdiscard, but computed from the
    other one):
    qemu-system-x86_64: ../block/io.c:3166: bdrv_co_pdiscard: Assertion
    `max_pdiscard >= bs->bl.request_alignment' failed.
    
    On 32-bit platforms, it's fine to keep using SIZE_MAX.
    
    The assertion in qemu_gluster_co_pdiscard() is checking that the value
    of 'bytes' can safely be passed to glfs_discard_async(), which takes a
    size_t for the argument in question, so it is kept as is. And since
    max_pdiscard is still <= SIZE_MAX, relying on max_pdiscard is still
    fine.
    
    Fixes: 0c802287 ("block: use int64_t instead of int in driver discard handlers")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: default avatarFabian Ebner <f.ebner@proxmox.com>
    Message-Id: <20220520075922.43972-1-f.ebner@proxmox.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    9b38fc56
    block/gluster: correctly set max_pdiscard
    Fabian Ebner authored
    
    
    On 64-bit platforms, assigning SIZE_MAX to the int64_t max_pdiscard
    results in a negative value, and the following assertion would trigger
    down the line (it's not the same max_pdiscard, but computed from the
    other one):
    qemu-system-x86_64: ../block/io.c:3166: bdrv_co_pdiscard: Assertion
    `max_pdiscard >= bs->bl.request_alignment' failed.
    
    On 32-bit platforms, it's fine to keep using SIZE_MAX.
    
    The assertion in qemu_gluster_co_pdiscard() is checking that the value
    of 'bytes' can safely be passed to glfs_discard_async(), which takes a
    size_t for the argument in question, so it is kept as is. And since
    max_pdiscard is still <= SIZE_MAX, relying on max_pdiscard is still
    fine.
    
    Fixes: 0c802287 ("block: use int64_t instead of int in driver discard handlers")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: default avatarFabian Ebner <f.ebner@proxmox.com>
    Message-Id: <20220520075922.43972-1-f.ebner@proxmox.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Loading