Commit Graph

390 Commits

Author SHA1 Message Date
njoly
6ddf50a26a Kill extra Fc macro. 2012-07-28 09:56:09 +00:00
manu
8502ba8ea3 - Improve PUFFS_KFLAG_CACHE_FS_TTL by reclaiming older inactive nodes.
The normal kernel behavior is to retain inactive nodes in the freelist
until it runs out of vnodes. This has some merit for local filesystems,
where the cost of an allocation is about the same as the cost of a
lookup. But that situation is not true for distributed filesystems.
On the other hand, keeping inactive nodes for a long time hold memory
in the file server process, and when the kernel runs out of vnodes, it
produce reclaim avalanches that increase lattency for other operations.

We do not reclaim inactive vnodes immediatly either, as they may be
looked up again shortly. Instead we introduce a grace time and we
reclaim nodes that have been inactive beyond the grace time.

- Fix lookup/reclaim race condition.

The above improvement undercovered a race condition between lookup and
reclaim. If we reclaimed a vnode associated with a userland cookie while
a lookup returning that same cookiewas inprogress, then the kernel ends
up with a vnode associated with a cookie that has been reclaimed in
userland. Next operation on the cookie will crash (or at least confuse)
the filesystem.

We fix this by introducing a lookup count in kernel and userland. On
reclaim, the kernel sends the count, which enable userland to detect
situation where it initiated a lookup that is not completed in kernel.
In such a situation, the reclaim must be ignored, as the node is about
to be looked up again.
2012-07-21 05:17:10 +00:00
wiz
db0ea5f9de Bump date for previous, remove trailing whitespace. 2012-06-27 20:30:52 +00:00
manu
d1056538cc Pass the FAF flag to handlers:
- setattr_ttl is updated to add a flag argument. Since it was not present in
  a previous release, we can change its API
- write2 is introduced, this is write with an extra flag for FAF.
- fsync already has the FAF information in a flag and needs no change
- for other operations, FAF is unconditional
2012-06-27 13:25:23 +00:00
abs
9e66e6d75e Update old-style definitions to ANSI, remove a couple of register
definitions along the way. Fixed gcc 4.1 build (thank you vax)
2012-06-25 22:32:43 +00:00
wiz
d2ca09c94d Bump date for previous.
New sentence, new line; remove trailing whitespace; fix typos;
punctuation nits.
2012-04-18 14:24:26 +00:00
manu
70d8192475 - 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()
2012-04-18 00:57:21 +00:00
wiz
72e34f2f4a Split file system.
Comma fixes.
Remove dangling "and".
Bump date for previous.
2012-04-08 16:09:55 +00:00
manu
fb4eb35384 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)
2012-04-08 15:07:45 +00:00
matt
fa835e8c8b These directories default to WARNS?=5 2012-03-21 05:37:42 +00:00
njoly
874d053d0b Use puffs_access() return value in the VA_UTIMES_NULL case. 2012-03-15 12:49:36 +00:00
joerg
66dd2755f5 Add __printflike attribution to use vprintf and friends with an argument
as format string.
2012-03-15 02:02:20 +00:00
njoly
f5d424631e Remove obsolete puffs_suspend(3) xref. 2011-12-26 17:59:07 +00:00
riastradh
dade315727 Fix error reporting in puffs_framev_enqueue_waitevent and callers.
ok christos
2011-12-19 15:36:26 +00:00
skrll
79fb68b068 Deal with __MACHINE_STACK_GROWS_UP machines.
constify the other psize while I'm here.

Thanks to Christos for looking.
2011-12-06 21:15:39 +00:00
manu
154cec5236 Rollback previous change as it breaks autmates tests 2011-11-25 15:02:02 +00:00
manu
bd5d68a6d1 Documentation fix
Evgeniy Ivanov <lolkaantimat@gmail.com>
2011-11-24 01:59:25 +00:00
manu
77ac17e5c3 Remove files specified in pcn.
When remove files using name from pnode, another link on this file
can be unlinked. E.g. "touch 1; ln 1 2; rm 2" will remove file named
"1". Thus puffs_null_node_remove should remove directory entry which
name is provided by pcn (as said in puffs_ops.3). Caller should
provide appropriately initialized pcn.

From Evgeniy Ivanov <lolkaantimat@gmail.com>
2011-11-24 01:58:52 +00:00
manu
c068d4996c Remove pnode of overwritten file.
When puffs_null_node_rename() overwrites existing file, its pnode
must be removed, because src pnode already represents this file.

From Evgeniy Ivanov <lolkaantimat@gmail.com>
2011-11-24 01:55:33 +00:00
chs
81742ac3ab fix crashes caused by using the results of getcontext()
after the caller returns.
2011-11-14 01:27:42 +00:00
yamt
9647763d4a puffs_cc_yield: fix a cc leak. PR/44679 2011-11-02 16:43:04 +00:00
joerg
9eba1e423c Use __dead 2011-08-29 20:41:06 +00:00
manu
be95d60797 Add a flag to VOP_LISTEXTATTR(9) so that the vnode interface can tell the
filesystem in which format extended attribute shall be listed.

