[PATCH] tmpfs work update (was tmpfs initial work)
Naoya Sugioka
naoya.sugioka at gmail.com
Tue Jan 19 17:13:16 PST 2010
Hi Matt,
Thank you for the precise response. It is a same strategy of previous porter.
I thought it is a way to remove a dirty hack (vm object and anonymous
object shares rb_memq)
I'll play around implementing a buffer cache (or maybe, a page
cache)...it is a most interesting
part of this poring.
Regarding to the old APIs, I try to migrate the code to follow your vm
change first.
thank you again,
-Naoya
On Tue, Jan 19, 2010 at 8:34 AM, Matthew Dillon
<dillon at apollo.backplane.com> wrote:
> :Hello Matt and df users again,
> :
> :
> :Here is an update of my tmpfs porting. The filesystem is getting much
> :more robust than initial post,
> :but still I see same memory corruption issue.
> :
> :Yet I feel it is a worth to share this update with community to catch
> :up recent vm_pager_getpage() / vm_pager_has_page() changes.
> :
> :Any feedback and comments are welcome.
> :
> :thank you,
> :-Naoya
>
> The patch is looking better.
>
> The first issue I see is tmpfs_read()/tmpfs_write() and friends.
> You need to use the buffer cache to implement those VOPs instead
> of trying to mess with the VM pages directly. Interacting with
> VM pages in a way that avoids problems between read, write, and mmap,
> is a very complex task. The buffer cache takes the work out of it.
>
> The second issue is trying to create a duplicate VM object with the
> same rb_memq. Instead it should be possible to use the same
> VM object and simply give it an extra reference so it isn't destroyed
> when the vnode goes away.
>
> For the latter we will also need a way to deal with dirty VM pages
> when the VM system wants to 'flush' them to backing store (since there
> is no backing store). The way this normally works is that the VM
> system clears the dirty bits on the VM pages when it marks the
> buffer cache buffer as being dirty, and calls the strategy function
> (that would be tmpfs_strategy() if you had one) on the buffer
> cache buffer to 'flush' the buffer to backing store. Since there is
> no media per-say I think it might be possible to implement a strategy
> function which simply re-dirties the underlying VM pages for writes.
> (Eventually we could add a swap-space-backing feature, even!).
>
> As you know I am doing some major work on the VM/BUF APIs. I think
> you can do most of the above without that work interfering too much.
> I've decided to keep the old API (vtruncbuf() and vnode_pager_setsize())
> intact while I work on a new, better API.
>
> -Matt
>
>
More information about the Users
mailing list