On Tue, Jan 30, 2007 at 05:11:32PM -0800, Andrew Morton wrote: > On Wed, 31 Jan 2007 11:44:36 +1100 > David Chinner <[EMAIL PROTECTED]> wrote: > > > On Mon, Jan 29, 2007 at 06:15:57PM -0800, Andrew Morton wrote: > > > We still don't know what is the source of kmap() activity which > > > necessitated this patch btw. AFAIK the busiest source is ext2 > > > directories, > > > but perhaps NFS under certain conditions? > > > > > > <looks at xfs_iozero> > > > > > > ->prepare_write no longer requires that the caller kmap the page. > > > > Agreed, but don't we (xfs_iozero) have to map it first to zero it? > > > > I think what you are saying here, Andrew, is that we can > > do something like: > > > > page = grab_cache_page > > ->prepare_write(page) > > kaddr = kmap_atomic(page, KM_USER0) > > memset(kaddr+offset, 0, bytes) > > flush_dcache_page(page) > > kunmap_atomic(kaddr, KM_USER0) > > ->commit_write(page) > > > > to avoid using kmap() altogether? > > Yup. Even better, use clear_highpage().
For even more goodness, clearmem_highpage_flush() does exactly the right thing for partial page zeroing ;) Thanks, Andrew, I've added a patch to my QA tree with this mod. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/