Function

vnode_iterate

Perform an operation on (almost) all vnodes from a given mountpoint.

Declaration

int vnode_iterate(struct mount *mp, int flags, int (*callout)(struct vnode *, void *), void *arg);

Parameters

mp

Mount whose vnodes to operate on.

flags

VNODE_RELOAD Mark inactive vnodes for recycle. VNODE_WAIT VNODE_WRITEABLE Only examine vnodes with writes in progress. VNODE_WITHID No effect. VNODE_NOLOCK_INTERNAL No effect. VNODE_NODEAD No effect. VNODE_NOSUSPEND No effect. VNODE_ITERATE_ALL No effect. VNODE_ITERATE_ACTIVE No effect. VNODE_ITERATE_INACTIVE No effect.

callout

Function to call on each vnode.

arg

Argument which will be passed to callout along with each vnode.

Return Value

Zero for success, else an error code. Will return 0 immediately if there are no vnodes hooked into the mount.

Discussion

Skips vnodes which are dead, in the process of reclaim, suspended, or of type VNON.

See Also

Miscellaneous

cache_enter

Add a (name,vnode) entry to the VFS namecache.

cache_lookup

Check for a filename in a directory using the VFS name cache.

cache_purge

Remove all data relating to a vnode from the namecache.

cache_purge_negatives

Remove all negative cache entries which are children of a given vnode.

vcount

Count total references to a given file, disregarding "kusecount" (event listener, as with O_EVTONLY) references.

vflush

Reclaim the vnodes associated with a mount.

vfs_addname

Deprecated

vfs_context_create

Create a new vfs_context_t with appropriate references held.

vfs_context_current

Get the vfs_context for the current thread, or the kernel context if there is no context for current thread.

vfs_context_is64bit

Determine if a vfs_context_t corresponds to a 64-bit user process.

vfs_context_issignal

Get a bitfield of pending signals for the BSD process associated with a vfs_context_t.

vfs_context_pid

Get the process id of the BSD process associated with a vfs_context_t.

vfs_context_proc

Get the BSD process structure associated with a vfs_context_t.

vfs_context_rele

Release references on components of a context and deallocate it.

vfs_context_suser

Determine if a vfs_context_t corresponds to the superuser.

vfs_context_ucred

Get the credential associated with a vfs_context_t.

vfs_removename

Deprecated

vfs_rootvnode

Returns the root vnode with an iocount.

vn_bwrite

System-provided implementation of "bwrite" vnop.

vn_default_error

Default vnode operation to fill unsupported slots in vnode operation vectors.

vn_getpath

Construct the path to a vnode.

vn_path_package_check

Figure out if a path corresponds to a macOS package.

vn_rdwr

Read from or write to a file.

vn_revoke

Invalidate all references to a vnode.

vnode_addfsref

Mark a vnode as being stored in a filesystem hash.

vnode_authattr

Given a vnode_attr structure, determine what kauth-style actions must be authorized in order to set those attributes.

vnode_authattr_new

Initialize and validate file creation parameters with respect to the current context.

vnode_authorize

Authorize a kauth-style action on a vnode.

vnode_clearfsnode

Sets a vnode's filesystem-specific data to be NULL.

vnode_clearmountedon

Clear flags indicating that a block device vnode has been mounted as a filesystem.

vnode_clearnocache

Clear the flag on a vnode indicating that data should not be cached in memory (i.e. we write-through to disk and always read from disk).

vnode_clearnoreadahead

Clear the flag indicating that a vnode should not have data speculatively read in.

vnode_close

Close a file as opened with vnode_open().

vnode_create

Create and initialize a vnode.

vnode_fsnode

Gets the filesystem-specific data associated with a vnode.

vnode_get

Increase the iocount on a vnode.

vnode_getattr

Get vnode attributes.

vnode_getname

Get the name of a vnode from the VFS namecache.

vnode_getparent

Get an iocount on the parent of a vnode.

vnode_getwithref

Increase the iocount on a vnode on which a usecount (persistent reference) is held.

