From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tejun Heo Subject: Re: [PATCH v6 13/13] block: Only clone bio vecs that are in use Date: Wed, 22 Aug 2012 14:10:45 -0700 Message-ID: <20120822211045.GN19212@google.com> References: <1345655050-28199-1-git-send-email-koverstreet@google.com> <1345655050-28199-14-git-send-email-koverstreet@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <1345655050-28199-14-git-send-email-koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> Sender: linux-bcache-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Kent Overstreet Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, mpatocka-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, bharrosh-C4P08NqkoRlBDgjK7y7TUQ@public.gmane.org, Jens Axboe , Alasdair Kergon , Sage Weil List-Id: dm-devel.ids Hello, Kent. On Wed, Aug 22, 2012 at 10:04:10AM -0700, Kent Overstreet wrote: > bcache creates large bios internally, and then splits them according to > the device requirements before it sends them down. If a lower level > device tries to clone the bio, and the original bio had more than > BIO_MAX_PAGES, the clone will fail unecessarily. > > We can fix this by only cloning the bio vecs that are actually in use. I'm pretty sure I sound like a broken record by now, but * How was this tested? * What are the implications and possible dangers? > @@ -463,10 +468,10 @@ void __bio_clone(struct bio *bio, struct bio *bio_src) > bio->bi_sector = bio_src->bi_sector; > bio->bi_bdev = bio_src->bi_bdev; > bio->bi_flags |= 1 << BIO_CLONED; > + bio->bi_flags &= ~(1 << BIO_SEG_VALID); For the n'th time, explain please. Thanks. -- tejun