[PATCH] tmpfs work update 013010 (was tmpfs initial work)

Naoya Sugioka naoya.sugioka at gmail.com
Mon Feb 1 20:27:11 PST 2010


Hi Matt,

I'm glad you are happy with my porting & implementation.
Always you do patching and running then let me know any issues you
encountered please.
Any comments always give me a new or different sight for the current
implementation.
If the comment comes from experts like you, that motivates me (and
others) a lot.

Once more thing, I wonder I should migrate my dev environment to x64
from current i386
to catch atoi() like issues earlier.
Does somebody know if a qemu x64 emulator works on the DragonFly/x64 host ?
(Now I do (k)qemu i386 on DragonFly/i386.)

thank you,
-Naoya

On Sun, Jan 31, 2010 at 6:43 PM, Matthew Dillon
<dillon at apollo.backplane.com> wrote:
>
> :Hi Matt and others,
> :
> :Here comes 3rd iteration.
> :
> :1) reimplement tmpfs_read(), tmpfs_write() call by following Matt's
> :...
> :2) tmpfs_strategy() is a kind of temporary hack. Just call
> :...
> :3) implement  tmpfs_advlock() with lockf structure
> :
> :The change makes tmpfs more stable (make nativekernel works on tmpfs
> ::) though, still
> :some issues. 1)An umount will hit assertion. 2)There are some cases to
> :observe non-res
> :from tmpfs too. 3)An userland command (mount_tmpfs) is no progress,
> :has a lack of features.
> :
> :I'll start looking a new truncation/extention API beyond this change,
> :then dive into above
> :issues and items.
> :
> :thank you, Any comments are always welcome.
> :-Naoya
>
>    Your patch is really looking good now.  Would it be too early for
>    us to start testing it or should we wait a little longer?
>
>    Here are a few things I noticed from perusing your patch:
>
>    * case 's' for the size specification uses atoi(), which is
>      limited to a 32 bit integer while ta_size_max is an off_t (64 bit).
>      I recommend using strtoimax() instead of atoi().
>
>    * I see you are using MNTK_MPSAFE.  That won't apply to read,
>      write, getattr, and inactive.  They have their own MNTK_xx_MPSAFE
>      flags which you also need to specify too if you want those VOPs to
>      be MPSAFE (and you clearly do).
>
>    * You may want to add the other MNTK_xx_MPSAFE flags but remove
>      MNTK_MPSAFE for initial testing until you get things rock solid,
>      then work MNTK_MPSAFE back in.
>
>    * For tmpfs_write() I think you can safely just use bdwrite(),
>      and there is no need to implement the B_CLUSTER* support (though
>      it won't hurt I don't think it will improve performance much
>      either).
>
>    * Currently you are using a separate VM object for the vnode
>      (via vinitvmio()) and the backing store (via tn_aobj).
>
>      This is something that only the VN device (/usr/src/sys/dev/disk/vn)
>      has done in the codebase.  It should work and I think it is an
>      excellent solution to the backing store issue.
>
>      I see you even implemented the freeing of swap space in the
>      truncation code.  Wow!  Very cool!
>
>    I think shifting it to the new nvtruncbuf()/nvextendbuf() API will
>    be trivial.  It will even simplify the tmpfs code slightly.
>
>    Again, incredible work!  Please keep us posted!
>
>                                                -Matt
>





More information about the Users mailing list