From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jens Axboe Subject: Re: [PATCH] bio allocation failure due to bio_get_nr_vecs() Date: Fri, 11 May 2012 16:36:39 +0200 Message-ID: <4FAD23F7.2080605@kernel.dk> References: <4FABF01E.7080303@itwm.fraunhofer.de> <4FAD18D4.3090102@itwm.fraunhofer.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: "linux-fsdevel@vger.kernel.org" , linux-xfs@oss.sgi.com, sandeen@sandeen.net, Kent Overstreet , Tejun Heo To: Bernd Schubert Return-path: Received: from casper.infradead.org ([85.118.1.10]:47489 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758854Ab2EKOgz (ORCPT ); Fri, 11 May 2012 10:36:55 -0400 In-Reply-To: <4FAD18D4.3090102@itwm.fraunhofer.de> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On 05/11/2012 03:49 PM, Bernd Schubert wrote: > The number of bio_get_nr_vecs() is passed down via bio_alloc() to > bvec_alloc_bs(), which fails the bio allocation if > nr_iovecs > BIO_MAX_PAGES. For the underlying caller this causes an > unexpected bio allocation failure. > Limiting to queue_max_segments() is not sufficient, as max_segments > also might be very large. > > bvec_alloc_bs(gfp_mask, nr_iovecs, ) => NULL when nr_iovecs > BIO_MAX_PAGES > bio_alloc_bioset(gfp_mask, nr_iovecs, ...) > bio_alloc(GFP_NOIO, nvecs) > xfs_alloc_ioend_bio() Thanks, looks sane. Applied. -- Jens Axboe