| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
Also introduce an aclinit function which will be used to create the UMA zone
for use by file systems at system start up.
MFC after: 1 month
Discussed with: rwatson
|
|
|
|
|
|
|
|
|
| |
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().
Reviewed by: mckusick
|
|
|
|
|
|
| |
Glanced at by: phk
Tested by: pjd
MFC after: 3 days
|
|
|
|
|
| |
so that it appears in the various messages (not cleanly unmounted,
filesystem full, etc). This has been broken since rev 1.261.
|
|
|
|
| |
inode has been written.
|
|
|
|
|
|
|
|
|
| |
or unreadable blocks, make sure to destroy the mutex we created.
Also fix an unrelated typo in a comment.
Found by: Peter Holm's stress tests
Reviewed by: dwmalone
MFC after: 3 days
|
|
|
|
|
|
|
|
|
| |
are safely released. This fixes softdep problems on truncation (deletion)
of files with dirty buffers.
Reviewed by: jeff@, mckusick@, ps@, tegge@
Tested by: glebius@, ps@
MFC after: 3 weeks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
make the b_iodone callback responsible for setting it if it is needed.
Previously, it was set unconditionally by bufdone() without holding
whichever lock is shared by the b_iodone callback and the corresponding
top-half function. Consequently, in a race, the top-half function could
conclude that operation was done before the b_iodone callback finished.
See, for example, aio_physwakeup() and aio_fphysio().
Note: I don't believe that the other, more widely-used b_iodone callbacks
are affected.
Discussed with: jeff
Reviewed by: phk
MFC after: 2 weeks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|