From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Woodhouse Subject: Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling Date: Fri, 08 Aug 2008 13:32:48 +0100 Message-ID: <1218198768.12232.144.camel@pmac.infradead.org> References: <1218014703.5111.35.camel@pmac.infradead.org> <20080807184155.GE20055@kernel.dk> <1218187995.12232.95.camel@pmac.infradead.org> <20080808103041.GM20055@kernel.dk> <1218192731.12232.110.camel@pmac.infradead.org> <20080808110934.GO20055@kernel.dk> <20080808111829.GP20055@kernel.dk> <1218194997.12232.124.camel@pmac.infradead.org> <20080808114409.GR20055@kernel.dk> <1218197116.12232.135.camel@pmac.infradead.org> <20080808121302.GT20055@kernel.dk> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: Andrew Morton , Ric Wheeler , linux-fsdevel@vger.kernel.org, gilad@codefidence.com To: Jens Axboe Return-path: Received: from bombadil.infradead.org ([18.85.46.34]:52038 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754986AbYHHMdC (ORCPT ); Fri, 8 Aug 2008 08:33:02 -0400 In-Reply-To: <20080808121302.GT20055@kernel.dk> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Fri, 2008-08-08 at 14:13 +0200, Jens Axboe wrote: > On Fri, Aug 08 2008, David Woodhouse wrote: > > On Fri, 2008-08-08 at 13:44 +0200, Jens Axboe wrote: > > > > > > Sigh indeed, ->issue_flush_fn() was the actual issuer, not the preparer. > > > Let me send a new diff. This adds the ->prepare_discard_fn() to do the > > > transformation, and also extends blkdev_issue_flush() to return error if > > > the IO was never queued because of some device in the stack not > > > supporting it. > > > > I think we still want the DISCARD flag in rq->cmd_flags. We can't rely > > on rq->cmd_type == REQ_TYPE_DISCARD because that may well be changed to > > something else (like REQ_TYPE_BLOCK_PC). > > It's getting a bit nasty at this point. Discard requests should be > treated as file system requests, if you want merging and sorting on > them. Except that they _can't_ be, because file system requests are normal reads and writes, and have just a single bit to indicate the direction. Although I suppose we could declare that a discard request is just like a write but with no buffer attached? I wasn't brave enough to attempt that though, because I think it'll get painful and lead to oopses in unexpected places. So they're _not_ file system requests; they're different -- and they can be marked by the appropriate bit in rq->cmd_flags, just like a flush request is. There's no reason that has to prevent merging. The elevator needs to learn about discard requests anyway, and it doesn't really matter _how_ it recognises them as such. Surely? -- David Woodhouse Open Source Technology Centre David.Woodhouse@intel.com Intel Corporation