Home | History | Annotate | Download | only in ufs
History log of /src/sys/ufs/ufs/inode.h
RevisionDateAuthorComments
 1.79  23-Mar-2022  andvar fix few typos for word "previous(ly)" in comments.
 1.78  20-Aug-2020  christos Don't cache id's for vnodes that have ACLs. ok chs@
 1.77  18-Apr-2020  christos Extended attribute support for ffsv2, from FreeBSD.
 1.76  20-Aug-2017  maya branches: 1.76.4; 1.76.14;
update the comment to the current IFMT/permissions location
 1.75  14-Aug-2016  jdolecek again remove IN_E4EXTENTS; it's not used anywhere any more, and it's better to keep fs-specific flags out of generic headers anyway
 1.74  04-Aug-2016  jdolecek move i_e2fs_* defines from ufs/inode.h to ext2fs/ext2fs_dinode.h, where they belong; they don't seem to be used anywhere else then ext2fs code any more
 1.73  04-Aug-2016  jdolecek rename struct ext2fs_dinode attribute e2di_dacl to correct
e2di_size_high; even Linux ext2 filesystem code actually uses it
unconditionally this way and ext4 code finally also calls it that way
in their struct definition too; if there was any trace of this for other
purpose it's long gone
 1.72  03-Jun-2016  christos branches: 1.72.2;
ext4 extents glue
 1.71  26-May-2014  dholland branches: 1.71.4;
Fix previous. Anyone have a brown paper bag?
 1.70  26-May-2014  ryoon Close comments
 1.69  26-May-2014  dholland Remove lfs-only inode flags.
 1.68  17-May-2014  martin Reorder struct ufid members to avoid padding (and save 4 bytes) on some
architectures.
 1.67  14-May-2014  martin Make filehandles on UFS based filesystems use proper 64bit inodes.
32bit restriction noticed by Taylor R Campbell.
 1.66  08-May-2014  hannken Add a global vnode cache:

- vcache_get() retrieves a referenced and initialised vnode / fs node pair.
- vcache_remove() removes a vnode / fs node pair from the cache.

On cache miss vcache_get() calls new vfs operation vfs_loadvnode() to
initialise a vnode / fs node pair. This call is guaranteed exclusive,
no other thread will try to load this vnode / fs node pair.

Convert ufs/ext2fs, ufs/ffs and ufs/mfs to use this interface.

Remove now unused ufs/ufs_ihash

Discussed on tech-kern.

Welcome to 6.99.41
 1.65  09-Jun-2013  dholland branches: 1.65.2; 1.65.6;
Remove lfs-only inumber field (and its supporting union) from struct
ufs1_dinode.
 1.64  19-Nov-2012  jakllsch - Add e2di_version, e2di_nblock_high, e2di_facl_high fields to ext2fs_dinode.

- Update i_e2fs_ aliases to match.

- ext2fs_bswap support for these ext2fs_dinode fields.

(e2di_version and e2di_facl_high replace previously reserved fields.
e2di_nblock_high was formerly e2di_nfrag and e2di_fsize, however these
are currently defined in e2fsprogs as only being relevant for HURD.)
 1.63  19-Nov-2012  jakllsch Move i_e2fs_rdev define to be adjacent to the field it aliases.
 1.62  04-Jun-2012  riastradh branches: 1.62.2;
Use two separate comments for stub where IN_RENAME was.
 1.61  04-Jun-2012  riastradh Kill the IN_RENAME in-core inode flag in ufs and ext2fs.

Now that rename works we need not to wave this sort of voodoo at it.

ok dholland
 1.60  05-May-2012  yamt comments and cosmetics. no functional changes.
 1.59  02-Jan-2012  perseant * Remove PGO_RECLAIM during lfs_putpages()' call to genfs_putpages(),
to avoid a live lock in the latter when reclaiming a vnode with
dirty pages.

* Add a new segment flag, SEGM_RECLAIM, to note when a segment is
being written for vnode reclamation, and record which inode is being
reclaimed, to aid in forensic debugging.

* Add a new segment flag, SEGM_SINGLE, so that opportunistic writes
can write a single segment's worth of blocks and then stop, rather
than writing all the way up to the cleaner's reserved number of
segments.

* Add assert statements to check mutex ownership is the way it ought
to be, mostly in lfs_putpages; fix problems uncovered by this.

* Don't clear VU_DIROP until the inode actually makes its way to disk,
avoiding a problem where dirop inodes could become separated
(uncovered by a modified version of the "ckckp" forensic regression
test).

* Move the vfs_getopsbyname() call into lfs_writerd. Prepare code to
make lfs_writerd notice when there are no more LFSs, and exit losing
the reference, so that, in theory, the module can be unloaded. This
code is not enabled, since it causes a crash on exit.

