From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60794) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YINJn-0003eE-Rt for qemu-devel@nongnu.org; Mon, 02 Feb 2015 15:10:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YINJk-0007LI-LM for qemu-devel@nongnu.org; Mon, 02 Feb 2015 15:09:59 -0500 Received: from mx2.parallels.com ([199.115.105.18]:48594) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YINJk-0007LC-FG for qemu-devel@nongnu.org; Mon, 02 Feb 2015 15:09:56 -0500 Message-ID: <54CFD98C.5000706@openvz.org> Date: Mon, 2 Feb 2015 23:09:48 +0300 From: "Denis V. Lunev" MIME-Version: 1.0 References: <1422901789-21027-1-git-send-email-den@openvz.org> <1422901789-21027-2-git-send-email-den@openvz.org> <54CFD6FE.3080204@kamp.de> In-Reply-To: <54CFD6FE.3080204@kamp.de> Content-Type: text/plain; charset="iso-8859-15"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/2] glusterfs: fix max_discard List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Lieven Cc: Kevin Wolf , qemu-devel@nongnu.org On 02/02/15 22:58, Peter Lieven wrote: > Am 02.02.2015 um 19:29 schrieb Denis V. Lunev: >> qemu_gluster_co_discard calculates size to discard as follows >> size_t size = nb_sectors * BDRV_SECTOR_SIZE; >> ret = glfs_discard_async(s->fd, offset, size, &gluster_finish_aiocb, acb); >> >> glfs_discard_async is declared as follows: >> int glfs_discard_async (glfs_fd_t *fd, off_t length, size_t lent, >> glfs_io_cbk fn, void *data) __THROW >> This is problematic on i686 as sizeof(size_t) == 4. >> >> Set bl_max_discard to SIZE_MAX >> BDRV_SECTOR_BITS to avoid overflow >> on i386. >> >> Signed-off-by: Denis V. Lunev >> CC: Kevin Wolf >> CC: Peter Lieven >> --- >> block/gluster.c | 11 +++++++++++ >> 1 file changed, 11 insertions(+) >> >> diff --git a/block/gluster.c b/block/gluster.c >> index 1eb3a8c..47bf92d 100644 >> --- a/block/gluster.c >> +++ b/block/gluster.c >> @@ -622,6 +622,13 @@ out: >> return ret; >> } >> >> +static void qemu_gluster_refresh_limits(BlockDriverState *bs, Error **errp) >> +{ >> +#if SIZE_MAX == UINT_MAX >> + bs->bl.max_discard = SIZE_MAX >> BDRV_SECTOR_BITS; >> +#endif > I would write: > > bs->bl.max_discard = MIN(SIZE_MAX >> BDRV_SECTOR_BITS, INT_MAX); > > without the condition. > > > Peter > ok, respinned Den