summaryrefslogtreecommitdiffstats
path: root/sys/gnu/fs
Commit message (Collapse)AuthorAgeFilesLines
* Fixed a reference to a nonexistent variable in previous commit. Renamingbde2003-11-051-9/+8
| | | | | | | | of ffs_reload()'s mountp parameter to mp in rev.1.28 of ffs_vnops.c had not been merged here. ext2fs_reload() is still missing locking from not merging other changes to ffs_reload(), but none of these is related to recent locking changes.
* Remove mntvnode_mtx and replace it with per-mountpoint mutex.kan2003-11-051-11/+11
| | | | | | | | | | Introduce two new macros MNT_ILOCK(mp)/MNT_IUNLOCK(mp) to operate on this mutex transparently. Eventually new mutex will be protecting more fields in struct mount, not only vnode list. Discussed with: jeff
* Use VOP_UNLOCK/vrele instead of vput. td was erecived as a parameterkan2003-11-031-2/+4
| | | | and one cannot be sure it is equal to curthread.
* Take care not to call vput if thread used in corresponding vgetkan2003-11-021-1/+2
| | | | | | | | | | wasn't curthread, i.e. when we receive a thread pointer to use as a function argument. Use VOP_UNLOCK/vrele in these cases. The only case there td != curthread known at the moment is boot() calling sync with thread0 pointer. This fixes the panic on shutdown people have reported.
* Temporarily undo parts of the stuct mount locking commit by jeff.kan2003-11-011-2/+1
| | | | | | | | It is unsafe to hold a mutex across vput/vrele calls. This will be redone when a better locking strategy is agreed upon. Discussed with: jeff
* Fix the alpha tinderbox. The alpha specific bitops used by the bitmapmarcel2003-10-292-6/+2
| | | | | | | | | | code has the typical branch prediction detour, which creates cross- section branches. A LINT kernel is apparently large enough nowadays that the .text and .text2 sections cannot always be layed-out so that branches between them reach. The fix is to stop using the alpha-specific bitops and instead use the portable implementation used by all platforms other than alpha and i386.
* DuH!phk2003-10-183-3/+3
| | | | | bp->b_iooffset (the spot on the disk), not bp->b_offset (the offset in the file)
* Initialize bp->b_offset before calling VOP_[SPEC]STRATEGY()phk2003-10-183-0/+3
|
* - File systems that wish to inspect the vnode contents or their privatejeff2003-10-051-0/+8
| | | | | | v_data field before calling vget/vn_lock must check VI_XLOCK manually to be sure that v_data is still valid. Implement this check in two places here.
* - Don't cache_purge() in ext2_reclaim. vclean() does it for us sojeff2003-10-051-1/+0
| | | | this is redundant.
* - Don't use vrecycle() call vgonel() directly after grabing the vnodejeff2003-10-041-4/+6
| | | | | interlock. We do this so that we still hold the interlock when we lock the vnode later. This prevents races with the mnt vnode list.
* - Clean-up comments that refer to the use of B_LOCKED.jeff2003-08-282-3/+4
|
* - In LCK_BUF() simply change the owner of the buf to the kernel.jeff2003-08-281-10/+2
| | | | | | | | | | | | - In ULCK_BUF we no longer need to acquire the lock, just write the buf out. - The combination of these changes eliminates one more use of B_LOCKED which is in the way of making the buffer cache SMP safe. In the long term ext2fs should probably not try to optimize the use of their metadata bufs with a private cache. This will starve the rest of the system for buffers in the extreme case. Discussed with: bde (A long time ago..) Tested on: md disk/x86
* Change of plans: Add ext2_bitops.h with generic and portablemarcel2003-08-253-6/+116
| | | | | | | | implementations. Use those on platforms that don't have MD headers. Remove the ia64 MD header. We're going to use the C implementation there. Suggested by: bde
* Add compilation support for extfs on ia64, primarily to support LINT.marcel2003-08-232-6/+10
| | | | | The functions in ia64-bitops.h merely call panic() for now. They need to be implemented some day, just not today.
* Add a "int fd" argument to VOP_OPEN() which in the future willphk2003-07-261-1/+1
| | | | | | | | | contain the filedescriptor number on opens from userland. The index is used rather than a "struct file *" since it conveys a bit more information, which may be useful to in particular fdescfs and /dev/fd/* For now pass -1 all over the place.
* Add the same KASSERT to all VOP_STRATEGY and VOP_SPECSTRATEGY implementationsphk2003-06-151-0/+2
| | | | to check that the buffer points to the correct vnode.
* Initialize struct vfsops C99-sparsely.phk2003-06-121-25/+21
| | | | | Submitted by: hmp Reviewed by: phk
* - Lock the buf before clearing flags.jeff2003-03-131-1/+1
|
* - Add a new 'flags' parameter to getblk().jeff2003-03-044-8/+8
| | | | | | | | | | - Define one flag GB_LOCK_NOWAIT that tells getblk() to pass the LK_NOWAIT flag to the initial BUF_LOCK(). This will eventually be used in cases were we want to use a buffer only if it is not currently in use. - Convert all consumers of the getblk() api to use this extra parameter. Reviwed by: arch Not objected to by: mckusick
* Finish cleanup of vprint() which was begun with changing v_tag to a string.njl2003-03-031-1/+1
| | | | | | Remove extraneous uses of vop_null, instead defering to the default op. Rename vnode type "vfs" to the more descriptive "syncer". Fix formatting for various filesystems that use vop_print.
* Clean up whitespace, s/register //, refrain from strong urge to ANSIfy.des2003-03-021-34/+33
|
* uiomove-related caddr_t -> void * (just the low-hanging fruit)des2003-03-021-2/+1
|
* - Add an interlock argument to BUF_LOCK and BUF_TIMELOCK.jeff2003-02-251-1/+1
| | | | | | | | | | - Remove the buftimelock mutex and acquire the buf's interlock to protect these fields instead. - Hold the vnode interlock while locking bufs on the clean/dirty queues. This reduces some cases from one BUF_LOCK with a LK_NOWAIT and another BUF_LOCK with a LK_TIMEFAIL to a single lock. Reviewed by: arch, mckusick
* Import Linux's linux/include/asm-sparc64/bitopts.h.obrien2003-02-231-0/+248
| | | | This is taken from the 2.4.3 Linux sources as shipped on Red Hat 7.1 Alpha.
* Back out M_* changes, per decision of the TRB.imp2003-02-193-9/+9
| | | | Approved by: trb
* - Use the new vop_stdfsync instead of recreating our own.jeff2003-02-091-49/+3
|
* Use VOP_SPECSTRATEGY() instead of VOP_STRATEGY().phk2003-01-281-1/+1
|
* Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.alfred2003-01-213-9/+9
| | | | Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
* Since Jeffr made the std* functions the default in rev 1.63 ofphk2003-01-041-9/+0
| | | | | | | kern/vfs_defaults.c it is wrong for the individual filesystems to use the std* functions as that prevents override of the default. Found by: src/tools/tools/vop_table
* Convert calls to BUF_STRATEGY to VOP_STRATEGY calls. This is a no-op sincephk2003-01-031-1/+1
| | | | all BUF_STRATEGY did in the first place was call VOP_STRATEGY.
* Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup,schweikh2003-01-011-2/+2
| | | | especially in troff files.
* Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/schweikh2002-12-301-1/+1
| | | | Add FreeBSD Id tag where missing.
* MFufs 1.33:bde2002-10-181-1/+1
| | | | | | | | | | | | | In the 'found' case for ext2_lookup() the underlying bp's data was being accessed after the bp had been releaed. A simple move of the brelse() solves the problem. The PR reports that this caused panics running the GDB testsuite unless NO_GEOM is configured. PR: 44060 Reported by: Mark Kettenis <kettenis@chello.nl> MFC after: 3 days
* Be consistent about functions being static.phk2002-10-161-16/+16
| | | | | | Fix misindentation. Spotted by: DARPA & NAI Labs.
* Regularize the vop_stdlock'ing protocol across all the filesystemsmckusick2002-10-142-2/+0
| | | | | | | | | | | | | | | | | | | | that use it. Specifically, vop_stdlock uses the lock pointed to by vp->v_vnlock. By default, getnewvnode sets up vp->v_vnlock to reference vp->v_lock. Filesystems that wish to use the default do not need to allocate a lock at the front of their node structure (as some still did) or do a lockinit. They can simply start using vn_lock/VOP_UNLOCK. Filesystems that wish to manage their own locks, but still use the vop_stdlock functions (such as nullfs) can simply replace vp->v_vnlock with a pointer to the lock that they wish to have used for the vnode. Such filesystems are responsible for setting the vp->v_vnlock back to the default in their vop_reclaim routine (e.g., vp->v_vnlock = &vp->v_lock). In theory, this set of changes cleans up the existing filesystem lock interface and should have no function change to the existing locking scheme. Sponsored by: DARPA & NAI Labs.
* - Lock access to the buf lists.jeff2002-09-253-14/+19
| | | | - Use vrefcnt() where appropriate.
* VOP_FSYNC() requires that it's vnode argument be locked, which nfs_link()truckman2002-09-191-11/+4
| | | | | | | | | | wasn't doing. Rather than just lock and unlock the vnode around the call to VOP_FSYNC(), implement rwatson's suggestion to lock the file vnode in kern_link() before calling VOP_LINK(), since the other filesystems also locked the file vnode right away in their link methods. Remove the locking and and unlocking from the leaf filesystem link methods. Reviewed by: rwatson, bde (except for the unionfs_link() changes)
* Remove any VOP_PRINT that redundantly prints the tag.njl2002-09-181-4/+2
| | | | | | Move lockmgr_printinfo() into vprint() for everyone's benefit. Suggested by: bde
* Remove all use of vnode->v_tag, replacing with appropriate substitutes.njl2002-09-142-4/+4
| | | | | | | | | | | | v_tag is now const char * and should only be used for debugging. Additionally: 1. All users of VT_NTS now check vfsconf->vf_type VFCF_NETWORK 2. The user of VT_PROCFS now checks for the new flag VV_PROCDEP, which is propagated by pseudofs to all child vnodes if the fs sets PFS_PROCDEP. Suggested by: phk Reviewed by: bde, rwatson (earlier version)
* vfs_syscalls.c:bde2002-09-101-51/+6
| | | | | | | | | | | | | | | | | | | | | | Changed rename(2) to follow the letter of the POSIX spec. POSIX requires rename() to have no effect if its args "resolve to the same existing file". I think "file" can only reasonably be read as referring to the inode, although the rationale and "resolve" seem to say that sameness is at the level of (resolved) directory entries. ext2fs_vnops.c, ufs_vnops.c: Replaced code that gave the historical BSD behaviour of removing one link name by checks that this code is now unreachable. This fixes some races. All vnodes needed to be unlocked for the removal, and locking at another level using something like IN_RENAME was not even attempted, so it was possible for rename(x, y) to return with both x and y removed even without any unlink(2) syscalls (one process can remove x using rename(x, y) and another process can remove y using rename(y, x)). Prodded by: alfred MFC after: 8 weeks PR: 42617
* In order to better support flexible and extensible access control,rwatson2002-08-152-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | make a series of modifications to the credential arguments relating to file read and write operations to cliarfy which credential is used for what: - Change fo_read() and fo_write() to accept "active_cred" instead of "cred", and change the semantics of consumers of fo_read() and fo_write() to pass the active credential of the thread requesting an operation rather than the cached file cred. The cached file cred is still available in fo_read() and fo_write() consumers via fp->f_cred. These changes largely in sys_generic.c. For each implementation of fo_read() and fo_write(), update cred usage to reflect this change and maintain current semantics: - badfo_readwrite() unchanged - kqueue_read/write() unchanged pipe_read/write() now authorize MAC using active_cred rather than td->td_ucred - soo_read/write() unchanged - vn_read/write() now authorize MAC using active_cred but VOP_READ/WRITE() with fp->f_cred Modify vn_rdwr() to accept two credential arguments instead of a single credential: active_cred and file_cred. Use active_cred for MAC authorization, and select a credential for use in VOP_READ/WRITE() based on whether file_cred is NULL or not. If file_cred is provided, authorize the VOP using that cred, otherwise the active credential, matching current semantics. Modify current vn_rdwr() consumers to pass a file_cred if used in the context of a struct file, and to always pass active_cred. When vn_rdwr() is used without a file_cred, pass NOCRED. These changes should maintain current semantics for read/write, but avoid a redundant passing of fp->f_cred, as well as making it more clear what the origin of each credential is in file descriptor read/write operations. Follow-up commits will make similar changes to other file descriptor operations, and modify the MAC framework to pass both credentials to MAC policy modules so they can implement either semantic for revocation. Obtained from: TrustedBSD Project Sponsored by: DARPA, NAI Labs
* Pass IO_NOMACCHECK to vn_rdwr() in the following checks to preventrwatson2002-08-122-10/+13
| | | | | | | | | | | | | | | | | | | | enforcement of MAC policy on the read or write operations: - In ext2fs, don't enforce MAC on loop-back reads and writes supporting directory read operations in lookup(), directory modifications in rename(), directory write operations in mkdir(), symlink write operations in symlink(). - In the NFS client locking code, perform vn_rdwr() on the NFS locking socket without enforcing MAC, since the write is done on behalf of the kernel NFS implementation rather than the user process. - In UFS, don't enforce MAC on loop-back reads and writes supporting directory read operations in lookup(), and symlink write operations in symlink(). Obtained from: TrustedBSD Project Sponsored by: DARPA, NAI Labs
* - Replace v_flag with v_iflag and v_vflagjeff2002-08-041-3/+6
| | | | | | | | | | | | | | | - v_vflag is protected by the vnode lock and is used when synchronization with VOP calls is needed. - v_iflag is protected by interlock and is used for dealing with vnode management issues. These flags include X/O LOCK, FREE, DOOMED, etc. - All accesses to v_iflag and v_vflag have either been locked or marked with mp_fixme's. - Many ASSERT_VOP_LOCKED calls have been added where the locking was not clear. - Many functions in vfs_subr.c were restructured to provide for stronger locking. Idea stolen from: BSD/OS
* Convert ext2fs to nmount(2).mux2002-05-242-27/+28
|
* Add an ext2_uninit() routine that undoes the actions performed byiedowse2002-05-182-5/+10
| | | | | ext2_init(). This permits the ext2fs module to be unloaded without causing panics and leaking memory.
* Fix two off-by-one errors when sanity-checking inode numbers. Iniedowse2002-05-182-2/+2
| | | | | | | | | ext2fs, inode numbers start at 1, so the maximum valid inode number is (s_inodes_per_group * s_groups_count), not one less. This is just a minimal change to avoid unnecessary panics and errors; some other related bugs that Bruce Evans mentioned to me are not addressed. Reviewed by: bde (ages ago)
* Use explicitly-sized types where necessary to make ext2fs work againiedowse2002-05-188-59/+59
| | | | after the change to a 64-bit daddr_t.
* Give ext2fs its own static "dirchk" variable instead of using ufs'siedowse2002-05-161-4/+12
| | | | variable. Make this accessible as the sysctl vfs.e2fs.dirchk.
* Remove register keyword.iedowse2002-05-168-86/+83
|
OpenPOWER on IntegriCloud