summaryrefslogtreecommitdiff
path: root/lib/libpuffs
AgeCommit message (Collapse)Author
2023-03-31libpuffs: ignore lint warning about nested extern for nowrillig
This should be properly fixed by someone familiar with puffs.
2023-03-28lint: warn about extern declarations outside headersrillig
https://mail-index.netbsd.org/tech-userlevel/2023/03/15/msg013727.html
2022-04-19lib: remove CONSTCOND commentrillig
Since 2021-01-31, lint doesn't need it anymore for the common pattern of 'do ... while (0)'.
2022-01-22Allow calling puffs_mount(3) before puffs_daemon(3)pho
puffs_daemon(3) creates a pipe before forking, and the parent process waits for the child to either complete puffs_mount(3) or fail. If a user calls puffs_daemon(3) after puffs_mount(3), the function deadlocks. While this error-reporting functionality is really a nice thing to have, deadlocking is not great. If the filesystem has already been mounted, puffs_mount(3) should just daemonize the process and return. This became an issue because fuse_daemonize(3) in FUSE API had no such requirement and some FUSE filesystems in the wild suffered deadlocks.
2021-12-03Use size_t in place of voff_t in puffs_setrootinfo(3)pho
Chuck Silvers pointed out that voff_t was also supposed to be kernel-only. The correct type to use in userland would be off_t, but since changing vsize_t to either voff_t or off_t is an ABI change on 32-bit platforms, we use size_t knowing that it is technically incorrect.
2021-12-03Avoid using register_t or vsize_t in <puffs.h>pho
<puffs.h> is a user-space header, and should not use any of kernel-only types. It's not reasonable to require user-land filesystems to #define _KERNTYPES.
2021-10-30puffs(3): Replace realloc(x * y) with reallocarrnia
2021-09-11Add missing double p and d for stopped and overriden accordingly.andvar
Fix few more typos along the way, mainly in copy-pasted comments.
2021-08-04fix typos in puffs man pages.andvar
2021-03-08cast to the proper enums for lintchristos
2019-12-27s/conjuction/conjunction/msaitoh
2019-11-02puffs_null_node_fsync: don't leak directory handletnn
Directory handles returned by opendir must be closed by closedir. Also directory(3) says we mustn't close(2) descriptors returned by dirfd(3)
2019-09-23Restore binary compatibility by using the statvfs90 structure internally.christos
2018-07-09revert previous now that MAP_ALIGNED has been fixed.christos
2018-07-08correct previous cast.christos
2018-07-08cast for lintchristos
2018-06-30use a switch.christos
2018-02-08Typos.dholland
2017-11-05fix error messages (use __func__, quotes)christos
also differentiate between canonical and non-relative.
2017-07-03Remove workaround for ancient HTML generation code.wiz
2017-06-14remove now unnecessary casts.christos
2017-05-31Adjust to prototype.christos
2017-05-09Only add a write filter for sockets. It is not supported for vnodes, orchristos
for 1/2 closed fifos (which we both have now).
2016-08-29mention puffs_node_pathconf and puffs_node_advlocktnn
2016-04-11there is no pflags, just flags.christos
2016-01-23Define _KERNTYPES for things that need it.christos
2015-11-12consistency fixes.christos
2015-11-09fix return typechristos
2015-06-17fix error messageschristos
2015-02-16filesystem -> file systemwiz
2015-02-16Sort sections.wiz
2015-02-16Bump date for previous.wiz
filesystem -> file system
2015-02-15Add PUFFS_KFLAG_NOFLUSH_META to prevent sending metadata flush to FUSEmanu
FUSE filesystems do not expect to get metadata updates for [amc]time and size, they updates the value on their own after operations. The PUFFS PUFFS_KFLAG_NOFLUSH_META option prevents regular metadata cache flushes to the filesystem , and libperfuse uses it to match Linux FUSE behavior. While there, fix a bug in SETATTR: do not update kernel metadata cache from SETATTR reply when the request is asynchronous, as we do not have the reply yet.
2014-12-22Do not warn about relative path because of trailing slashmanu
libpuffs calls realpath() to obtain an absolute path to use for mounting. If the obtained path is different from the one given by the caller, a warning is issued. This included the situation where the path passed by the caller just have trailing slashes, a situation where we just want them to be striped without a warning.
2014-10-31Bump date for previous. Remove trailing space.wiz
2014-10-31libpuffs support for fallocate and fdiscard operationsmanu
2014-10-18src is too big these days to tolerate superfluous apostrophes. It'ssnj
"its", people!
2014-08-16Bump date for previous.wiz
2014-08-16Add an open2 method, like open but with an additionnal oflags usedmanu
by the filesystem to send back information about the file. This is used to implement PUFFS_OPEN_IO_DIRECT by which the filesystem tells the kernel that read/write should bypass the page cache.
2014-03-18Merge riastradh-drm2 to HEAD.riastradh
2013-11-06revert previous, will turn off globally.christos
2013-11-06XXX: gcc initialization (mc68k gcc-4.5.x gcc-4.8.x)christos
2013-07-20Use Mt for email addresses.wiz
2013-01-23Assert equality, not assignment, in puffs__fsframe_cmp.riastradh
2012-08-16Bump date for previous.wiz
2012-08-16Whitespace fixes. Bump date for previous.wiz
2012-08-16Fix regression that has been introduced when the lookup/reclaim racemanu
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.
2012-08-10Use more markup. New sentence, new line. Bump date for previous.wiz
2012-08-10Add PUFFS_KFLAG_CACHE_DOTDOT so that vnodes hold a reference on theirmanu
parent, keeping them active, and allowing to lookup .. without sending a request to the filesystem. Enable the featuure for perfused, as this is how FUSE works.
2012-08-10Fix race condition between (create|mknod|mkdir|symlino) and reclaim, justmanu
like we did it between lookup and reclaim.