Not totally useless as you have mentioned they are accessed by
the lru so we still need something there just not much.
Of course it should be fixed. I just don't know if a backport
makes sense. The problem once understood is hard to trigger
and easy to avoid.
Yes. We will be accessed via the LRU. Yes I knew that. The truth is
whatever we do we will be visible to the LRU. My preferences run
towards having something that is less of a special case then a new
potentially huge cache that is completely unaccounted for, that we
have to build and maintain all of the infrastructure for
independently. The ramdisk code doesn't seem interesting enough
long term to get people to do independent maintenance.
With my patch we are on the road to being just like the ramdisk
for maintenance purposes code except having a different GFP mask.
I think I might have to send in a patch that renames
block_invalidatepage to block_invalidate_page which is how everyone
seems to be spelling it.
Anyway nothing in the ramdisk code sets PagePrivate o
block_invalidagepage should never be called, nor try_to_free_buffers
for that matter.
Well we each have different tastes. I think my patch
is a sane sensible small incremental step that does just what
is needed to fix the problem. It doesn't drag a lot of other
stuff into the problem like a rewrite would so we can easily verify
it.
Quite true. I noticed the breakage in mine because the patch
was so simple, and I only had to worry about one aspect. With
a rewrite I missed it because there was so much other noise I
couldn't see any issues.
I did but but that is relatively minor. Using the pagecache this
way for this purpose is a well established idiom in the kernel
so I didn't figure I was introducing anything to hard to maintain.
I am continuing to have the backing store pages visible to the VM,
and from that perspective it is a smaller change then where we are
today. Not that we can truly hide pages from the VM.
The code in rd.c isn't terrible, and it isn't shit. There is only one
fundamental problem with it. rd.c is fundamentally incompatible with
the buffer cache. Currently rd.c is a legitimate if a bit ugly
user of the page cache. The ugliness comes from working around
the buffer cache placing buffer heads on it's pages.
With my patch I stop using the same pages as the buffer cache which
removes that one fundamental problem.
Once we get the problem actually fixed I have no problem with
cleaning up the code. I even have patches queued I just believe
in only changing one thing at a time if I can.
Eric
-