From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Pekka Enberg" Subject: Re: [PATCH RFC] nilfs2: continuous snapshotting file system Date: Wed, 20 Aug 2008 11:22:47 +0300 Message-ID: <84144f020808200122w3e5adc4ci4eec761a1e570bda@mail.gmail.com> References: <200808200245.AA00210@capsicum.lab.ntt.co.jp> <20080820004326.519405a2.akpm@linux-foundation.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: "Ryusuke Konishi" , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org To: "Andrew Morton" Return-path: Received: from py-out-1112.google.com ([64.233.166.178]:6444 "EHLO py-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752624AbYHTIWs (ORCPT ); Wed, 20 Aug 2008 04:22:48 -0400 Received: by py-out-1112.google.com with SMTP id p76so248372pyb.10 for ; Wed, 20 Aug 2008 01:22:48 -0700 (PDT) In-Reply-To: <20080820004326.519405a2.akpm@linux-foundation.org> Content-Disposition: inline Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Wed, Aug 20, 2008 at 10:43 AM, Andrew Morton wrote: >> It is not yet divided into pieces (sorry). Unlike original code >> available at [4], many code lines to support past kernel versions and >> peculiar debug code are removed in this patch. > > Yes, please do that splitup and let's get down to reviewing it. Hmm, this looks bit scary: > +/* > + * Low-level nilfs pages, page functions > + * Reviews should be made to adapt these to the common pagemap and buffer code. > + */ > +static struct nilfs_pages { > + spinlock_t lru_lock; > + struct list_head active; > + struct list_head inactive; > + unsigned long nr_active; > + unsigned long nr_inactive; > + struct rw_semaphore shrink_sem; > +} nilfs_pages; > + > +/* > + * XXX per-cpu pagevecs may be able to reduce the overhead of list handlings > + * > + * static DEFINE_PER_CPU(struct pagevec, nilfs_lru_active) = { 0, }; > + * static DEFINE_PER_CPU(struct pagevec, nilfs_lru_inactive) = { 0, }; > + */ > + > +void nilfs_pages_init(void) > +{ > + INIT_LIST_HEAD(&nilfs_pages.active); > + INIT_LIST_HEAD(&nilfs_pages.inactive); > + spin_lock_init(&nilfs_pages.lru_lock); > + init_rwsem(&nilfs_pages.shrink_sem); > + nilfs_pages.nr_active = 0; > + nilfs_pages.nr_inactive = 0; > +} (a) why does NILFS need this and (b) why aren't these patches against generic mm/*.c? Pekka