* Set IN_MODIFIED on inodes flushed by lfs_flush_dirops. Really we
only need to set IN_MODIFIED if we are going to write them again
(e.g., to write pages); need to think about this more.

Finally, several changes to help avoid "no clean segments" panics:

* In lfs_bmapv, note when a vnode is loaded only to discover whether
its blocks are live, so it can immediately be recycled. Since the
cleaner will try to choose ~empty segments over full ones, this
prevents the cleaner from (1) filling the vnode cache with junk, and
(2) squeezing any unwritten writes to disk and running the fs out of
segments.

* Overestimate by half the amount of metadata that will be required
to fill the clean segments. This will make the disk appear smaller,
but should help avoid a "no clean segments" panic.

* Rearrange lfs_writerd. In particular, lfs_writerd now pays
attention to the number of clean segments available, and holds off
writing until there is room.
 1.58  12-Jul-2011  dholland branches: 1.58.2; 1.58.6;
Currently, ufs_lookup produces five auxiliary results that are left in
the vnode when lookup returns and fished out again later.

1. Create struct ufs_lookup_results to hold these.

2. Call the ufs_lookup_results instance in struct inode "i_crap" to be
clear about exactly what's going on, and to distinguish the lookup
results from respectable members of struct inode.

3. Update references to these members in the directory access
subroutines.

4. Include preliminary infrastructure for checking that the i_crap
being used is still valid when it's used. This doesn't actually do
anything yet.

5. Update the way ufs_wapbl_rename manipulates these elements to use
the new data structures. I have not changed the manipulation; it may
or may not be correct but I continue to suspect that it is not.

The word of the day is "stigmergy".
 1.57  28-Jul-2010  hannken ext2fs,ffs: free on disk inodes in the reclaim routine.
Remove now unneeded vnode flag VI_FREEING.

Welcome to 5.99.38.

Ok: Andrew Doran <ad@netbsd.org>
 1.56  22-Feb-2009  ad branches: 1.56.2; 1.56.4;
PR kern/26878 FFSv2 + softdep = livelock (no free ram)
PR kern/16942 panic with softdep and quotas
PR kern/19565 panic: softdep_write_inodeblock: indirect pointer #1 mismatch
PR kern/26274 softdep panic: allocdirect_merge: ...
PR kern/26374 Long delay before non-root users can write to softdep partitions
PR kern/28621 1.6.x "vp != NULL" panic in ffs_softdep.c:4653 while unmounting a softdep (+quota) filesystem
PR kern/29513 FFS+Softdep panic with unfsck-able file-corruption
PR kern/31544 The ffs softdep code appears to fail to write dirty bits to disk
PR kern/31981 stopping scsi disk can cause panic (softdep)
PR kern/32116 kernel panic in softdep (assertion failure)
PR kern/32532 softdep_trackbufs deadlock
PR kern/37191 softdep: locking against myself
PR kern/40474 Kernel panic after remounting raid root with softdep

Retire softdep, pass 2. As discussed and later formally announced on the
mailing lists.
 1.55  23-Nov-2008  mrg branches: 1.55.4;
add support for 32 bit uid/gid fields in ext2, but only do so for
when the revision is > REV0.
 1.54  23-Sep-2008  christos branches: 1.54.2; 1.54.4;
fix reversed comment, from anon ymous
 1.53  31-Jul-2008  simonb Be consistent with #define<tab>.
 1.52  31-Jul-2008  simonb Merge the simonb-wapbl branch. From the original branch commit:

Add Wasabi System's WAPBL (Write Ahead Physical Block Logging)
journaling code. Originally written by Darrin B. Jewell while
at Wasabi and updated to -current by Antti Kantee, Andy Doran,
Greg Oster and Simon Burge.

OK'd by core@, releng@.
 1.51  09-Jan-2008  ad branches: 1.51.6; 1.51.10; 1.51.12; 1.51.14; 1.51.16;
Go back to freeing on disk inodes in the inactive routine. It would be
better not to do this, but it rules out potential side effects with softdep.
 1.50  07-Jan-2008  ad Fix 'panic: softdep_update_inodeblock: update failed'.
 1.49  02-Jan-2008  ad Merge vmlocking2 to head.
 1.48  09-Apr-2007  pooka branches: 1.48.10; 1.48.16; 1.48.18; 1.48.22;
fix comment: struct fid is in fstypes.h now
 1.47  04-Mar-2007  christos branches: 1.47.2; 1.47.4;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.46  11-Dec-2005  christos branches: 1.46.26;
merge ktrace-lwp.
 1.45  27-Sep-2005  yamt introduce "ufs_ops" and use it for ITIMES.
 1.44  12-Sep-2005  christos - access the ffs and ext2fs itimes functions through a pointer, so that
