The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2007 Pawel Jakub Dawidek <pjd@FreeBSD.org>
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  *
   14  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
   15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
   18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   24  * SUCH DAMAGE.
   25  *
   26  * $FreeBSD$
   27  */
   28 
   29 #ifndef _OPENSOLARIS_SYS_VNODE_H_
   30 #define _OPENSOLARIS_SYS_VNODE_H_
   31 
   32 struct vnode;
   33 struct vattr;
   34 struct xucred;
   35 
   36 typedef struct flock    flock64_t;
   37 typedef struct vnode    vnode_t;
   38 typedef struct vattr    vattr_t;
   39 typedef enum vtype vtype_t;
   40 
   41 #include <sys/types.h>
   42 #include <sys/queue.h>
   43 #include_next <sys/sdt.h>
   44 #include <sys/namei.h>
   45 enum symfollow { NO_FOLLOW = NOFOLLOW };
   46 
   47 #define NOCRED  ((struct ucred *)0)     /* no credential available */
   48 #define F_FREESP        11      /* Free file space */
   49 
   50 #include <sys/proc.h>
   51 #include <sys/vnode_impl.h>
   52 #ifndef IN_BASE
   53 #include_next <sys/vnode.h>
   54 #endif
   55 #include <sys/mount.h>
   56 #include <sys/cred.h>
   57 #include <sys/fcntl.h>
   58 #include <sys/refcount.h>
   59 #include <sys/file.h>
   60 #include <sys/filedesc.h>
   61 #include <sys/syscallsubr.h>
   62 #include <sys/vm.h>
   63 #include <vm/vm_object.h>
   64 
   65 typedef struct vop_vector       vnodeops_t;
   66 #define VOP_FID         VOP_VPTOFH
   67 #define vop_fid         vop_vptofh
   68 #define vop_fid_args    vop_vptofh_args
   69 #define a_fid           a_fhp
   70 
   71 #define rootvfs         (rootvnode == NULL ? NULL : rootvnode->v_mount)
   72 
   73 #ifndef IN_BASE
   74 static __inline int
   75 vn_is_readonly(vnode_t *vp)
   76 {
   77         return (vp->v_mount->mnt_flag & MNT_RDONLY);
   78 }
   79 #endif
   80 #define vn_vfswlock(vp)         (0)
   81 #define vn_vfsunlock(vp)        do { } while (0)
   82 #define vn_ismntpt(vp)     \
   83         ((vp)->v_type == VDIR && (vp)->v_mountedhere != NULL)
   84 #define vn_mountedvfs(vp)       ((vp)->v_mountedhere)
   85 #define vn_has_cached_data(vp)  \
   86         ((vp)->v_object != NULL && \
   87         (vp)->v_object->resident_page_count > 0)
   88 
   89 #ifndef IN_BASE
   90 static __inline void
   91 vn_flush_cached_data(vnode_t *vp, boolean_t sync)
   92 {
   93 #if __FreeBSD_version > 1300054
   94         if (vm_object_mightbedirty(vp->v_object)) {
   95 #else
   96         if (vp->v_object->flags & OBJ_MIGHTBEDIRTY) {
   97 #endif
   98                 int flags = sync ? OBJPC_SYNC : 0;
   99                 vn_lock(vp, LK_SHARED | LK_RETRY);
  100                 zfs_vmobject_wlock(vp->v_object);
  101                 vm_object_page_clean(vp->v_object, 0, 0, flags);
  102                 zfs_vmobject_wunlock(vp->v_object);
  103                 VOP_UNLOCK(vp);
  104         }
  105 }
  106 #endif
  107 
  108 #define vn_exists(vp)           do { } while (0)
  109 #define vn_invalid(vp)          do { } while (0)
  110 #define vn_free(vp)             do { } while (0)
  111 #define vn_matchops(vp, vops)   ((vp)->v_op == &(vops))
  112 
  113 #define VN_HOLD(v)      vref(v)
  114 #define VN_RELE(v)      vrele(v)
  115 #define VN_URELE(v)     vput(v)
  116 
  117 #define vnevent_create(vp, ct)                  do { } while (0)
  118 #define vnevent_link(vp, ct)                    do { } while (0)
  119 #define vnevent_remove(vp, dvp, name, ct)       do { } while (0)
  120 #define vnevent_rmdir(vp, dvp, name, ct)        do { } while (0)
  121 #define vnevent_rename_src(vp, dvp, name, ct)   do { } while (0)
  122 #define vnevent_rename_dest(vp, dvp, name, ct)  do { } while (0)
  123 #define vnevent_rename_dest_dir(vp, ct)         do { } while (0)
  124 
  125 #define specvp(vp, rdev, type, cr)      (VN_HOLD(vp), (vp))
  126 #define MANDLOCK(vp, mode)      (0)
  127 
  128 /*
  129  * We will use va_spare is place of Solaris' va_mask.
  130  * This field is initialized in zfs_setattr().
  131  */
  132 #define va_mask         va_spare
  133 /* TODO: va_fileid is shorter than va_nodeid !!! */
  134 #define va_nodeid       va_fileid
  135 /* TODO: This field needs conversion! */
  136 #define va_nblocks      va_bytes
  137 #define va_blksize      va_blocksize
  138 
  139 #define MAXOFFSET_T     OFF_MAX
  140 
  141 #define FIGNORECASE     0x00
  142 
  143 /*
  144  * Attributes of interest to the caller of setattr or getattr.
  145  */
  146 #define AT_MODE         0x00002
  147 #define AT_UID          0x00004
  148 #define AT_GID          0x00008
  149 #define AT_FSID         0x00010
  150 #define AT_NODEID       0x00020
  151 #define AT_NLINK        0x00040
  152 #define AT_SIZE         0x00080
  153 #define AT_ATIME        0x00100
  154 #define AT_MTIME        0x00200
  155 #define AT_CTIME        0x00400
  156 #define AT_RDEV         0x00800
  157 #define AT_BLKSIZE      0x01000
  158 #define AT_NBLOCKS      0x02000
  159 /*                      0x04000 */      /* unused */
  160 #define AT_SEQ          0x08000
  161 /*
  162  * If AT_XVATTR is set then there are additional bits to process in
  163  * the xvattr_t's attribute bitmap.  If this is not set then the bitmap
  164  * MUST be ignored.  Note that this bit must be set/cleared explicitly.
  165  * That is, setting AT_ALL will NOT set AT_XVATTR.
  166  */
  167 #define AT_XVATTR       0x10000
  168 
  169 #define AT_ALL          (AT_MODE|AT_UID|AT_GID|AT_FSID|AT_NODEID|\
  170                         AT_NLINK|AT_SIZE|AT_ATIME|AT_MTIME|AT_CTIME|\
  171                         AT_RDEV|AT_BLKSIZE|AT_NBLOCKS|AT_SEQ)
  172 
  173 #define AT_STAT         (AT_MODE|AT_UID|AT_GID|AT_FSID|AT_NODEID|AT_NLINK|\
  174                         AT_SIZE|AT_ATIME|AT_MTIME|AT_CTIME|AT_RDEV)
  175 
  176 #define AT_TIMES        (AT_ATIME|AT_MTIME|AT_CTIME)
  177 
  178 #define AT_NOSET        (AT_NLINK|AT_RDEV|AT_FSID|AT_NODEID|\
  179                         AT_BLKSIZE|AT_NBLOCKS|AT_SEQ)
  180 
  181 #ifndef IN_BASE
  182 static __inline void
  183 vattr_init_mask(vattr_t *vap)
  184 {
  185 
  186         vap->va_mask = 0;
  187 
  188         if (vap->va_uid != (uid_t)VNOVAL)
  189                 vap->va_mask |= AT_UID;
  190         if (vap->va_gid != (gid_t)VNOVAL)
  191                 vap->va_mask |= AT_GID;
  192         if (vap->va_size != (u_quad_t)VNOVAL)
  193                 vap->va_mask |= AT_SIZE;
  194         if (vap->va_atime.tv_sec != VNOVAL)
  195                 vap->va_mask |= AT_ATIME;
  196         if (vap->va_mtime.tv_sec != VNOVAL)
  197                 vap->va_mask |= AT_MTIME;
  198         if (vap->va_mode != (uint16_t)VNOVAL)
  199                 vap->va_mask |= AT_MODE;
  200         if (vap->va_flags != VNOVAL)
  201                 vap->va_mask |= AT_XVATTR;
  202 }
  203 #endif
  204 
  205 #define         RLIM64_INFINITY 0
  206 
  207 #include <sys/vfs.h>
  208 
  209 #endif  /* _OPENSOLARIS_SYS_VNODE_H_ */

Cache object: e94773297aa73deb0e4c2402a3994dbc


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.