Home Man
Today's Posts

Linux & Unix Commands - Search Man Pages

NetBSD 6.1.5 - man page for vfs_vptofh (netbsd section 9)

VFSOPS(9)			  BSD Kernel Developer's Manual 			VFSOPS(9)


     #include <sys/param.h>
     #include <sys/mount.h>
     #include <sys/vnode.h>

     VFS_MOUNT(struct mount *mp, const char *path, void *data, size_t *dlen);

     VFS_START(struct mount *mp, int flags);

     VFS_UNMOUNT(struct mount *mp, int mntflags);

     VFS_ROOT(struct mount *mp, struct vnode **vpp);

     VFS_QUOTACTL(struct mount *mp, struct quotactl_args *args);

     VFS_STATVFS(struct mount *mp, struct statvfs *sbp);

     VFS_SYNC(struct mount *mp, int waitfor, kauth_cred_t cred);

     VFS_VGET(struct mount *mp, ino_t ino, struct vnode **vpp);

     VFS_FHTOVP(struct mount *mp, struct fid *fhp, struct vnode **vpp);

     VFS_VPTOFH(struct vnode *vp, struct fid *fhp, size_t *fh_size);

     VFS_SNAPSHOT(struct mount *mp, struct vnode *vp, struct timespec *ts);

     VFS_SUSPENDCTL(struct mount *mp, int cmd);

     In a similar fashion to the vnode(9) interface, all operations that are done on a file sys-
     tem are conducted through a single interface that allows the system to carry out operations
     on a file system without knowing its construction or type.

     All supported file systems in the kernel have an entry in the vfs_list_initial table.  This
     table is generated by config(1) and is a NULL-terminated list of vfsops structures.  The
     vfsops structure describes the operations that can be done to a specific file system type.
     The following table lists the elements of the vfsops vector, the corresponding invocation
     macro, and a description of the element.

     Vector element		Macro		  Description
     int (*vfs_mount)() 	VFS_MOUNT	  Mount a file system
     int (*vfs_start)() 	VFS_START	  Make operational
     int (*vfs_unmount)()	VFS_UNMOUNT	  Unmount a file system
     int (*vfs_root)()		VFS_ROOT	  Get the file system root vnode
     int (*vfs_quotactl)()	VFS_QUOTACTL	  Query/modify space quotas
     int (*vfs_statvfs)()	VFS_STATVFS	  Get file system statistics
     int (*vfs_sync)()		VFS_SYNC	  Flush file system buffers
     int (*vfs_vget)()		VFS_VGET	  Get vnode from file id
     int (*vfs_fhtovp)()	VFS_FHTOVP	  NFS file handle to vnode lookup
     int (*vfs_vptofh)()	VFS_VPTOFH	  Vnode to NFS file handle lookup
     void (*vfs_init)() 	-		  Initialize file system
     void (*vfs_reinit)()	-		  Reinitialize file system
     void (*vfs_done)() 	-		  Cleanup unmounted file system
     int (*vfs_mountroot)()	-		  Mount the root file system
     int (*vfs_snapshot)()	VFS_SNAPSHOT	  Take a snapshot
     int (*vfs_suspendctl)()	VFS_SUSPENDCTL	  Suspend or resume

     Some additional non-function members of the vfsops structure are the file system name
     vfs_name and a reference count vfs_refcount.  It is not mandatory for a file system type to
     support a particular operation, but it must assign each member function pointer to a suit-
     able function to do the minimum required of it.  In most cases, such functions either do
     nothing or return an error value to the effect that it is not supported.  vfs_reinit,
     vfs_mountroot, vfs_fhtovp, and vfs_vptofh may be NULL.

     At system boot, each file system with an entry in vfs_list_initial is established and ini-
     tialized.	Each initialized file system is recorded by the kernel in the list vfs_list and
     the file system specific initialization function vfs_init in its vfsops vector is invoked.
     When the file system is no longer needed vfs_done is invoked to run file system specific
     cleanups and the file system is removed from the kernel list.

     At system boot, the root file system is mounted by invoking the file system type specific
     vfs_mountroot function in the vfsops vector.  All file systems that can be mounted as a root
     file system must define this function.  It is responsible for initializing to list of mount
     structures for all future mounted file systems.

     Kernel state which affects a specific file system type can be queried and modified using the
     sysctl(8) interface.

     VFS_MOUNT(mp, path, data, dlen)
	      Mount a file system specified by the mount structure mp on the mount point
	      described by path.  The argument data contains file system type specific data,
	      while the argument dlen points to a location specifying the length of the data.

	      VFS_MOUNT() initializes the mount structure for the mounted file system.	This
	      structure records mount-specific information for the file system and records the
	      list of vnodes associated with the file system.  This function is invoked both to
	      mount new file systems and to change the attributes of an existing file system.  If
	      the flag MNT_UPDATE is set in mp->mnt_flag, the file system should update its
	      state.  This can be used, for instance, to convert a read-only file system to read-
	      write.  The current attributes for a mounted file system can be fetched by specify-
	      ing MNT_GETARGS.	If neither MNT_UPDATE or MNT_GETARGS are specified, a new file
	      system will attempted to be mounted.

     VFS_START(mp, flags)
	      Make the file system specified by the mount structure mp operational.  The argument
	      flags is a set of flags for controlling the operation of VFS_START().  This func-
	      tion is invoked after VFS_MOUNT() and before the first access to the file system.

     VFS_UNMOUNT(mp, mntflags)
	      Unmount a file system specified by the mount structure mp.  VFS_UNMOUNT() performs
	      any file system type specific operations required before the file system is
	      unmounted, such are flushing buffers.  If MNT_FORCE is specified in the flags
	      mntflags then open files are forcibly closed.  The function also deallocates space
	      associated with data structure that were allocated for the file system when it was

     VFS_ROOT(mp, vpp)
	      Get the root vnode of the file system specified by the mount structure mp.  The
	      vnode is returned in the address given by vpp.  This function is used by the path-
	      name translation algorithms when a vnode that has been covered by a mounted file
	      system is encountered.  While resolving the pathname, the pathname translation
	      algorithm will have to go through the directory tree in the file system associated
	      with that mount point and therefore requires the root vnode of the file system.

     VFS_QUOTACTL(mp, args)
	      Query/modify user space quotas for the file system specified by the mount structure
	      mp.  The argument structure provides the operation ID and arguments to perform.
	      This is the same interface as documented in __quotactl(2) except that the file sys-
	      tem argument has been resolved.  All copyin(9) and copyout(9) processing is handled
	      by code above the file system.

     VFS_STATVFS(mp, sbp)
	      Get file system statistics for the file system specified by the mount structure mp.
	      A statvfs structure filled with the statistics is returned in sbp.  VFS_STATVFS()
	      is the file system type specific implementation of the statvfs(2) and fstatvfs(2)
	      system calls.

     VFS_SYNC(mp, waitfor, cred)
	      Flush file system I/O buffers for the file system specified by the mount structure
	      mp.  The waitfor argument indicates whether a partial flush or complete flush
	      should be performed.  The argument cred specifies the calling credentials.
	      VFS_SYNC() does not provide any return value since the operation can never fail.

     VFS_VGET(mp, ino, vpp)
	      Get vnode for a file system type specific file id ino for the file system specified
	      by the mount structure mp.  The vnode is returned in the address specified vpp.
	      The function is optional for file systems which have a unique id number for every
	      file in the file system.	It is used internally by the UFS file system and also by
	      the NFSv3 server to implement the READDIRPLUS NFS call.  If the file system does
	      not support this function, it should return EOPNOTSUPP.

     VFS_FHTOVP(mp, fhp, vpp)
	      Get the vnode for the file handle fhp in the file system specified by the mount
	      structure mp.  The locked vnode is returned in vpp.

	      When exporting, the call to VFS_FHTOVP() should follow a call to netexport_check(),
	      which checks if the file is accessible to the client.

	      If file handles are not supported by the file system, this function must return

     VFS_VPTOFH(vp, fhp, fh_size)
	      Get a file handle for the vnode specified by vp.	The file handle is returned in
	      fhp.  The contents of the file handle are defined by the file system and are not
	      examined by any other subsystems.  It should contain enough information to uniquely
	      identify a file within the file system as well as noticing when a file has been
	      removed and the file system resources have been recycled for a new file.

	      The parameter fh_size points to the container size for the file handle.  This
	      parameter should be updated to the size of the finished file handle.  Note that it
	      is legal to call this function with fhp set to NULL in case fh_size is zero.  In
	      case fh_size indicates a storage space too small, the storage space required for
	      the file handle corresponding to vp should be filled in and E2BIG should be

	      If file handles are not supported by the file system, this function must return

     VFS_SNAPSHOT(mp, vp, ts)
	      Take a snapshot of the file system specified by the mount structure mp and make it
	      accessible through the locked vnode vp.  If ts is not NULL it will receive the time
	      this snapshot was taken.	If the file system does not support this function, it
	      should return EOPNOTSUPP.

     VFS_SUSPENDCTL(mp, cmd)
	      Suspend or resume all operations on this file system.  cmd is either
	      SUSPEND_SUSPEND to suspend or SUSPEND_RESUME to resume operations.  If the file
	      system does not support this function, it should return EOPNOTSUPP.

     The vfs operations are implemented within the files sys/kern/vfs_subr.c and

     intro(9), namei(9), vfs(9), vfssubr(9), vnode(9), vnodeops(9)

     The vfs operations vector, its functions and the corresponding macros appeared in 4.3BSD.

BSD					February 13, 2012				      BSD

All times are GMT -4. The time now is 01:25 AM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
Show Password