if the filesystem is not compiled in the kernel still links. Probably
a better solution is to use weak symbols.
- move the filesystem-specific itime macros to the filesystem header files.
 1.43  12-Sep-2005  christos Use nanotime() to update the time fields in filesystems. Convert the code
from macros to real functions. Original patch and review from chuq.
Note: ext2fs only keeps seconds in the on-disk inode, and msdosfs does not
have enough precision for all fields, so this is not very useful for those
two.
 1.42  19-Aug-2005  christos 64 bit inode changes.
 1.41  26-Feb-2005  perry branches: 1.41.4;
nuke trailing whitespace
 1.40  23-Jan-2005  rumble branches: 1.40.2;
Bring in Ian Dowse's Dirhash from FreeBSD. Hash tables of
directories are created on the fly and used to increase
performance by circumventing ufs_lookup's linear search.

Dirhash is enabled by the UFS_DIRHASH option, but not
by default.
 1.39  14-Aug-2004  mycroft branches: 1.39.4;
Push atime/mtime updates even further -- into the reclaim path, so they happen
rarely in the normal case. (Note: This happens at reboot/shutdown time because
all file systems are unmounted.)

Also, for IN_MODIFY, use IN_ACCESSED, not IN_MODIFIED; otherwise "ls -l" of
your device node or FIFO would cause the time stamps to get written too
quickly.
 1.38  14-Aug-2004  mycroft Add a new flag, IN_MODIFY. This is like IN_UPDATE|IN_CHANGE, but unlike
setting those flags, it does not cause the inode to be written in the periodic
sync. This is used for writes to special files (devices and named pipes) and
FIFOs.

Do not preemptively sync updates to access times and modification times. They
are now updated in the inode only opportunistically, or when the file or device
is closed. (Really, it should be delayed beyond close, but this is enough to
help substantially with device nodes.)

And the most amusing part:
Trickle sync was broken on both FFS and ext2fs, in different ways. In FFS, the
periodic call to VFS_SYNC(MNT_LAZY) was still causing all file data to be
synced. In ext2fs, it was causing the metadata to *not* be synced. We now
only call VOP_UPDATE() on the node if we're doing MNT_LAZY. I've confirmed
that we do in fact trickle correctly now.
 1.37  25-May-2004  hannken Add ffs internal snapshots. Written by Marshall Kirk McKusick for FreeBSD.

- Not enabled by default. Needs kernel option FFS_SNAPSHOT.
- Change parameters of ffs_blkfree.
- Let the copy-on-write functions return an error so spec_strategy
may fail if the copy-on-write fails.
- Change genfs_*lock*() to use vp->v_vnlock instead of &vp->v_lock.
- Add flag B_METAONLY to VOP_BALLOC to return indirect block buffer.
- Add a function ffs_checkfreefile needed for snapshot creation.
- Add special handling of snapshot files:
Snapshots may not be opened for writing and the attributes are read-only.
Use the mtime as the time this snapshot was taken.
Deny mtime updates for snapshot files.
- Add function transferlockers to transfer any waiting processes from
one lock to another.
- Add vfsop VFS_SNAPSHOT to take a snapshot and make it accessible through
a vnode.
- Add snapshot support to ls, fsck_ffs and dump.

Welcome to 2.0F.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.36  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.35  15-May-2003  kristerw branches: 1.35.2;
The C language does not permit statements of the form
(X ? Y : Z) = 0;
even though gcc handles this by a stupid extension.

Transform these to correct C.

Approved by fvdl.
 1.34  02-Apr-2003  fvdl Add support for UFS2. UFS2 is an enhanced FFS, adding support for
64 bit block pointers, extended attribute storage, and a few
other things.

This commit does not yet include the code to manipulate the extended
storage (for e.g. ACLs), this will be done later.

Originally written by Kirk McKusick and Network Associates Laboratories for
FreeBSD.
 1.33  17-Feb-2003  perseant Add code to UBCify LFS. This is still behind "#ifdef LFS_UBC" for now
(there are still some details to work out) but expect that to go
away soon. To support these basic changes (creation of lfs_putpages,
lfs_gop_write, mods to lfs_balloc) several other changes were made, to
wit:

* Create a writer daemon kernel thread whose purpose is to handle page
writes for the pagedaemon, but which also takes over some of the
functions of lfs_check(). This thread is started the first time an
LFS is mounted.

* Add a "flags" parameter to GOP_SIZE. Current values are
GOP_SIZE_READ, meaning that the call should return the size of the
in-core version of the file, and GOP_SIZE_WRITE, meaning that it
should return the on-disk size. One of GOP_SIZE_READ or
GOP_SIZE_WRITE must be specified.

* Instead of using malloc(...M_WAITOK) for everything, reserve enough
resources to get by and use malloc(...M_NOWAIT), using the reserves if
necessary. Use the pool subsystem for structures small enough that
this is feasible. This also obsoletes LFS_THROTTLE.