There are currently two formats:
- NUL-terminated strings, used for listxattr(2), this is the default.
- one byte length-pprefixed, non NUL-terminated strings, used for
  extattr_list_file(2), which is obtanined by setting the
  EXTATTR_LIST_PREFIXLEN flag to VOP_LISTEXTATTR(9)

This approach avoid the need for converting the list back and forth, except
in libperfuse, since FUSE uses NUL-terminated strings, and the kernel may
have requested EXTATTR_LIST_PREFIXLEN.
2011-07-04 08:07:29 +00:00
manu
4f82f2460e From Evgeniy Ivanov: puffs_node_readdir() should set eofflag to one, when
end-of-directory is reached.
2011-06-27 12:06:19 +00:00
manu
503fb643db Commit fix for misc/45029.
Approved by pooka@
2011-06-24 16:59:29 +00:00
mrg
493d341048 various build fixes for gcc 4.5. from chuq. XXX i'm not sure all of
these work properly wtf pointer aliasing, but there are no casts at
least...

the lib/libpuffs/puffs_priv.h is definately a real bug fix.

from chuq.
2011-06-20 09:11:16 +00:00
manu
7f87f63c56 Call advlock method if supplied 2011-05-03 13:16:47 +00:00
manu
7a675e4eab In node_lookup() ops, pcn->pcn_nameiop contains a NAMEI_* constant, not
PUFFSLOOKUP_*
2011-04-19 10:35:24 +00:00
yamt
5c50d59d8b puffs__cc_destroy: clear PCC_HASCALLER. the caller info is not
necessarily relevant to the next life of the cc.  this also fixes
the failure of the assertion in the next line.
2011-03-04 09:47:47 +00:00
pooka
aedd7db813 Support rest of file types in vtype -> s_ifmt 2011-02-17 17:55:36 +00:00
pooka
78bedf0f20 st_blocks is in units of DEV_BSIZE, not st_blksize.
from Derrik Pates
2011-02-17 15:41:34 +00:00
yamt
79d46db770 typo in a comment 2011-01-10 23:20:45 +00:00
pooka
33c6814d7a document abortop. part of PR kern/44208 2010-12-13 09:06:51 +00:00
pooka
248168affc Remove PUFFS_WITH_THREADS ifdef garbage, just use libc weak symbols. 2010-12-06 14:50:34 +00:00
pooka
65cdb57245 print to stderr instead of stdout 2010-08-20 16:35:05 +00:00
pooka
01e9b21900 Default f_namemax to MAXNAMLEN, mostly for initial statvfs struct
passed to kernel in mount.

XXX: there's currently no way for a file server to override the
one passed in mount.
2010-07-15 21:53:10 +00:00
pooka
e894ab517b Export the opid -> opstr tables (for outside debugging use). 2010-07-11 12:29:08 +00:00
pooka
54aeac7f90 unwhine lint 2010-07-06 21:58:18 +00:00
pooka
d8a0b8cdce stat mount target path only if we're actually goint to use it.
This avoids errors from the comfd case when the mount target does
not exist in our local namespace.
2010-07-06 18:22:20 +00:00
pooka
a6b3b71bb8 set time_t compat where necessary 2010-07-06 18:01:14 +00:00
pooka
afdc25dbdf When using the top secret PUFFS_COMFD model, write out size of the
puffs kernel args before the contents.  This allows parties which
have no clue about the contents to proxy the protocol easily.
2010-07-06 13:27:16 +00:00
pooka
0e05405bd1 Reenable pathconf now that the retval argument is register_t. 2010-06-07 11:22:36 +00:00
pooka
a784ae74af Make retval argument for pathconf a register_t to match VOP_PATHCONF.
This makes the size the same on 64bit archs.  Don't bother bumping
any version, since you'd have explicitly had to jump through some
hoops to use pathconf before.
2010-06-07 11:21:31 +00:00
pooka
a7bb34b4fd Actually, disable pathconf for a while longer: the retval needs a
little finetuning (not that everyone is jumping right to using it,
but fixing will have to wait until tomorrow, and who knows what
i'll forget during the night and how long it will eventually take).
2010-06-06 23:11:05 +00:00
pooka
aef13c83d0 signal pathconf in the vector of supported ops 2010-06-06 22:44:54 +00:00
pooka
33b074be7e add option string for no attribute cache
(foreseeing the odd event I might actually implement one some day)
2010-05-21 11:29:42 +00:00
pooka
335bcd0d3c mention extended attribute ops 2010-05-21 11:20:50 +00:00
pooka
c3be8a8cd5 * support extended attributes
* bump major due to structure growth
* add some spare space
* remove ABI sillyness
2010-05-21 10:50:52 +00:00
pooka
539062e7e1 adjust for protocol changes 2010-05-21 10:43:07 +00:00
pooka
651aab9fcd Don't try to print the names of messages we don't know about. 2010-05-21 08:46:14 +00:00