[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1234530519.6519.46.camel@twins>
Date: Fri, 13 Feb 2009 14:08:39 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: Edward Shishkin <edward.shishkin@...il.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
Nick Piggin <npiggin@...e.de>, Ryan Hope <rmh3093@...il.com>,
Randy Dunlap <randy.dunlap@...cle.com>,
linux-kernel@...r.kernel.org,
ReiserFS Mailing List <reiserfs-devel@...r.kernel.org>
Subject: Re: [patch 2/4] vfs: add set_page_dirty_notag
On Fri, 2009-02-13 at 14:56 +0300, Edward Shishkin wrote:
> ---
> include/linux/mm.h | 1 +
> mm/page-writeback.c | 28 ++++++++++++++++++++++++++++
> 2 files changed, 29 insertions(+)
>
> --- mmotm.orig/include/linux/mm.h
> +++ mmotm/include/linux/mm.h
> @@ -841,6 +841,7 @@ int redirty_page_for_writepage(struct wr
> struct page *page);
> int set_page_dirty(struct page *page);
> int set_page_dirty_lock(struct page *page);
> +int set_page_dirty_notag(struct page *page);
> int clear_page_dirty_for_io(struct page *page);
>
> extern unsigned long move_page_tables(struct vm_area_struct *vma,
> --- mmotm.orig/mm/page-writeback.c
> +++ mmotm/mm/page-writeback.c
> @@ -1248,6 +1248,34 @@ int __set_page_dirty_nobuffers(struct pa
> EXPORT_SYMBOL(__set_page_dirty_nobuffers);
>
> /*
> + * The same as __set_page_dirty_nobuffers, but this function
> + * 1) doesn't tag the page in its radix tree;
> + * 2) makes an assumption that there is no races with truncate.
> + * 3) is not for anonymous or swap pages.
> + */
> +int set_page_dirty_notag(struct page *page)
> +{
> + struct address_space *mapping = page->mapping;
> +
> + if (!TestSetPageDirty(page)) {
> + WARN_ON_ONCE(!PagePrivate(page) && !PageUptodate(page));
> + if (mapping_cap_account_dirty(mapping)) {
> + preempt_disable();
> + __inc_zone_page_state(page, NR_FILE_DIRTY);
> + __inc_bdi_stat(mapping->backing_dev_info,
> + BDI_RECLAIMABLE);
> + task_dirty_inc(current);
> + task_io_account_write(PAGE_CACHE_SIZE);
> + preempt_enable();
> + }
> + __mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
> + return 1;
> + }
> + return 0;
> +}
> +EXPORT_SYMBOL(set_page_dirty_notag);
> +
Eew, so reiser4 will totally side-step the regular vm inode writeback
paths -- or is this fixed by a more elaborate than usual
a_ops->writepages() ?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists