Home | History | Annotate | Download | only in libpuffs
History log of /src/lib/libpuffs/null.c
RevisionDateAuthorComments
 1.36  11-Sep-2021  andvar Add missing double p and d for stopped and overriden accordingly.
Fix few more typos along the way, mainly in copy-pasted comments.
 1.35  02-Nov-2019  tnn puffs_null_node_fsync: don't leak directory handle

Directory handles returned by opendir must be closed by closedir.
Also directory(3) says we mustn't close(2) descriptors returned by dirfd(3)
 1.34  23-Sep-2019  christos Restore binary compatibility by using the statvfs90 structure internally.
 1.33  25-Nov-2011  manu branches: 1.33.40;
Rollback previous change as it breaks autmates tests
 1.32  24-Nov-2011  manu 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>
 1.31  24-Nov-2011  manu 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>
 1.30  27-Jun-2011  manu branches: 1.30.2;
From Evgeniy Ivanov: puffs_node_readdir() should set eofflag to one, when
end-of-directory is reached.
 1.29  24-Jun-2011  manu Commit fix for misc/45029.
Approved by pooka@
 1.28  18-Oct-2009  pooka include some headers we use
 1.27  08-Jan-2009  lukem Cast a value to time_t (not unsigned) when comparing to timespec tv_sec
 1.26  26-Nov-2008  pooka support:
a) readdir cookies and eofflag
b) file handle routines.

File handle routines are REALLY ugly and are not stable, i.e.
the file handle will be lost if the file server goes byebye.
They probably should be redone to not use getfh(), but for nullfs
I wanted to make them the same as when the file system is accessed
without the null layer. Well, turns out it doesn't pass anyway
since the kernel adds the fsid tags for fhandle_t. Anyway, it's
useful for some limited hacking purposes, so I'll commit this
since it works .. kinda.
 1.25  12-Aug-2008  pooka Replace void * by puffs_cookie_t where appropriate. No functional change.
 1.24  30-Nov-2007  pooka branches: 1.24.8;
Rototill.

Ok, ok, a few more words about it: stop holding puffs_cc as a holy
value and passing it around to almost every possible place (popquiz:
which kernel variable does this remind you of?). Instead, pass
the natural choice, puffs_usermount, and fetch puffs_cc via
puffs_cc_getcc() only in routines which actually need it. This
not only simplifies code, but (thanks to the introduction of
puffs_cc_getcc()) enables constructs which weren't previously sanely
possible, say layering as a curious example.

There's still a little to do on this front, but this was the major
fs interface blast.
 1.23  27-Nov-2007  pooka Remove "puffs_cid" from the puffs interface following l-removal
from the kernel vfs interfaces. puffs_cc_getcaller(pcc) can be
used now should the same information be desired.
 1.22  05-Nov-2007  pooka Call puffs_genfs_reclaim directly instead of through an extra jumpgate.
 1.21  01-Jul-2007  pooka branches: 1.21.4;
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.
 1.20  01-Jul-2007  pooka Instead of supplying a plain pid, supply an abstract struct puffs_cid *,
which can currently be used to query the pid and lwpid.
 1.19  25-Jun-2007  pooka fold in common code for node creation. no functional change.
 1.18  24-Jun-2007  pooka Since we locate in-memory nodes based on the inode number, stat a
file always after creation to cache the inode number given by the
backend file system. Otherwise we would not find a newly created
node from incore and create another one. In practise this was
pretty well hidden by the kernel name cache.
 1.17  24-Jun-2007  pooka Introduce puffs_null_setops(), which initializes the ops vector with
puffs nullfs ops.
 1.16  24-Jun-2007  pooka 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).
 1.15  24-Jun-2007  pooka don't return errno from a function which returns an fd - there's
a "little" room for confusion. instead, return -1 and let the
caller grab errno.
 1.14  06-Jun-2007  pooka 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...
 1.13  12-Apr-2007  pooka 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().
 1.12  11-Apr-2007  pooka * support nodetofh and fhtonode callbacks
* use new signature of node_readdir
 1.11  16-Mar-2007  pooka va->va_mode doesn't contain the full argument to the mknod() system call,
so introduce puffs_addvtype2mode() and use that in null.c to generate the
proper syscall argument
 1.10  16-Mar-2007  pooka return errno instead of -1 if file is not present in lookup
 1.9  13-Mar-2007  pooka Create in-memory nodes only per unique inode, not unique pathname.
Solves problem with e.g. cache coherency of hardlinked files.
 1.8  15-Feb-2007  pooka Readlink should place the length of the link (without terminating
nul) in the length field. Make it so.
 1.7  15-Feb-2007  pooka use puffs_path_walkcmp() instead of a homegrown comparison routine
 1.6  15-Feb-2007  pooka * get rid of the holy kernel-given ISDOTDOT, and instead define a
macro which does strcmp against ".." and (the untranslated)
componentname
* make PUFFS_FLAG_BUILDPATH build paths also if dotdot is the case,
and adapt the regular path objects to this
* make nullfs lookup readable because we can now get rid of dotdot
processing there
 1.5  27-Jan-2007  agc If we can't set the attributes when making the directory, use rmdir to
remove the directory, not unlink.
 1.4  15-Jan-2007  pooka 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.
 1.3  11-Jan-2007  pooka implement fsync
 1.2  11-Jan-2007  pooka * do the l-variations of syscalls, since some nodes are symlinks
* truncate only regular files to set size
* do the chmod()-dance for cache flush to now write-protected files
until I can think of a nicer way to solve this
 1.1  11-Jan-2007  pooka 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.
 1.21.4.2  09-Jan-2008  matt sync with HEAD
 1.21.4.1  06-Nov-2007  matt sync with HEAD
 1.24.8.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.30.2.1  17-Apr-2012  yamt sync with head
 1.33.40.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411

RSS XML Feed