Age | Commit message (Collapse) | Author |
|
OK mvs@
|
|
without the KERNEL_LOCK.
This moves VXLOCK and VXWANT to a mutex protected v_lflag field and also
v_lockcount is protected by this mutex.
The vn_lock() dance is overly complex and all of this should probably replaced
by a proper lock on the vnode but such a diff is a lot more complex. This
is an intermediate step so that at least some calls can be modified to grab
the KERNEL_LOCK later or not at all.
OK mpi@
|
|
ok mpi@
|
|
|
|
OK mpi@ as part of a larger diff
|
|
Rename klist_{insert,remove}() to klist_{insert,remove}_locked().
These functions assume that the caller has locked the klist. The current
state of locking remains intact because the kernel lock is still used
with all klists.
Add new functions klist_insert() and klist_remove() that lock the klist
internally. This allows some code simplification.
OK mpi@
|
|
OK millert@
|
|
ok visa@, millert@
|
|
This is only done in poll-compatibility mode, when __EV_POLL is set.
ok visa@, millert@
|
|
While here prefix kernel-only EV flags with two underbars.
Suggested by kettenis@, ok visa@
|
|
Adapt FS kqfilters to always return true when the flag is set and bypass
the polling mechanism of the NFS thread.
While here implement a write filter for NFS.
ok visa@
|
|
ok visa@
|
|
Prevent generating events that do not correspond to how the fifo has been
opened.
ok visa@, millert@
|
|
Make EVFILT_WRITE notifications on fifo work.
ok visa@, millert@
|
|
for example, with locking assertions.
OK mpi@, anton@
|
|
ok kettenis@
|
|
adding more filter properties without cluttering the struct.
OK mpi@, anton@
|
|
into read-only data segment.
OK deraadt@ tedu@
|
|
ok bluhm@
|
|
make the structs const so that the data are put in .rodata.
OK mpi@, deraadt@, anton@, bluhm@
|
|
OK visa@
|
|
Tested by anton@, sashan@
OK mpi@, anton@, sashan@
|
|
ok jca@
|
|
a no-op at the moment, but future work will introduce an actual lock
that has to be released.
OK mpi@ anton@
|
|
serializing both read/write operations using the existing file mutex.
The vnode lock still grants exclusive write access to the offset; the
mutex is only used to make the actual write atomic and prevent any
concurrent reader from observing intermediate values.
ok mpi@ visa@
|
|
https://marc.info/?l=openbsd-cvs&m=156277704122293&w=2
ok anton@
|
|
as part of the effort to unlock the kernel. Instead of relying on the
vnode lock, introduce a dedicated lock per file. Exclusive write access
is granted using the new foffset_enter and foffset_leave API. A
convenience function foffset_get is also available for threads that only
need to read the current offset.
The lock acquisition order in vn_write has been changed to match the one
in vn_read in order to avoid a potential deadlock. This change also gets
rid of a documented race in vn_read().
Inspired by the FreeBSD implementation.
With help and ok mpi@ visa@
|
|
for sockets is non-blocking.
This allows us to G/C SS_NBIO. Having to keep the two flags in sync
in a mp-safe way is complicated.
This change introduce a behavior change in sosplice(), it can now
always block. However this should not matter much due to the socket
lock being taken beforhand.
ok bluhm@, benno@, visa@
|
|
sets all members of struct vattr to VNOVAL (-1) instead of 0, which is
what is appropriate here. The VATTR_NULL() macro is intended for
initialising struct vattr when setting attributes.
ok mpi@
|
|
don't attempt to determine the size of the root inode. This is because
we don't need to know the size of directories and FBT_GETATTR will also
cause a deadlock if fuse_unmount(3) is called before the file system
has a chance to process fbufs.
Add corresponding regression test.
ok mpi@
|
|
kernel calls to ensure that the UVM cache for memory mapped files is
up to date.
ok mpi@
|
|
Currently ignores the a_waitfor argument and always invokes the file
system's fsync implementation synchronously.
ok mpi@
|
|
Fix CID 1470236.
ok helg@
|
|
ok mpi@
|
|
ok mpi@
|
|
indefinitely and cannot be interrupted or killed. This is consistent
with how VFS system calls should behave. If the file system becomes
unresponsive then the only sane solution is for the user to kill the
file system daemon.
Implementing the equivalent of nfs -osoft or -ointr to either timeout
or allow the blocking FUSE operation to be interrupted can be considered
in a future patch.
ok mpi@
|
|
implementations. Rely on the VFS layer to do the checking.
OK mpi@, helg@
|
|
|
|
file system can access it unless the allow_other mount options is
specified. The allow_other mount option makes the file system
available to other users just like any other mounted file system.
ok mpi@
|
|
FUSE file system. fuse_get_context(3) will now return the correct
values.
ok mpi@
|
|
Don't ask file system to check file access; always behave as if
default_permissions option was specified. (this may change in a later
commit)
ok mpi@
|
|
super-user, the mode includes the sticky bit (S_ISVTX), and path
does not refer to a directory.
ok mpi@
|
|
unlocking the directory vnode.
OK mpi@, helg@
|
|
locking.
ok visa@, bluhm@
|
|
ok mpi@
|
|
system's ino for VOP_GETATTR(9) and VOP_READDIR(9) rather than the
internally generated fuse ino.
ok mpi@
|
|
doesn't implement it.
ok mpi@
|
|
initialised. Rather than failing, requests are now queued.
ok mpi@
|
|
VOP_CLOSE(9). The associated FUSE file handle is however not closed at this
time and is instead closed on VOP_RELEASE(9) because that's the only time
it's guaranteed to be no longer used. Directory handles are now only closed
on VOP_RELEASE(9) for the same reason.
ok mpi@
|
|
ok mpi@
|