Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932870AbZJHW6U (ORCPT ); Thu, 8 Oct 2009 18:58:20 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932481AbZJHW6T (ORCPT ); Thu, 8 Oct 2009 18:58:19 -0400 Received: from casper.infradead.org ([85.118.1.10]:36868 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757447AbZJHW6S (ORCPT ); Thu, 8 Oct 2009 18:58:18 -0400 Subject: Re: [RFC][PATCH] kmap_atomic_push From: Peter Zijlstra To: jim owens Cc: Hugh Dickins , Linus Torvalds , Ingo Molnar , Avi Kivity , Andrew Morton , David Howells , lkml , linux-arch In-Reply-To: <4ACE674E.30403@hp.com> References: <1255016123.17055.17.camel@laptop> <20091008155344.GA11727@elte.hu> <1255019362.26976.311.camel@twins> <4ACE674E.30403@hp.com> Content-Type: text/plain Date: Fri, 09 Oct 2009 00:57:16 +0200 Message-Id: <1255042636.17055.33.camel@laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.26.1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1109 Lines: 43 On Thu, 2009-10-08 at 18:27 -0400, jim owens wrote: > So if I understand this correctly, the sequence: > > in = kmap_atomic(inpage, KM_USER1); > > out = kmap_atomic(outpage, KM_USER0); > > kunmap_atomic(in, KM_USER1); > > in = kmap_atomic(next_inpage, KM_USER1); > > is now illegal with this patch, which breaks code > I am testing now for btrfs. > > My code does this because the in/out are zlib inflate > and the in/out run at different rates. You can do things like: do { in = kmap_atomic(inpage); out = kmap_atomic(outpage); kunmap_atomic(outpage); kunmap_atomic(inpage); cond_resched(); } while () The double unmap gives a preemption point, which sounds like a good thing to have, because your scheme could run for a long while without enabling preemption, which is badness. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/