From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40256) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YINta-0000sj-Os for qemu-devel@nongnu.org; Mon, 02 Feb 2015 15:46:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YINtX-0002TD-GK for qemu-devel@nongnu.org; Mon, 02 Feb 2015 15:46:58 -0500 Received: from mx2.parallels.com ([199.115.105.18]:49084) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YINtX-0002St-AY for qemu-devel@nongnu.org; Mon, 02 Feb 2015 15:46:55 -0500 Message-ID: <54CFE22E.5000309@openvz.org> Date: Mon, 2 Feb 2015 23:46:38 +0300 From: "Denis V. Lunev" MIME-Version: 1.0 References: <1422907754-21543-1-git-send-email-den@openvz.org> <1422907754-21543-2-git-send-email-den@openvz.org> <54CFE0BA.4040902@kamp.de> In-Reply-To: <54CFE0BA.4040902@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 23:40, Peter Lieven wrote: > Am 02.02.2015 um 21:09 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 | 9 +++++++++ >> 1 file changed, 9 insertions(+) >> >> diff --git a/block/gluster.c b/block/gluster.c >> index 1eb3a8c..8a8c153 100644 >> --- a/block/gluster.c >> +++ b/block/gluster.c >> @@ -622,6 +622,11 @@ out: >> return ret; >> } >> >> +static void qemu_gluster_refresh_limits(BlockDriverState *bs, Error **errp) >> +{ >> + bs->bl.max_discard = MIN(SIZE_MAX >> BDRV_SECTOR_BITS, INT_MAX); >> +} >> + > Looking at the gluster code bl.max_transfer_length should have the same limit, but thats a different patch. ha, the same applies to nbd code too. I'll do this stuff tomorrow and also I think that some audit in other drivers could reveal something interesting. Den