]> git.proxmox.com Git - mirror_zfs.git/blobdiff - include/sys/zil.h
ztest: scrub ddt repair
[mirror_zfs.git] / include / sys / zil.h
index 62572f894a179fc6d38a57ea26060df74ad21267..fb7b38a066f4d58c869f8ef770c7fa52b00ca9b0 100644 (file)
@@ -32,6 +32,7 @@
 #include <sys/spa.h>
 #include <sys/zio.h>
 #include <sys/dmu.h>
+#include <sys/zio_crypt.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -39,6 +40,7 @@ extern "C" {
 
 struct dsl_pool;
 struct dsl_dataset;
+struct lwb;
 
 /*
  * Intent log format:
@@ -139,6 +141,7 @@ typedef enum zil_create {
 /*
  * Intent log transaction types and record structures
  */
+#define        TX_COMMIT               0       /* Commit marker (no on-disk state) */
 #define        TX_CREATE               1       /* Create file */
 #define        TX_MKDIR                2       /* Make directory */
 #define        TX_MKXATTR              3       /* Make XATTR directory */
@@ -394,7 +397,7 @@ typedef struct itx {
        uint8_t         itx_sync;       /* synchronous transaction */
        zil_callback_t  itx_callback;   /* Called when the itx is persistent */
        void            *itx_callback_data; /* User data for the callback */
-       uint64_t        itx_sod;        /* record size on disk */
+       size_t          itx_size;       /* allocated itx structure size */
        uint64_t        itx_oid;        /* object id */
        lr_t            itx_lr;         /* common part of log record */
        /* followed by type-specific part of lr_xx_t and its immediate data */
@@ -463,11 +466,13 @@ typedef int zil_parse_blk_func_t(zilog_t *zilog, blkptr_t *bp, void *arg,
     uint64_t txg);
 typedef int zil_parse_lr_func_t(zilog_t *zilog, lr_t *lr, void *arg,
     uint64_t txg);
-typedef int (*const zil_replay_func_t)(void *, char *, boolean_t);
-typedef int zil_get_data_t(void *arg, lr_write_t *lr, char *dbuf, zio_t *zio);
+typedef int zil_replay_func_t(void *arg1, void *arg2, boolean_t byteswap);
+typedef int zil_get_data_t(void *arg, lr_write_t *lr, char *dbuf,
+    struct lwb *lwb, zio_t *zio);
 
 extern int zil_parse(zilog_t *zilog, zil_parse_blk_func_t *parse_blk_func,
-    zil_parse_lr_func_t *parse_lr_func, void *arg, uint64_t txg);
+    zil_parse_lr_func_t *parse_lr_func, void *arg, uint64_t txg,
+    boolean_t decrypt);
 
 extern void    zil_init(void);
 extern void    zil_fini(void);
@@ -479,7 +484,7 @@ extern zilog_t      *zil_open(objset_t *os, zil_get_data_t *get_data);
 extern void    zil_close(zilog_t *zilog);
 
 extern void    zil_replay(objset_t *os, void *arg,
-    zil_replay_func_t replay_func[TX_MAX_TYPE]);
+    zil_replay_func_t *replay_func[TX_MAX_TYPE]);
 extern boolean_t zil_replaying(zilog_t *zilog, dmu_tx_t *tx);
 extern void    zil_destroy(zilog_t *zilog, boolean_t keep_first);
 extern void    zil_destroy_sync(zilog_t *zilog, dmu_tx_t *tx);
@@ -489,8 +494,9 @@ extern void zil_itx_destroy(itx_t *itx);
 extern void    zil_itx_assign(zilog_t *zilog, itx_t *itx, dmu_tx_t *tx);
 
 extern void    zil_commit(zilog_t *zilog, uint64_t oid);
+extern void    zil_commit_impl(zilog_t *zilog, uint64_t oid);
 
-extern int     zil_vdev_offline(const char *osname, void *txarg);
+extern int     zil_reset(const char *osname, void *txarg);
 extern int     zil_claim(struct dsl_pool *dp,
     struct dsl_dataset *ds, void *txarg);
 extern int     zil_check_log_chain(struct dsl_pool *dp,
@@ -501,7 +507,8 @@ extern void zil_clean(zilog_t *zilog, uint64_t synced_txg);
 extern int     zil_suspend(const char *osname, void **cookiep);
 extern void    zil_resume(void *cookie);
 
-extern void    zil_add_block(zilog_t *zilog, const blkptr_t *bp);
+extern void    zil_lwb_add_block(struct lwb *lwb, const blkptr_t *bp);
+extern void    zil_lwb_add_txg(struct lwb *lwb, uint64_t txg);
 extern int     zil_bp_tree_add(zilog_t *zilog, const blkptr_t *bp);
 
 extern void    zil_set_sync(zilog_t *zilog, uint64_t syncval);