Illumos #2619 and #2747
[zfs.git] / include / sys / zio.h
index 289238c..0527979 100644 (file)
@@ -24,6 +24,7 @@
  */
 /*
  * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
+ * Copyright (c) 2012 by Delphix. All rights reserved.
  */
 
 #ifndef _ZIO_H
@@ -278,6 +279,14 @@ typedef struct zbookmark {
 #define        ZB_ZIL_OBJECT           (0ULL)
 #define        ZB_ZIL_LEVEL            (-2LL)
 
+#define        ZB_IS_ZERO(zb)                                          \
+       ((zb)->zb_objset == 0 && (zb)->zb_object == 0 &&        \
+       (zb)->zb_level == 0 && (zb)->zb_blkid == 0)
+#define        ZB_IS_ROOT(zb)                          \
+       ((zb)->zb_object == ZB_ROOT_OBJECT &&   \
+       (zb)->zb_level == ZB_ROOT_LEVEL &&      \
+       (zb)->zb_blkid == ZB_ROOT_BLKID)
+
 typedef struct zio_prop {
        enum zio_checksum       zp_checksum;
        enum zio_compress       zp_compress;
@@ -295,6 +304,7 @@ typedef void zio_cksum_finish_f(zio_cksum_report_t *rep,
 typedef void zio_cksum_free_f(void *cbdata, size_t size);
 
 struct zio_bad_cksum;                          /* defined in zio_checksum.h */
+struct dnode_phys;
 
 struct zio_cksum_report {
        struct zio_cksum_report *zcr_next;
@@ -567,6 +577,10 @@ extern void zfs_ereport_post_checksum(spa_t *spa, vdev_t *vd,
 /* Called from spa_sync(), but primarily an injection handler */
 extern void spa_handle_ignored_writes(spa_t *spa);
 
+/* zbookmark functions */
+boolean_t zbookmark_is_before(const struct dnode_phys *dnp,
+    const zbookmark_t *zb1, const zbookmark_t *zb2);
+
 #ifdef __cplusplus
 }
 #endif