From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Lameter Subject: Re: [11/36] Use page_cache_xxx in fs/buffer.c Date: Fri, 31 Aug 2007 00:52:22 -0700 (PDT) Message-ID: References: <20070828190730.220393749@sgi.com> <20070830092038.GD22586@dnb.sw.ru> <20070831065613.GH29452@kernel.dk> <20070831071142.GI29452@kernel.dk> <20070831072611.GK29452@kernel.dk> <20070831074338.GL29452@kernel.dk> Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: Dmitry Monakhov , torvalds@linux-foundation.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Christoph Hellwig , Mel Gorman , William Lee Irwin III , David Chinner , Badari Pulavarty , Maxim Levitsky , Fengguang Wu , swin wang , totty.lu@gmail.com, "H. Peter Anvin" , joern@lazybastard.org, "Eric W. Biederman" To: Jens Axboe Return-path: Received: from netops-testserver-4-out.sgi.com ([192.48.171.29]:34797 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753445AbXHaHwX (ORCPT ); Fri, 31 Aug 2007 03:52:23 -0400 In-Reply-To: <20070831074338.GL29452@kernel.dk> Sender: linux-fsdevel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org On Fri, 31 Aug 2007, Jens Axboe wrote: > They have nothing to do with each other, you are mixing things up. It > has nothing to do with the device being able to dma into that memory or > not, we have fine existing infrastructure to handle that. But different > hardware have different characteristics on what a single segment is. You > can say "a single segment cannot cross a 32kb boundary". So from the > example above, your single 64k page may need to be split into two > segments. Or it could have a maximum segment size of 32k, in which case > it would have to be split as well. > > Do you see what I mean now? Ok. So another solution maybe to limit the blocksizes that can be used with a device? > > How do we split that up today? We could add processing to submit_bio > > to check for the boundary and create two bios. > > But we do not split them up today - see what I wrote! Today we impose > the restriction that a device must be able to handle a single "normal" > page, and if it can't do that, it has to split it up itself. > > But yes, you would have to create some out-of-line function to use > bio_split() until you have chopped things down enough. It's not a good > thing for performance naturally, but if we consider this a "just make it > work" fallback, I don't think it's too bad. You want to make a note of > that it is happening though, so people realize that it is happening. Hmmmm.. We could keep the existing scheme too and check that device drivers split things up if they are too large? Isnt it possible today to create a huge bio of 2M for huge pages and send it to a device?