Rebase master to b117
[zfs.git] / module / zfs / include / sys / zfs_vfsops.h
index 87b75e6..b8ed7b2 100644 (file)
  * CDDL HEADER END
  */
 /*
- * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
 #ifndef        _SYS_FS_ZFS_VFSOPS_H
 #define        _SYS_FS_ZFS_VFSOPS_H
 
-#pragma ident  "%Z%%M% %I%     %E% SMI"
-
 #include <sys/isa_defs.h>
 #include <sys/types32.h>
 #include <sys/list.h>
@@ -49,13 +47,13 @@ struct zfsvfs {
        uint64_t        z_root;         /* id of root znode */
        uint64_t        z_unlinkedobj;  /* id of unlinked zapobj */
        uint64_t        z_max_blksz;    /* maximum block size for files */
-       uint64_t        z_assign;       /* TXG_NOWAIT or set by zil_replay() */
        uint64_t        z_fuid_obj;     /* fuid table object number */
        uint64_t        z_fuid_size;    /* fuid table size */
        avl_tree_t      z_fuid_idx;     /* fuid tree keyed by index */
        avl_tree_t      z_fuid_domain;  /* fuid tree keyed by domain */
        krwlock_t       z_fuid_lock;    /* fuid lock */
        boolean_t       z_fuid_loaded;  /* fuid tables are loaded */
+       boolean_t       z_fuid_dirty;   /* need to sync fuid table ? */
        struct zfs_fuid_info    *z_fuid_replay; /* fuid info for replay */
        zilog_t         *z_log;         /* intent log pointer */
        uint_t          z_acl_mode;     /* acl chmod/mode behavior */
@@ -74,8 +72,13 @@ struct zfsvfs {
        boolean_t       z_issnap;       /* true if this is a snapshot */
        boolean_t       z_vscan;        /* virus scan on/off */
        boolean_t       z_use_fuids;    /* version allows fuids */
-       kmutex_t        z_online_recv_lock; /* recv in prog grabs as WRITER */
+       boolean_t       z_replay;       /* set during ZIL replay */
+       kmutex_t        z_online_recv_lock; /* held while recv in progress */
        uint64_t        z_version;      /* ZPL version */
+       uint64_t        z_shares_dir;   /* hidden shares dir */
+       kmutex_t        z_lock;
+       uint64_t        z_userquota_obj;
+       uint64_t        z_groupquota_obj;
 #define        ZFS_OBJ_MTX_SZ  64
        kmutex_t        z_hold_mtx[ZFS_OBJ_MTX_SZ];     /* znode hold locks */
 };
@@ -132,6 +135,17 @@ extern uint_t zfs_fsyncer_key;
 
 extern int zfs_suspend_fs(zfsvfs_t *zfsvfs, char *osname, int *mode);
 extern int zfs_resume_fs(zfsvfs_t *zfsvfs, const char *osname, int mode);
+extern int zfs_userspace_one(zfsvfs_t *zfsvfs, zfs_userquota_prop_t type,
+    const char *domain, uint64_t rid, uint64_t *valuep);
+extern int zfs_userspace_many(zfsvfs_t *zfsvfs, zfs_userquota_prop_t type,
+    uint64_t *cookiep, void *vbuf, uint64_t *bufsizep);
+extern int zfs_set_userquota(zfsvfs_t *zfsvfs, zfs_userquota_prop_t type,
+    const char *domain, uint64_t rid, uint64_t quota);
+extern boolean_t zfs_usergroup_overquota(zfsvfs_t *zfsvfs,
+    boolean_t isgroup, uint64_t fuid);
+extern int zfs_set_version(zfsvfs_t *zfsvfs, uint64_t newvers);
+extern int zfsvfs_create(const char *name, int mode, zfsvfs_t **zvp);
+extern void zfsvfs_free(zfsvfs_t *zfsvfs);
 
 #ifdef __cplusplus
 }