2006-12-21 23:15:52

by Ingo Molnar

[permalink] [raw]
Subject: [patch] mm: export cancel_dirty_page()

From: Ingo Molnar <[email protected]>
Subject: [patch] export cancel_dirty_page()

export cancel_dirty_page() - it's used by hugetlbfs which can be
modular. (This makes my -git based kernel yum repository build again.)

Signed-off-by: Ingo Molnar <[email protected]>

Index: linux/mm/truncate.c
===================================================================
--- linux.orig/mm/truncate.c
+++ linux/mm/truncate.c
@@ -65,6 +65,7 @@ void cancel_dirty_page(struct page *page
task_io_account_cancelled_write(account_size);
}
}
+EXPORT_SYMBOL(cancel_dirty_page);

/*
* If truncate cannot remove the fs-private metadata from the page, the page


2006-12-21 23:28:52

by Adrian Bunk

[permalink] [raw]
Subject: Re: [patch] mm: export cancel_dirty_page()

On Fri, Dec 22, 2006 at 12:13:28AM +0100, Ingo Molnar wrote:
> From: Ingo Molnar <[email protected]>
> Subject: [patch] export cancel_dirty_page()
>
> export cancel_dirty_page() - it's used by hugetlbfs which can be
> modular. (This makes my -git based kernel yum repository build again.)
>...

No, it can't be:

config HUGETLBFS
bool "HugeTLB file system support"
^^^^

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2006-12-21 23:33:17

by Ingo Molnar

[permalink] [raw]
Subject: Re: [patch] mm: export cancel_dirty_page()


* Adrian Bunk <[email protected]> wrote:

> On Fri, Dec 22, 2006 at 12:13:28AM +0100, Ingo Molnar wrote:
> > From: Ingo Molnar <[email protected]>
> > Subject: [patch] export cancel_dirty_page()
> >
> > export cancel_dirty_page() - it's used by hugetlbfs which can be
> > modular. (This makes my -git based kernel yum repository build again.)
> >...
>
> No, it can't be:
>
> config HUGETLBFS
> bool "HugeTLB file system support"
> ^^^^

ah, indeed - but i dont see a fundamental reason why hugetlbfs is not
modular. Nevertheless exporting this makes sense. My quick hack below to
guess to convert reiserfs (just to make the rpm build) also needs it.

Ingo

Index: linux/fs/reiserfs/stree.c
===================================================================
--- linux.orig/fs/reiserfs/stree.c
+++ linux/fs/reiserfs/stree.c
@@ -1439,6 +1439,8 @@ static void unmap_buffers(struct page *p

if (page) {
if (page_has_buffers(page)) {
+ cancel_dirty_page(page, PAGE_CACHE_SIZE);
+
tail_index = pos & (PAGE_CACHE_SIZE - 1);
cur_index = 0;
head = page_buffers(page);
@@ -1458,9 +1460,6 @@ static void unmap_buffers(struct page *p
}
bh = next;
} while (bh != head);
- if (PAGE_SIZE == bh->b_size) {
- clear_page_dirty(page);
- }
}
}
}

2006-12-22 00:56:10

by Linus Torvalds

[permalink] [raw]
Subject: Re: [patch] mm: export cancel_dirty_page()



On Fri, 22 Dec 2006, Ingo Molnar wrote:
>
> ah, indeed - but i dont see a fundamental reason why hugetlbfs is not
> modular. Nevertheless exporting this makes sense. My quick hack below to
> guess to convert reiserfs (just to make the rpm build) also needs it.

Yes, it should be exported regardless.

Hoiwever, I'm not sure your reiserfs change is valid: why was that old
code testing "PAGE_SIZE == bh->b_size"?

(Not that I see why the _old_ code would be valid either, and why you'd
ever care about b_size being PAGE_SIZE, but I'm just wondering..)

Linus