vnode_getwithvid

Increase the iocount on a vnode, checking that the vnode is alive and has not changed vid (i.e. been recycled)

vnode_hascleanblks

Check if a vnode has clean buffers associated with it.

vnode_hasdirtyblks

Check if a vnode has dirty data waiting to be written to disk.

vnode_isblk

Determine if a vnode is a block device special file.

vnode_ischr

Determine if a vnode is a character device special file.

vnode_isdir

Determine if a vnode is a directory.

vnode_isfifo

Determine if a vnode is a named pipe.

vnode_isinuse

Determine if the number of persistent (usecount) references on a vnode is greater than a given count.

vnode_islnk

Determine if a vnode is a symbolic link.

vnode_ismount

Determine if there is currently a mount occurring which will cover this vnode.

vnode_ismountedon

Determine if a vnode is a block device on which a filesystem has been mounted.

vnode_isnamedstream

Determine if a vnode is a named stream.

vnode_isnocache

Check if a vnode is set to not have its data cached in memory (i.e. we write-through to disk and always read from disk).

vnode_isnoreadahead

Check if a vnode is set to not have data speculatively read in in hopes of future cache hits.

vnode_israge

Check if a vnode is marked for rapid aging

vnode_isrecycled

Check if a vnode is dead or in the process of being killed (recycled).

vnode_isreg

Determine if a vnode is a regular file.

vnode_isswap

Determine if a vnode is being used as a swap file.

vnode_issystem

Determine if a vnode is marked as a System vnode.

vnode_isvroot

Determine if a vnode is the root of its filesystem.

vnode_lookup

Convert a path into a vnode.

vnode_mount

Get the mount structure for the filesystem that a vnode belongs to.

vnode_mountedhere

Returns a pointer to a mount placed on top of a vnode, should it exist.

vnode_needssnapshots

Check if a vnode needs snapshots events (regardless of its ctime status)

vnode_open

Open a file identified by a path--roughly speaking an in-kernel open(2).

vnode_put

Decrement the iocount on a vnode.

vnode_putname

Release a reference on a name from the VFS cache.

vnode_recycle

Cause a vnode to be reclaimed and prepared for reuse.

vnode_ref

Increment the usecount on a vnode.

vnode_rele

Decrement the usecount on a vnode.

vnode_removefsref

Mark a vnode as no longer being stored in a filesystem hash.

vnode_setattr

Set vnode attributes.

vnode_setmountedon

Set flags indicating that a block device vnode has been mounted as a filesystem.

vnode_setmultipath

Mark a vnode as being reachable by multiple paths, i.e. as a hard link.

vnode_setnocache

Set a vnode to not have its data cached in memory (i.e. we write-through to disk and always read from disk).

vnode_setnoreadahead

Set a vnode to not have data speculatively read in in hopes of hitting in cache.

vnode_settag

Set a vnode filesystem-specific "tag."

vnode_specrdev

Return the device id of the device associated with a special file.

vnode_startwrite(vnode_t)

Decrement the count of pending writes on a vnode .

vnode_tag

Get the vnode filesystem-specific "tag."

vnode_uncache_credentials

Clear out cached credentials on a vnode.

vnode_update_identity

Update vnode data associated with the vfs cache.

vnode_vfs64bitready

Determine if the filesystem to which a vnode belongs is marked as ready to interact with 64-bit user processes.

vnode_vfsisrdonly

Determine if the filesystem to which a vnode belongs is mounted read-only.

vnode_vfsmaxsymlen

Determine the maximum length of a symbolic link for the filesystem on which a vnode resides.

vnode_vfsname

Get the name of the filesystem to which a vnode belongs.

vnode_vfstypenum

Get the "type number" of the filesystem to which a vnode belongs.

vnode_vid

Return a vnode's vid (generation number), which is constant from creation until reclaim.

vnode_vtype

Return a vnode's type.

vnode_waitforwrites

Wait for the number of pending writes on a vnode to drop below a target.

vnode_writedone

Decrement the count of pending writes on a vnode .