Re: [PATCH resend] ramdisk: fix zeroed ramdisk pages on memory pressure

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Eric W. Biederman
Date: Monday, October 15, 2007 - 9:57 pm

Nick Piggin <nickpiggin@yahoo.com.au> writes:


Well to put it another way, mark_page_uptodate() is the only
place where we really need to know about the upper layers.
Given that you can kill ramdisks by coding it as:

static void make_page_uptodate(struct page *page)
{
	clear_highpage(page);
	flush_dcache_page(page);
	SetPageUptodate(page);
}

Something is seriously non-intuitive about that function if
you understand the usual rules for how to use the page cache.

The problem is that we support a case in the buffer cache
where pages are partially uptodate and only the buffer_heads
remember which parts are valid.  Assuming we are using them
correctly.

Having to walk through all of the buffer heads in make_page_uptodate
seems to me to be a nasty layering violation in rd.c


Yep we are in agreement there.


For testing purposes I think I can agree with that.


With the proposed rewrite yes.


Hmm.  Good point.  So in net it should save memory even if
it consumes a little more in the worst case.



Well I always figured it was a bit rude allocating large amounts
of memory GFP_NOIO but whatever.


I'm not certain which way we should go.  Take fsblock and run it
in parallel until everything is converted or use fsblock as a
prototype and once we have figured out which way we should go
convert struct buffer_head into struct fsblock one patch at a time.

I'm inclined to think we should evolve the buffer_head.

Eric