And a few that are not strictly necessary:

* Moves the LFS inode extensions off onto a separately allocated
structure; getting closer to LFS as an LKM. "Welcome to 1.6O."

* Unified GOP_ALLOC between FFS and LFS.

* Update LFS copyright headers to correct values.

* Actually cast to unsigned in lfs_shellsort, like the comment says.

* Keep track of which segments were empty before the previous
checkpoint; any segments that pass two checkpoints both dirty and
empty can be summarily cleaned. Do this. Right now lfs_segclean
still works, but this should be turned into an effectless
compatibility syscall.
 1.32  24-Jan-2003  fvdl Bump daddr_t to 64 bits. Replace it with int32_t in all places where
it was used on-disk, so that on-disk formats remain the same.
Remove ufs_daddr_t and ufs_lbn_t for the time being.
 1.31  01-Dec-2002  matt Add multiple inclusion protection for headers. Fix mismatched
variable declarations (missing const's) as needed.
 1.30  26-Nov-2002  yamt eliminate i_ino from in-core inode
and use local variable instead.

ok'ed by Frank van der Linden.
 1.29  06-Jul-2002  perseant Deal with fragment size changes better. For each fragment that can
exist on an on-disk inode, we keep a record of its size in struct inode,
which is updated when we write the block to disk. The cleaner routines
thus have ready access to what size is the correct size for this block,
on disk.

Fixed a related bug: if a file with fragments is being cleaned
(fragments being cleaned) at the same time it is being extended beyond
NDADDR blocks, we could write a bogus FINFO record that has a frag in the
middle; when it was cleaned this would give back bogus file data. Don't
write the indirect blocks in this case, since there is no need.

lfs_fragextend and lfs_truncate no longer require the seglock, but instead
take a shared lock, which the seglock locks exclusively.
 1.28  16-Jun-2002  perseant For synchronous writes, keep separate i/o counters for each write, so
processes don't have to wait for one another to finish (e.g., nfsd seems
to be a little happier now, though I haven't measured the difference).
Synchronous checkpoints, however, must always wait for all i/o to finish.

Take the contents of the callback functions and have them run in thread
context instead (aiodoned thread). lfs_iocount no longer has to be
protected in splbio(), and quite a bit less of the segment construction
loop needs to be in splbio() as well.

If lfs_markv is handed a block that is not the correct size according to
the inode, refuse to process it. (Formerly it was extended to the "correct"
size.) This is possibly more prone to deadlock, but less prone to corruption.

lfs_segclean now outright refuses to clean segments that appear to have live
bytes in them. Again this may be more prone to deadlock but avoids
corruption.

Replace ufsspec_close and ufsfifo_close with LFS equivalents; this means
that no UFS functions need to know about LFS_ITIMES any more. Remove
the reference from ufs/inode.h.

Tested on i386, test-compiled on alpha.
 1.27  18-Dec-2001  fvdl branches: 1.27.8; 1.27.10;
Bring over fixes from FreeBSD that weren't incorporated yet, mainly
from Kirk McKusick. They implement taking pending block/inode frees
into account for the sake of correct statfs() numbers, and adding
a new softdep type (newdirblk) to correctly handle newly allocated
directory blocks.

Minor additional changes: 1) swap the newly introduced fs_pendinginodes
and fs_pendingblock fields in ffs_sb_swap, and 2) declare lkt_held
in the debug version of the softdep lock structure volatile, as it
can be modified from interrupt context #ifdef DEBUG.
 1.26  26-Oct-2001  lukem this needs <ufs/ufs/quota.h>, so pull it in
 1.25  15-Sep-2001  chs branches: 1.25.2;
a whole bunch of changes to improve performance and robustness under load:

