| #
d256e384 |
| 16-Aug-2012 |
manu <manu@NetBSD.org> |
Fix regression that has been introduced when the lookup/reclaim race condition was addressed in libpuffs by counting lookups.
The fix assumes that cookies map to struct puffs_cookie, which has not b
Fix regression that has been introduced when the lookup/reclaim race condition was addressed in libpuffs by counting lookups.
The fix assumes that cookies map to struct puffs_cookie, which has not been documented as a requirement for filesystems using libpuffs. As an example, we got burnt by this assumption in libp2k (kern/46734), and we fixed bit by actually mapping libp2k cookies to struct puffs_node.
It is unlikely, but there may be third party filesystems that use cookies unmapped to struct puffs_node, and they were left broken for now.
- we introduce a puffs_init() flag PUFFS_FLAG_PNCOOKIE that let filesystems inform libpuffs that they map cookies to struct puffs_node. Is that flag is used, the lookup/reclaim race condition fix is enabled. We enable the flag for libp2k.
- filesystems that use puffs_pn_new() obviouslty use struct puffs_node and gain PUFFS_FLAG_PNCOOKIE automatically even if they did not specify it in puffs_init(). This include all our PUFFS filesystem in-tree except libp2k.
- for filesystems not willing to use struct puffs_node, we introduce a reclaim2 vnop, which is reclaim with an additionnal lookup count argument. This vnop let the filesystem implement the lookup/reclaim race fix on its own.
show more ...
|
| #
70d81924 |
| 18-Apr-2012 |
manu <manu@NetBSD.org> |
- When using PUFFS_KFLAG_CACHE_FS_TTL, do not use puffs_node to carry attribute and TTL fora newly created node. Instead extend puffs_newinfo and add puffs_newinfo_setva() and puffs_newinfo_settt
- When using PUFFS_KFLAG_CACHE_FS_TTL, do not use puffs_node to carry attribute and TTL fora newly created node. Instead extend puffs_newinfo and add puffs_newinfo_setva() and puffs_newinfo_setttl() - Remove node_mk_common_final in libperfuse. It used to set uid/gid for a newly created vnode but has been made redundant along time ago since uid and gid are properly set in FUSE header. - In libperfuse, check for corner case where opc = 0 on INACTIVE and RECLAIM (how is it possible? Check for it to avoid a crash anyway) - In libperfuse, make sure we unlimit RLIMIT_AS and RLIMIT_DATA so that we do notrun out of memory because the kernel is lazy at reclaiming vnodes. - In libperfuse, cleanup style of perfuse_destroy_pn()
show more ...
|
| #
fb4eb353 |
| 08-Apr-2012 |
manu <manu@NetBSD.org> |
Add PUFFS_KFLAG_CACHE_FS_TTL flag to puffs_init(3) to use name and attribute cache with filesystem provided TTL. lookup, create, mknod, mkdir, symlink, getattr and setattr messages have been extended
Add PUFFS_KFLAG_CACHE_FS_TTL flag to puffs_init(3) to use name and attribute cache with filesystem provided TTL. lookup, create, mknod, mkdir, symlink, getattr and setattr messages have been extended so that attributes and their TTL can be provided by the filesytem. lookup, create, mknod, mkdir, and symlink messages are also extended so that the filesystem can provide name TTL. The filesystem updates attributes and TTL using puffs_pn_getvap(3), puffs_pn_getvattl(3), and puffs_pn_getcnttl(3)
show more ...
|
| #
ff423327 |
| 12-Aug-2008 |
pooka <pooka@NetBSD.org> |
Replace void * by puffs_cookie_t where appropriate. No functional change.
|
| #
4385b647 |
| 17-Aug-2007 |
pooka <pooka@NetBSD.org> |
Add accessors for struct puffs_node to prepare for removal from exported headers.
|
| #
80234546 |
| 01-Jul-2007 |
pooka <pooka@NetBSD.org> |
Instead of requesting various pieces of information from node-creating methods using "please fill me"-pointers, pass "struct puffs_newinfo *" and provide methods to fill in new node info.
|
| #
564336f0 |
| 24-Jun-2007 |
pooka <pooka@NetBSD.org> |
Introduce puffs_pn_remove() to signal that a node has been deleted and destroyed, but not yet reclaimed. This prevents puffs_pn_nodewalk() from returning stale entries. Make nullfs use this (some f
Introduce puffs_pn_remove() to signal that a node has been deleted and destroyed, but not yet reclaimed. This prevents puffs_pn_nodewalk() from returning stale entries. Make nullfs use this (some file systems are a bit too happy with recycling inode numbers).
show more ...
|
| #
f8326bf9 |
| 06-Jun-2007 |
pooka <pooka@NetBSD.org> |
Move puffs to a two clause license where it already isn't so. And as agc pointed out, even files with the third clause were already effectively two clause because of a slight bug in the language...
|
| #
95a18d20 |
| 12-Apr-2007 |
pooka <pooka@NetBSD.org> |
Hide struct puffs_usermount from the rest of the world and provide accessors for interesting data in it. Namely, you can now get pu->pu_privdata with puffs_getspecific(), pu->pu_pn_root with puffs_s
Hide struct puffs_usermount from the rest of the world and provide accessors for interesting data in it. Namely, you can now get pu->pu_privdata with puffs_getspecific(), pu->pu_pn_root with puffs_set/getroot() and pu->pu_maxreqlen with puffs_getmaxreqlen().
show more ...
|
| #
dd4643d8 |
| 29-Mar-2007 |
pooka <pooka@NetBSD.org> |
Remove check against null parameter along with the XXX comment wondering why the check was there. CID 4408
|
| #
05861b92 |
| 15-Jan-2007 |
pooka <pooka@NetBSD.org> |
Checkpoint some more work in progress: for the benefit those file system backends which operate purely based on paths, push out more path management into the library and make path management more abs
Checkpoint some more work in progress: for the benefit those file system backends which operate purely based on paths, push out more path management into the library and make path management more abstract: enable a file system to define a bunch of path management callbacks, which are used by the framework. Management of normal /this/is/a/path type paths is provided by the library.
show more ...
|
| #
e639bec8 |
| 11-Jan-2007 |
pooka <pooka@NetBSD.org> |
Add preliminary code for a nullfs layer, which can be used to mount a directory hierarchy to another point, just like with the kernel nullfs. This is not really a layering scheme yet, but it should
Add preliminary code for a nullfs layer, which can be used to mount a directory hierarchy to another point, just like with the kernel nullfs. This is not really a layering scheme yet, but it should evolve into one. Currently it can just be used to do 1:1 mapping.
show more ...
|
| #
184a7d78 |
| 29-Dec-2006 |
pooka <pooka@NetBSD.org> |
checkpoint some experimental work-in-progress, namely:
Add support for having multiple outstanding operations. This is done by exposing enough interfaces so that it is convenient to have the main e
checkpoint some experimental work-in-progress, namely:
Add support for having multiple outstanding operations. This is done by exposing enough interfaces so that it is convenient to have the main event loop in the implementation itself and by providing a continuation framework for convinient blocking and rescheduling.
works fine, but will undergo further cleanup & development
show more ...
|