-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH resend] ramdisk: fix zeroed ramdisk pages on memory ..., Christian Borntraeger, (Mon Oct 15, 1:28 am)
Re: [PATCH resend] ramdisk: fix zeroed ramdisk pages on me ..., Christian Borntraeger, (Mon Oct 15, 2:05 am)
Re: [PATCH resend] ramdisk: fix zeroed ramdisk pages on me ..., Eric W. Biederman, (Mon Oct 15, 11:38 am)
Re: [PATCH resend] ramdisk: fix zeroed ramdisk pages on me ..., Eric W. Biederman, (Mon Oct 15, 3:37 pm)
[PATCH] rd: Preserve the dirty bit in init_page_buffers(), Eric W. Biederman, (Mon Oct 15, 3:40 pm)
[PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Mon Oct 15, 3:42 pm)
Re: [PATCH resend] ramdisk: fix zeroed ramdisk pages on me ..., Eric W. Biederman, (Mon Oct 15, 8:14 pm)
Re: [PATCH resend] ramdisk: fix zeroed ramdisk pages on me ..., Eric W. Biederman, (Mon Oct 15, 9:57 pm)
[patch][rfc] rewrite ramdisk, Nick Piggin, (Tue Oct 16, 12:47 am)
Re: [patch][rfc] rewrite ramdisk, Jan Engelhardt, (Tue Oct 16, 12:52 am)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Christian Borntraeger, (Tue Oct 16, 12:56 am)
Re: Re: [PATCH] rd: Mark ramdisk buffers heads dirty, rubenjr_22, (Tue Oct 16, 1:05 am)
Re: [patch][rfc] rewrite ramdisk, Nick Piggin, (Tue Oct 16, 1:07 am)
Re: Re: [PATCH] rd: Mark ramdisk buffers heads dirty, rubenjr_22, (Tue Oct 16, 1:13 am)
Re: [patch][rfc] rewrite ramdisk, Jan Engelhardt, (Tue Oct 16, 1:17 am)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Nick Piggin, (Tue Oct 16, 1:19 am)
Re: [patch][rfc] rewrite ramdisk, Nick Piggin, (Tue Oct 16, 1:26 am)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Christian Borntraeger, (Tue Oct 16, 1:48 am)
Re: [patch][rfc] rewrite ramdisk, Jan Engelhardt, (Tue Oct 16, 1:53 am)
Re: [patch][rfc] rewrite ramdisk, Eric W. Biederman, (Tue Oct 16, 2:08 am)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Tue Oct 16, 2:22 am)
Re: [PATCH] rd: Preserve the dirty bit in init_page_buffers(), Eric W. Biederman, (Tue Oct 16, 2:35 am)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Tue Oct 16, 12:06 pm)
Re: [patch][rfc] rewrite ramdisk, Theodore Tso, (Tue Oct 16, 2:28 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Nick Piggin, (Tue Oct 16, 3:06 pm)
Re: [patch][rfc] rewrite ramdisk, Nick Piggin, (Tue Oct 16, 3:08 pm)
Re: [patch][rfc] rewrite ramdisk, Eric W. Biederman, (Tue Oct 16, 4:48 pm)
Re: [patch][rfc] rewrite ramdisk, Nick Piggin, (Tue Oct 16, 5:28 pm)
Re: [patch][rfc] rewrite ramdisk, Eric W. Biederman, (Tue Oct 16, 6:13 pm)
Re: [patch][rfc] rewrite ramdisk, Nick Piggin, (Tue Oct 16, 6:47 pm)
Re: [patch][rfc] rewrite ramdisk, Eric W. Biederman, (Wed Oct 17, 3:30 am)
Re: [patch][rfc] rewrite ramdisk, Nick Piggin, (Wed Oct 17, 5:49 am)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Christian Borntraeger, (Wed Oct 17, 9:14 am)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Wed Oct 17, 10:57 am)
Re: [patch][rfc] rewrite ramdisk, Eric W. Biederman, (Wed Oct 17, 11:45 am)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Chris Mason, (Wed Oct 17, 12:14 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Wed Oct 17, 1:29 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Chris Mason, (Wed Oct 17, 1:54 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Wed Oct 17, 2:30 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Christian Borntraeger, (Wed Oct 17, 2:48 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Wed Oct 17, 3:22 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Chris Mason, (Wed Oct 17, 3:58 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Wed Oct 17, 4:28 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Chris Mason, (Wed Oct 17, 5:03 pm)
Re: [patch][rfc] rewrite ramdisk, Nick Piggin, (Wed Oct 17, 6:06 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Wed Oct 17, 8:27 pm)
[RFC][PATCH] block: Isolate the buffer cache in it's own m ..., Eric W. Biederman, (Wed Oct 17, 8:59 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Christian Borntraeger, (Thu Oct 18, 2:26 am)
Re: [RFC][PATCH] block: Isolate the buffer cache in it's o ..., Eric W. Biederman, (Fri Oct 19, 2:27 pm)
Re: [RFC][PATCH] block: Isolate the buffer cache in it's o ..., Eric W. Biederman, (Fri Oct 19, 2:35 pm)
Re: [PATCH] rd: Mark ramdisk buffers heads dirty, Eric W. Biederman, (Fri Oct 19, 3:46 pm)
[PATCH] rd: Use a private inode for backing storage, Eric W. Biederman, (Fri Oct 19, 3:51 pm)
Re: [RFC][PATCH] block: Isolate the buffer cache in it's o ..., Eric W. Biederman, (Sat Oct 20, 9:53 pm)
Re: [PATCH] rd: Use a private inode for backing storage, Eric W. Biederman, (Sat Oct 20, 10:10 pm)
Re: [PATCH] rd: Use a private inode for backing storage, Nick Piggin, (Sat Oct 20, 10:24 pm)
Re: [PATCH] rd: Use a private inode for backing storage, Eric W. Biederman, (Sat Oct 20, 11:48 pm)
Re: [RFC][PATCH] block: Isolate the buffer cache in it's o ..., Eric W. Biederman, (Sun Oct 21, 12:09 am)
Re: [PATCH] rd: Use a private inode for backing storage, Christian Borntraeger, (Sun Oct 21, 12:28 am)
Re: [PATCH] rd: Use a private inode for backing storage, Eric W. Biederman, (Sun Oct 21, 1:23 am)
Re: [PATCH] rd: Use a private inode for backing storage, Eric W. Biederman, (Sun Oct 21, 10:56 am)
Re: [PATCH] rd: Use a private inode for backing storage, Eric W. Biederman, (Sun Oct 21, 11:39 am)