| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Approved by: re (scottl)
|
|
|
|
|
|
|
|
|
|
| |
Don't free a struct inodedep if another process is allocating saved
inode memory for the same struct inodedep in
initiate_write_inodeblock_ufs[12]().
Handle disappearing dependencies in softdep_disk_io_initiation().
Approved by: re (scottl)
|
|
|
|
|
|
|
|
| |
Set the mountpoint path in the superblock (fs_fsmnt) at mount-time
so that it appears in the various messages (not cleanly unmounted,
filesystem full, etc). This has been broken since rev 1.261.
Approved by: re (scottl)
|
|
|
|
|
|
| |
related inode has been written.
Approved by: re (scottl)
|
|
|
|
|
|
| |
Eliminate inconsistency in the setting of the B_DONE flag.
Approved by: re (kensmith)
|
|
|
|
|
|
|
| |
directories or unreadable blocks, make sure to destroy the mutex
we created.
Approved by: re (scottl)
|
|
|
|
|
|
|
|
|
| |
Delay freeing disk space for file system blocks until all
dirty buffers are safely released. This fixes softdep
problems on truncation (deletion) of files with dirty
buffers.
Approved by: re (kensmith)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
UFS by:
- Making the pre and post hooks for the VOP functions work even when
DEBUG_VFS_LOCKS is not defined.
- Moving the KNOTE activations into the corresponding VOP hooks.
- Creating a MNTK_NOKNOTE flag for the mnt_kern_flag field of struct
mount that permits filesystems to disable the new behavior.
- Creating a default VOP_KQFILTER function: vfs_kqfilter()
My benchmarks have not revealed any performance degradation.
Reviewed by: jeff, bde
Approved by: rwatson, jmg (kqueue changes), grehan (mentor)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
file's access time should be updated when it gets executed. A while
ago the mechanism used to exec was changed to use a more mmap based
mechanism and this behavior was broken as a side-effect of that.
A new vnode flag is added that gets set when the file gets executed,
and the VOP_SETATTR() vnode operation gets called. The underlying
filesystem is expected to handle it based on its own semantics, some
filesystems don't support access time at all. Those that do should
handle it in a way that does not block, does not generate I/O if possible,
etc. In particular vn_start_write() has not been called. The UFS code
handles it the same way as it would normally handle the access time if
a file was read - the IN_ACCESS flag gets set in the inode but no other
action happens at this point. The actual time update will happen later
during a sync (which handles all the necessary locking).
Got me into this: cperciva
Discussed with: a lot with bde, a little with kan
Showed patches to: phk, jeffr, standards@, arch@
Minor discussion on: arch@
|
|
|
|
|
|
|
|
|
| |
are subtle differences in the read and write completion path. Instead,
grab an extra write ref so the write path can drop it when we recursively
call bufdone(). I believe this may be the source of the wrong bufobj
panics.
Reported by: pho, kkenn
|
|
|
|
|
|
|
|
|
| |
occur on a filesystem running with soft updates after a crash and
before a background fsck has been run. To prevent discrepancies
from arising in a background fsck that may already be running,
the directory is removed but its inode is not freed and is left
with the residual reference count. When encountered by the
background fsck it will be reclaimed.
|
|
|
|
|
|
|
|
|
| |
export. This was happening anyway since this file manually sets DEBUG.
- Add a sysctl for the number of items on the worklist.
- Use a more canonical loop restart in softdep_fsync_mountdev, it saves
some code at the expense of a goto and makes me worry less about
modifying a variable that should be private to the TAILQ_FOREACH_SAFE
macro.
|
|
|
|
|
|
| |
ffs_rawreaddone().
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
|
|
| |
- Fix two style nits.
Found by: Coverity Prevent analysis tool
Reviewed by: rwatson
MFC after: 1 week
|
|
|
|
|
|
| |
locked in the ISDOTDOT case. Se vfs_lookup.c r1.79 for details.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
| |
Do the same for oip.
Pointed out by: glebius
|
|
|
|
|
|
|
|
|
| |
- Don't intermingle direct calls to lockmgr and indirect calls through
VOPs. This will be important in the future.
- Dont lock the devvp's interlock just to release it on the next line by
passing LK_INTERLOCK to lockmgr.
- Restructure ffs_snapshot_unmount so we don't call free() with the
devvp's interlock locked.
|
|
|
|
|
|
|
| |
because it may change identities while we're sleeping on the lock.
Otherwise we may bail out of ffs_sync() early due to an error from
deadfs.
- Collapse a VOP_UNLOCK, vrele into a single vput().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
two bugs.
- ffs_disk_prewrite was pulling the vp from the buf and checking for
COPYONWRITE, when really it wanted the vp from the bufobj that we're
writing to, which is the devvp. This lead to us skipping the copy on
write to all file data, which significantly broke snapshots for the
last few months.
- When the SOFTUPDATES option was not included in the kernel config we
would also skip the copy on write check, which would effectively disable
snapshots.
- Remove an invalid mp_fixme().
Debugging tips from: mckusick
Reported by: iedowse, others
Discussed with: phk
|
|
|
|
| |
part of GENERIC.
|
|
|
|
| |
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
|
|
| |
access.
- Remove the hack from ffs_lock() to implement LK_NOSHARE in a ffs
specific way.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
| |
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
| |
prevents any callers from doing a modifying op without
LOCKPARENT or WANTPARENT. It wasn't even properly used in the CREATE
or DELETE cases.
|
|
|
|
|
|
| |
to create the vnode.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
| |
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
|
| |
rely on ufs to always leave the parent locked except in the ISDOTDOT
case. Adjust asserts to deal with these changes.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
| |
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
|
|
|
|
|
|
| |
add more work are forced to process two worklist items first.
However, processing an item may generate additional work, causing the
unlucky thread to recursively process the worklist. Add a per-thread
flag to detect this situation and avoid the recursion. This should
fix the stack overflows that could occur while removing large
directory trees.
Tested by: kris
Reviewed by: mckusick
|
|
|
|
| |
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
|
| |
- Pass the ufs_root() flags argument to VFS_VGET() to allow callers to
specify shared locks.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
| |
in ffs_lock() when it acesses v_data without the vnlock.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
| |
not have unique hashes (NFS) can also use it.
|
| |
|
|
|
|
| |
avoid replicating the vput in all the filesystems.
|
| |
|
|
|
|
|
|
|
| |
the vnode valid before the vm flushes pages.
- Get rid of some extraneous uses of the vnode interlock.
Sponsored by: Isilon Systems, Inc.
|
| |
|
|
|
|
|
|
|
| |
held. Grab the vnode interlock if LK_INTERLOCK has not been passed in
so that we can inspect v_data in ffs_lock().
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
|
|
|
| |
the filesystem. Check that rather than VI_XLOCK.
- Shorten ffs_reload by one step. The old check for an inactive vnode
was slightly racey, and the code which deals with still active vnodes
is not much more expensive.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
| |
the filesystem. Check that rather than VI_XLOCK.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
| |
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
|
|
| |
required.
- In ufs_close(), don't do the EAGAIN vrele hack, the top layer now calls
vn_start_write before the lock is acquired as it should.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
|
|
| |
- Also in ufs_inactive, don't acquire the vnode interlock where it isn't
strictly needed. Also owning the vnode interlock while calling vprint()
will cause locking assertions to trip.
Sponsored by: Isilon Systems, Inc.
|
|
|
|
|
|
| |
not ACTIVECLEAR.
Submitted by: iedowse
|
| |
|
|
|
|
|
|
|
| |
readlink of a fast link
Noticed by: Coverity Prevent analysis tool
Reviewed by: phk
|
|
|
|
| |
recent deadlocks.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
very slow process, especially for large file systems that is just
recovered from a crash.
Since the summary is already re-sync'ed every 30 second, we will
not lag behind too much after a crash. With this consideration
in mind, it is more reasonable to transfer the responsibility to
background fsck, to reduce the delay after a crash.
Add a new sysctl variable, vfs.ffs.compute_summary_at_mount, to
control this behavior. When set to nonzero, we will get the
"old" behavior, that the summary is computed immediately at mount
time.
Add five new sysctl variables to adjust ndir, nbfree, nifree,
nffree and numclusters respectively. Teach fsck_ffs about these
API, however, intentionally not to check the existence, since
kernels without these sysctls must have recomputed the summary
and hence no adjustments are necessary.
This change has eliminated the usual tens of minutes of delay of
mounting large dirty volumes.
Reviewed by: mckusick
MFC After: 1 week
|
|
|
|
|
|
|
|
|
| |
patch from kan@).
Pull bufobj_invalbuf() out of vinvalbuf() and make g_vfs call it on
close. This is not yet a generally safe function, but for this very
specific use it is safe. This solves the problem with buffers not
being flushed by unmount or after failed mount attempts.
|