Add -p switch to "zpool get"
[zfs.git] / include / sys / dsl_dataset.h
index c4530a8..afcf2b7 100644 (file)
@@ -20,7 +20,8 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011 by Delphix. All rights reserved.
+ * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2012, Joyent, Inc. All rights reserved.
  */
 
 #ifndef        _SYS_DSL_DATASET_H
@@ -85,7 +86,12 @@ typedef struct dsl_dataset_phys {
        uint64_t ds_creation_time;      /* seconds since 1970 */
        uint64_t ds_creation_txg;
        uint64_t ds_deadlist_obj;       /* DMU_OT_DEADLIST */
-       uint64_t ds_used_bytes;
+       /*
+        * ds_referenced_bytes, ds_compressed_bytes, and ds_uncompressed_bytes
+        * include all blocks referenced by this dataset, including those
+        * shared with any other datasets.
+        */
+       uint64_t ds_referenced_bytes;
        uint64_t ds_compressed_bytes;
        uint64_t ds_uncompressed_bytes;
        uint64_t ds_unique_bytes;       /* only relevant to snapshots */
@@ -150,6 +156,9 @@ typedef struct dsl_dataset {
        uint64_t ds_reserved;   /* cached refreservation */
        uint64_t ds_quota;      /* cached refquota */
 
+       kmutex_t ds_sendstream_lock;
+       list_t ds_sendstreams;
+
        /* Protected by ds_lock; keep at end of struct for better locality */
        char ds_snapname[MAXNAMELEN];
 } dsl_dataset_t;
@@ -242,6 +251,8 @@ int dsl_dataset_block_kill(dsl_dataset_t *ds, const blkptr_t *bp,
 boolean_t dsl_dataset_block_freeable(dsl_dataset_t *ds, const blkptr_t *bp,
     uint64_t blk_birth);
 uint64_t dsl_dataset_prev_snap_txg(dsl_dataset_t *ds);
+int dsl_dataset_snap_lookup(dsl_dataset_t *ds, const char *name,
+    uint64_t *value);
 
 void dsl_dataset_dirty(dsl_dataset_t *ds, dmu_tx_t *tx);
 void dsl_dataset_stats(dsl_dataset_t *os, nvlist_t *nv);
@@ -254,6 +265,7 @@ int dsl_dataset_space_written(dsl_dataset_t *oldsnap, dsl_dataset_t *new,
     uint64_t *usedp, uint64_t *compp, uint64_t *uncompp);
 int dsl_dataset_space_wouldfree(dsl_dataset_t *firstsnap, dsl_dataset_t *last,
     uint64_t *usedp, uint64_t *compp, uint64_t *uncompp);
+boolean_t dsl_dataset_is_dirty(dsl_dataset_t *ds);
 
 int dsl_dsobj_to_dsname(char *pname, uint64_t obj, char *buf);
 
@@ -271,7 +283,7 @@ int dsl_destroy_inconsistent(const char *dsname, void *arg);
 #ifdef ZFS_DEBUG
 #define        dprintf_ds(ds, fmt, ...) do { \
        if (zfs_flags & ZFS_DEBUG_DPRINTF) { \
-       char *__ds_name = kmem_alloc(MAXNAMELEN, KM_SLEEP); \
+       char *__ds_name = kmem_alloc(MAXNAMELEN, KM_PUSHPAGE); \
        dsl_dataset_name(ds, __ds_name); \
        dprintf("ds=%s " fmt, __ds_name, __VA_ARGS__); \
        kmem_free(__ds_name, MAXNAMELEN); \