- remove special treatment of pager_map mappings in pmaps. this is
required now, since I've removed the globals that expose the address range.
pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's
no longer any need to special-case it.
- eliminate struct uvm_vnode by moving its fields into struct vnode.
- rewrite the pageout path. the pager is now responsible for handling the
high-level requests instead of only getting control after a bunch of work
has already been done on its behalf. this will allow us to UBCify LFS,
which needs tighter control over its pages than other filesystems do.
writing a page to disk no longer requires making it read-only, which
allows us to write wired pages without causing all kinds of havoc.
- use a new PG_PAGEOUT flag to indicate that a page should be freed
on behalf of the pagedaemon when it's unlocked. this flag is very similar
to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the
pageout fails due to eg. an indirect-block buffer being locked.
this allows us to remove the "version" field from struct vm_page,
and together with shrinking "loan_count" from 32 bits to 16,
struct vm_page is now 4 bytes smaller.
- no longer use PG_RELEASED for swap-backed pages. if the page is busy
because it's being paged out, we can't release the swap slot to be
reallocated until that write is complete, but unlike with vnodes we
don't keep a count of in-progress writes so there's no good way to
know when the write is done. instead, when we need to free a busy
swap-backed page, just sleep until we can get it busy ourselves.
- implement a fast-path for extending writes which allows us to avoid
zeroing new pages. this substantially reduces cpu usage.
- encapsulate the data used by the genfs code in a struct genfs_node,
which must be the first element of the filesystem-specific vnode data
for filesystems which use genfs_{get,put}pages().
- eliminate many of the UVM pagerops, since they aren't needed anymore
now that the pager "put" operation is a higher-level operation.
- enhance the genfs code to allow NFS to use the genfs_{get,put}pages
instead of a modified copy.
- clean up struct vnode by removing all the fields that used to be used by
the vfs_cluster.c code (which we don't use anymore with UBC).
- remove kmem_object and mb_object since they were useless.
instead of allocating pages to these objects, we now just allocate
pages with no object. such pages are mapped in the kernel until they
are freed, so we can use the mapping to find the page to free it.
this allows us to remove splvm() protection in several places.

The sum of all these changes improves write throughput on my
decstation 5000/200 to within 1% of the rate of NetBSD 1.5
and reduces the elapsed time for "make release" of a NetBSD 1.5
source tree on my 128MB pc to 10% less than a 1.5 kernel took.
 1.24  05-Jun-2001  mrg branches: 1.24.4; 1.24.6;
only include "fs_lfs.h" if _KERNEL_OPT.
 1.23  10-Jan-2001  chs branches: 1.23.2;
attach the softdep pagecache pseudo-buffers to the inode
so we can find them quickly in the softdep truncate path.
 1.22  06-Jul-2000  perseant Fix so non-kernel code will compile (_LKM)
 1.21  05-Jul-2000  perseant Clean up accounting of lfs_uinodes (dirty but unwritten inodes).

Make lfs_uinodes a signed quantity for debugging purposes, and set it to
zero as fs mount time.

Enclose setting/clearing of the dirty flags (IN_MODIFIED, IN_ACCESSED,
IN_CLEANING) in macros, and use those macros everywhere. Make
LFS_ITIMES use these macros; updated the ITIMES macro in inode.h to know
about this. Make ufs_getattr use ITIMES instead of FFS_ITIMES.
 1.20  03-Jul-2000  perseant Allow the number of free segments reserved for the cleaner to be
parametrized in the filesystem, defaulting to MIN_FREE_SEGS = 2 but set
to something more reasonable at newfs_lfs time.

Note the number of blocks that have been scheduled for writing but which
are not yet on disk in an inode extension, i_lfs_effnblks. Move
i_ffs_effnlink out of the ffs extension and onto the main inode, since
it's used all over the shared code and the lfs extension would clobber
it.

At inode write time, indirect blocks and inode-held blocks of inodes
that have i_lfs_effnblks != i_ffs_blocks are cleansed of UNWRITTEN disk
addresses, so that these never make it to disk.
 1.19  29-May-2000  mycroft branches: 1.19.2;
Pull in IN_ACCESSED changes and some MNT_LAZY `bug fixes' from FFS to EXT2FS.
 1.18  29-May-2000  mycroft Add a new inode flags called IN_ACCESSED. This used in place of IN_MODIFIED
to record that the atime was updated. In ffs_update(), we only do synchronous
writes if something *other* than the atime was changed.
 1.17  27-May-2000  perseant branches: 1.17.2;
Prevent dirops from getting around lfs_check and wedging the buffer cache.
All the dirop vnops now mark the inodes with a new flag, IN_ADIROP, which
is removed as soon as the dirop is done (as opposed to VDIROP which stays
until the file is written). To address one issue raised in PR#9357.
 1.16  18-Nov-1999  enami Define i_e2fs_rdev.
 1.15  18-Nov-1999  enami Cosmetic changes; fix indentation and usage of white spaces.
 1.14  15-Nov-1999  fvdl Add Kirk McKusick's soft updates code to the trunk. Not enabled by
default, as the copyright on the main file (ffs_softdep.c) is such
that is has been put into gnusrc. options SOFTDEP will pull this
in. This code also contains the trickle syncer.

Bump version number to 1.4O
 1.13  08-Jul-1999  wrstuden branches: 1.13.2; 1.13.4; 1.13.8;
Modify file systems to deal with struct lock in struct vnode. All leaf
fs's other than nfs use genfs_lock() for locking.

Modify lookup routines to set PDIRUNLOCK when they unlock the parrent.
 1.12  09-Mar-1999  perseant branches: 1.12.4;
Add IN_CLEANING flag for LFS
 1.11  01-Mar-1998  fvdl Merge with Lite2 + local changes
 1.10  11-Jun-1997  bouyer Add support for ext2fs, this needed a few modifications to ufs/ufs/inode.h:
- added an "union inode_ext" to struct inode, for the per-fs extentions.
For now only ext2fs uses it.
- i_din is now an union:
union {
struct dinode ffs_din; /* 128 bytes of the on-disk dinode. */
struct ext2fs_dinode e2fs_din; /* 128 bytes of the on-disk dinode. */
} i_din
Added a lot of #define i_ffs_* and i_e2fs_* to access the fields.
- Added two macros: FFS_ITIMES and EXT2FS_ITIMES. ITIMES calls the rigth
macro, depending on the time of the inode. ITIMES is used where necessary,
FFS_ITIMES and EXT2FS_ITIMES in other places.
 1.9  01-Sep-1996  mycroft Add a set of generic file system operations that most file systems use.
Also, fix some time stamp bogosities.
 1.8  15-Jun-1995  cgd compensate for timeval/timespec/stat structure changes.
 1.7  26-Mar-1995  jtc KERNEL -> _KERNEL
 1.6  21-Dec-1994  mycroft Add RCS ids where missing.
 1.5  14-Dec-1994  mycroft Sync with CSRG.
 1.4  20-Oct-1994  cgd update for new syscall args description mechanism, and deal safely
with wider types.
 1.3  30-Jun-1994  cgd fix the definition of a dev_t
 1.2  29-Jun-1994  cgd New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD'
 1.1  08-Jun-1994  mycroft branches: 1.1.1;
Update to 4.4-Lite fs code, with local changes.
 1.1.1.2  01-Mar-1998  fvdl Import 4.4BSD-Lite2
 1.1.1.1  01-Mar-1998  fvdl Import 4.4BSD-Lite for reference
 1.12.4.1  02-Aug-1999  thorpej Update from trunk.
 1.13.8.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.13.4.1  19-Oct-1999  fvdl Bring in Kirk McKusick's FFS softdep code on a branch.
 1.13.2.2  18-Jan-2001  bouyer Sync with head (for UBC+NFS fixes, mostly).
 1.13.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
 1.17.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.19.2.1  14-Sep-2000  perseant Pull up recent LFS kernel changes (approved by thorpej):

ufs/ufs/inode.h, 1.20--1.22 (add i_lfs_effnblks extension ;
make ITIMES aware of LFS_ITIMES;
_LKM protection so userland progs
compile)
ufs/ufs/ufs_vnops.c, 1.69, 1.71 (remove IN_ADIROP;
use ITIMES instead of FFS_ITIMES)
ufs/ufs/ufs_readwrite.c, 1.27 (use lfs_reserve in lfs_write)
ufs/lfs/lfs.h, 1.26--1.32 (define LFS_EST_* macros ;
change MIN_FREE_SEGS to lfs_minfreesegs ;
add avail and bfree to CLEANERINFO ;
change lfs_uinodes to signed ;
change lfs_dmeta to signed ;
add whitespace to line up structure
members ;
explicit cast to int32_t in LFS_EST_*
macros)
ufs/lfs/lfs_alloc.c, back out 1.34.2.3 (pullups of 1.39, 1.40);
then pull up 1.38 (clean up on error)
1.39--1.43 (restore fvdl's ufs_hashlock fix ;
restore fvdl's ufs_hashlock fix ;
set i_lfs_effnblks ;
use UINO macros ;
add comments and fix long lines)
ufs/lfs/lfs_balloc.c, 1.19 (don't succeed halfway)
1.21--1.25 (use i_lfs_effnblks ;
fix i_lfs_effnblks computation and
quieten ;
fix i_ffs_blocks in unwritten fragment ;
remove useless debugging check ;
add comments and (c) 2000)
ufs/lfs/lfs_bio.c, 1.24--1.30 (cleanup and make lfs_flush_fs take
"struct lfs *" instead of "struct
mount *" ;
use lfs_minfreeseg instead of
MIN_FREE_SEGS ;
use UINO macros, and copy bfree/avail
to CLEANERINFO ;
add lfs_reserve function ;
1.28--1.30 fix printf formatting)
ufs/lfs/lfs_cksum.c, 1.13 (add (c) 2000)
ufs/lfs/lfs_debug.c, 1.11 (use btodb instead of DEV_BSIZE)
ufs/lfs/lfs_extern.h, 1.18, 1.20--1.21 (function prototype changes)
ufs/lfs/lfs_inode.c, 1.38 (rewrite lfs_truncate from
ffs_truncate)
1.40--1.44 (count written and unwritten blocks
seperately ;
use disk block units instead of bytes ;
remove unnecessary "mod" variable ;
correct B_DELWRI to avoid bawrite panic ;
use lfs_reserve)
ufs/lfs/lfs_segment.c, 1.52-1.59 (use lfs_dmeta to note used summaries ;
check for UNWRITTEN in indirect blocks ;
more debugging stuff inside #ifdef
DEBUG_LFS ;
use LK_CANRECURSE ;
don't drop dirty indirect blocks ;
use UINO macros ;
don't hose the free list ;
use btodb() instead of DEV_BSIZE ;
make it compile again (oops))
ufs/lfs/lfs_subr.c, 1.16--1.17 (check for locked inodes before
changing ;
use btodb() instead of DEV_BSIZE, (c)
2000)
ufs/lfs/lfs_syscalls.c, back out 1.41.4.2 (fvdl's ufs_hashlock fix);
then pull up 1.43 (use lfs_dmeta)
1.44--1.45 (restore fvdl's ufs_hashlock fix)
1.46--1.47 (fix lfs_avail leakage from sblock
segments ;
use UINO macros)
1.49 (bounds-check inode numbers in
lfs_markv)
ufs/lfs/lfs_vfsops.c, 1.53 (use LFS_EST_* macros in lfs_statfs)
1.56--1.58 (initialize lfs_minfreeseg, lfs_effnblk ;
initialize lfs_uinodes ;
initialize lfs_ravail)
ufs/lfs/lfs_vnops.c, 1.40 (remove VDIROP from removed files)
1.42--1.44 (move SET_ENDOP below the removal of
VDIROP ;
use UINO macros and add lfs_itimes
function ;
use lfs_reserve in dirops)
 1.23.2.7  11-Dec-2002  thorpej Sync with HEAD.
 1.23.2.6  01-Aug-2002  nathanw Catch up to -current.
 1.23.2.5  20-Jun-2002  nathanw Catch up to -current.
 1.23.2.4  08-Jan-2002  nathanw Catch up to -current.
 1.23.2.3  14-Nov-2001  nathanw Catch up to -current.
 1.23.2.2  21-Sep-2001  nathanw Catch up to -current.
 1.23.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.24.6.1  01-Oct-2001  fvdl Catch up with -current.
 1.24.4.3  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.24.4.2  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.24.4.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.25.2.1  12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.27.10.1  20-Jun-2002  lukem Pull up revision 1.28 (requested by perseant in ticket #325):
For synchronous writes, keep separate i/o counters for each write, so
processes don't have to wait for one another to finish (e.g., nfsd seems
to be a little happier now, though I haven't measured the difference).
Synchronous checkpoints, however, must always wait for all i/o to finish.
Take the contents of the callback functions and have them run in thread
context instead (aiodoned thread). lfs_iocount no longer has to be
protected in splbio(), and quite a bit less of the segment construction
loop needs to be in splbio() as well.
If lfs_markv is handed a block that is not the correct size according to
the inode, refuse to process it. (Formerly it was extended to the "correct"
size.) This is possibly more prone to deadlock, but less prone to corruption.
lfs_segclean now outright refuses to clean segments that appear to have live
bytes in them. Again this may be more prone to deadlock but avoids
corruption.
Replace ufsspec_close and ufsfifo_close with LFS equivalents; this means
that no UFS functions need to know about LFS_ITIMES any more. Remove
the reference from ufs/inode.h.
Tested on i386, test-compiled on alpha.
 1.27.8.2  15-Jul-2002  gehenna catch up with -current.
 1.27.8.1  20-Jun-2002  gehenna catch up with -current.
 1.35.2.7  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.35.2.6  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.35.2.5  24-Jan-2005  skrll Sync with HEAD.
 1.35.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.35.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.35.2.2  25-Aug-2004  skrll Sync with HEAD.
 1.35.2.1  03-Aug-2004  skrll Sync with HEAD
 1.39.4.1  29-Apr-2005  kent sync with -current
 1.40.2.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.41.4.3  21-Jan-2008  yamt sync with head
 1.41.4.2  03-Sep-2007  yamt sync with head.
 1.41.4.1  21-Jun-2006  yamt sync with head.
 1.46.26.2  15-Apr-2007  yamt sync with head.
 1.46.26.1  12-Mar-2007  rmind Sync with HEAD.
 1.47.4.1  11-Jul-2007  mjf Sync with head.
 1.47.2.2  16-Sep-2007  ad - Checkpoint work in progress on the vnode lifecycle and reference counting
stuff. This makes it work properly without kernel_lock and fixes a few
quite old bugs. See vfs_subr.c 1.283.2.17 for details.

- Fix some problems with softdep. Unfortunately our softdep code appears
to have some longstanding bugs that cause it fail under stress test.
 1.47.2.1  10-Apr-2007  ad Sync with head.
 1.48.22.3  10-Jan-2008  bouyer Sync with HEAD
 1.48.22.2  08-Jan-2008  bouyer Sync with HEAD
 1.48.22.1  02-Jan-2008  bouyer Sync with HEAD
 1.48.18.1  04-Dec-2007  ad Pull the vmlocking changes into a new branch.
 1.48.16.1  18-Feb-2008  mjf Sync with HEAD.
 1.48.10.2  23-Mar-2008  matt sync with HEAD
 1.48.10.1  09-Jan-2008  matt sync with HEAD
 1.51.16.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.51.16.1  19-Oct-2008  haad Sync with HEAD.
 1.51.14.1  28-Jul-2008  simonb Add support for creating a WAPBL log in the filesystem. Will
create an in-filesystem log on first "mount -o log" if one doesn't
exist, and will then continue to use same log in the future. See
(soon to be added) wapbl(4) for more info.

Adds a new B_CONTIG low-level allocation flag that uses hints in
"struct ffs_inode_ext" to lay out an ffs file's data contiguously.

Thanks to Greg Oster for helping with the design of this and to
Antti Kantee for code review and suggestions.
 1.51.12.2  10-Oct-2008  skrll Sync with HEAD.
 1.51.12.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.51.10.2  11-Aug-2010  yamt sync with head.
 1.51.10.1  04-May-2009  yamt sync with head.
 1.51.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.51.6.1  28-Sep-2008  mjf Sync with HEAD.
 1.54.4.2  19-May-2012  riz Apply patch (requested by buhrow in ticket #1759):


sys/ufs/lfs/lfs_vnops.c patch
sys/ufs/ufs/inode.h patch
sys/ufs/ufs/ufs_extern.h patch
sys/ufs/ufs/ufs_lookup.c patch
sys/ufs/ufs/ufs_vnops.c patch
sys/ufs/ufs/ufs_wapbl.c patch

Port dholland's ufs_rename locking changes to netbsd-5.
[buhrow, ticket #1759]

Hello. More testing has revealed a minor misunderstanding between the
vnode API in -current and 5.x. The below patch, against NetBSD-5.1
sources, rolls all the accumulated patches into one patch set. With this
patch, I believe you can now run with WAPBL, softdep or traditional ufs
semantics with heavy file loads and avoid panics due to resource exhaustion
and/or tstile deadlocks. Testing has been done on I386, both uniprocessor
and multiprocessor, and on Sparc machines in uniprocessor mode, though I
think multiprocessor Sparc would be fine as well. Since these changes are
machine independent, I don't anticipate any issues on any platform. It is
my hope that modulo any final issues that come up in the final round of
testing I'm currently performing, these patches will be ready to be pulled
up into the NetBSD-5 branch.
Finally, I'd like to thank mouse@ and hannken@ for their help and
patience in helping me track down and test the final versions of these
patches. With their assistance, I'm confident these patches make NetBSD-5
a much more stable and robust operating environment in a variety of
setings.
 1.54.4.1  29-Nov-2008  snj Pull up following revision(s) (requested by mrg in ticket #147):
sys/ufs/ext2fs/ext2fs_alloc.c: revision 1.37
sys/ufs/ext2fs/ext2fs_bswap.c: revision 1.14
sys/ufs/ext2fs/ext2fs_dinode.h: revision 1.17
sys/ufs/ext2fs/ext2fs_lookup.c: revision 1.56
sys/ufs/ext2fs/ext2fs_vnops.c: revision 1.83
sys/ufs/ext2fs/ext2fs_vfsops.c: revision 1.140
sys/ufs/ufs/inode.h: revision 1.55
add support for 32 bit uid/gid fields in ext2, but only do so for
when the revision is > REV0.
 1.54.2.2  03-Mar-2009  skrll Sync with HEAD.
 1.54.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.55.4.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.56.4.1  05-Mar-2011  rmind sync with head
 1.56.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.58.6.2  02-Jun-2012  mrg sync to latest -current.
 1.58.6.1  18-Feb-2012  mrg merge to -current.
 1.58.2.5  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.58.2.4  16-Jan-2013  yamt sync with (a bit old) head
 1.58.2.3  30-Oct-2012  yamt sync with head
 1.58.2.2  23-May-2012  yamt sync with head.
 1.58.2.1  17-Apr-2012  yamt sync with head
 1.62.2.4  03-Dec-2017  jdolecek update from HEAD
 1.62.2.3  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.62.2.2  23-Jun-2013  tls resync from head
 1.62.2.1  25-Feb-2013  tls resync with head
 1.65.6.1  10-Aug-2014  tls Rebase.
 1.65.2.1  18-May-2014  rmind sync with head
 1.71.4.3  28-Aug-2017  skrll Sync with HEAD
 1.71.4.2  05-Oct-2016  skrll Sync with HEAD
 1.71.4.1  09-Jul-2016  skrll Sync with HEAD
 1.72.2.1  06-Aug-2016  pgoyette Sync with HEAD
 1.76.14.1  20-Apr-2020  bouyer Sync with HEAD
 1.76.4.1  21-Apr-2020  martin Sync with HEAD

RSS XML Feed