qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-block] [PATCH RFC] block/gluster: limit the trans


From: Niels de Vos
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH RFC] block/gluster: limit the transfer size to 512 MiB
Date: Thu, 28 Mar 2019 12:47:42 +0100
User-agent: Mutt/1.11.3 (2019-02-01)

On Thu, Mar 28, 2019 at 11:52:27AM +0100, Stefano Garzarella wrote:
> Several versions of GlusterFS (3.12? -> 6.0.1) fail when the
> transfer size is greater or equal to 1024 MiB, so we are
> limiting the transfer size to 512 MiB to avoid this rare issue.
> 
> Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1691320
> Signed-off-by: Stefano Garzarella <address@hidden>
> ---
> 
> RFC:
> Should I add a parameter to allow the user to modify the max_transfer
> variable?

No, that is not needed IMHO. In most environments where large files are
used, sharding is enabled on the Gluster volumes. For VM images shards
of 256MB are recommeneded (I think). When sharding is enabled, the
writes will be limited to that size as well, hence the problem is not
noticed on (most) production deployments.

Reviewed-by: Niels de Vos <address@hidden>

> 
> 
>  block/gluster.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/block/gluster.c b/block/gluster.c
> index af64330211..e1e4eaa525 100644
> --- a/block/gluster.c
> +++ b/block/gluster.c
> @@ -9,6 +9,7 @@
>   */
>  
>  #include "qemu/osdep.h"
> +#include "qemu/units.h"
>  #include <glusterfs/api/glfs.h>
>  #include "block/block_int.h"
>  #include "block/qdict.h"
> @@ -37,6 +38,12 @@
>  #define GLUSTER_DEBUG_MAX           9
>  #define GLUSTER_OPT_LOGFILE         "logfile"
>  #define GLUSTER_LOGFILE_DEFAULT     "-" /* handled in libgfapi as 
> /dev/stderr */
> +/*
> + * Several versions of GlusterFS (3.12? -> 6.0.1) fail when the transfer size
> + * is greater or equal to 1024 MiB, so we are limiting the transfer size to 
> 512
> + * MiB to avoid this rare issue.
> + */
> +#define GLUSTER_MAX_TRANSFER        (512 * MiB)
>  
>  #define GERR_INDEX_HINT "hint: check in 'server' array index '%d'\n"
>  
> @@ -879,6 +886,11 @@ out:
>      return ret;
>  }
>  
> +static void qemu_gluster_refresh_limits(BlockDriverState *bs, Error **errp)
> +{
> +    bs->bl.max_transfer = GLUSTER_MAX_TRANSFER;
> +}
> +
>  static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
>                                         BlockReopenQueue *queue, Error **errp)
>  {
> @@ -1536,6 +1548,7 @@ static BlockDriver bdrv_gluster = {
>      .bdrv_co_pwrite_zeroes        = qemu_gluster_co_pwrite_zeroes,
>  #endif
>      .bdrv_co_block_status         = qemu_gluster_co_block_status,
> +    .bdrv_refresh_limits          = qemu_gluster_refresh_limits,
>      .create_opts                  = &qemu_gluster_create_opts,
>      .strong_runtime_opts          = gluster_strong_open_opts,
>  };
> @@ -1566,6 +1579,7 @@ static BlockDriver bdrv_gluster_tcp = {
>      .bdrv_co_pwrite_zeroes        = qemu_gluster_co_pwrite_zeroes,
>  #endif
>      .bdrv_co_block_status         = qemu_gluster_co_block_status,
> +    .bdrv_refresh_limits          = qemu_gluster_refresh_limits,
>      .create_opts                  = &qemu_gluster_create_opts,
>      .strong_runtime_opts          = gluster_strong_open_opts,
>  };
> @@ -1596,6 +1610,7 @@ static BlockDriver bdrv_gluster_unix = {
>      .bdrv_co_pwrite_zeroes        = qemu_gluster_co_pwrite_zeroes,
>  #endif
>      .bdrv_co_block_status         = qemu_gluster_co_block_status,
> +    .bdrv_refresh_limits          = qemu_gluster_refresh_limits,
>      .create_opts                  = &qemu_gluster_create_opts,
>      .strong_runtime_opts          = gluster_strong_open_opts,
>  };
> @@ -1632,6 +1647,7 @@ static BlockDriver bdrv_gluster_rdma = {
>      .bdrv_co_pwrite_zeroes        = qemu_gluster_co_pwrite_zeroes,
>  #endif
>      .bdrv_co_block_status         = qemu_gluster_co_block_status,
> +    .bdrv_refresh_limits          = qemu_gluster_refresh_limits,
>      .create_opts                  = &qemu_gluster_create_opts,
>      .strong_runtime_opts          = gluster_strong_open_opts,
>  };
> -- 
> 2.20.1
> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]