From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Dmitry Adamushko" Subject: Re: O_DIRECT patch for processors with VIPT cache for mainline kernel (specifically arm in our case) Date: Thu, 20 Nov 2008 14:59:06 +0100 Message-ID: References: <200811201759.01039.nickpiggin@yahoo.com.au> <200811210025.39568.nickpiggin@yahoo.com.au> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: "Russell King - ARM Linux" , linux-fsdevel@vger.kernel.org, "Naval Saini" , linux-arch@vger.kernel.org, linux-arm-kernel@lists.arm.linux.org.uk, linux-kernel@vger.kernel.org, naval.saini@nxp.com, "Ralf Baechle" To: "Nick Piggin" Return-path: Received: from yw-out-2324.google.com ([74.125.46.29]:28718 "EHLO yw-out-2324.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754727AbYKTN7I (ORCPT ); Thu, 20 Nov 2008 08:59:08 -0500 Received: by yw-out-2324.google.com with SMTP id 9so205383ywe.1 for ; Thu, 20 Nov 2008 05:59:07 -0800 (PST) In-Reply-To: <200811210025.39568.nickpiggin@yahoo.com.au> Content-Disposition: inline Sender: linux-fsdevel-owner@vger.kernel.org List-ID: 2008/11/20 Nick Piggin : > On Thursday 20 November 2008 23:28, Dmitry Adamushko wrote: >> 2008/11/20 Nick Piggin : >> > [ ... ] >> > >> > - The page is sent to the block layer, which stores into the page. Some >> > block devices like 'brd' will potentially store via the kernel linear >> > map here, and they probably don't do enough cache flushing. >> >> btw., if someone is curious, here is another case of what may happen >> on VIPT systems when someone uses a "virtual" block device (like >> 'brd') as, heh, a swap :-) >> >> http://www.linux-mips.org/archives/linux-mips/2008-11/msg00038.html > > Right... Now I'm lacking knowledge when it comes to devices, but I > think it is probably reasonable for the block device layer to ensure > the physical memory is uptodate after it signals request completion. > > That is, there shouldn't be any potentially aliasing dirty lines. > Block devices which do any writeout via the kernel linear address > (eg. brd) should do a flush_dcache_page. > Yeah, but my point is that flush_dcache_page() in its current incarnation will _not_ always match the expectetions of such block devices (e.g. brd or compcache) when those devices are used as "swap" :-) IOW, although flush_dcache_page() is in place, it won't work as expected. -- Best regards, Dmitry Adamushko