]> git.proxmox.com Git - mirror_zfs-debian.git/blobdiff - include/sys/arc.h
Imported Upstream version 0.6.2+git20140204
[mirror_zfs-debian.git] / include / sys / arc.h
index 67882197a5e1d27a77ad12c1b371e341afabf352..9d68d3b43a730ef6883b87a9035eeed66c74423c 100644 (file)
@@ -92,6 +92,36 @@ typedef enum arc_space_type {
        ARC_SPACE_NUMTYPES
 } arc_space_type_t;
 
+typedef enum arc_state_type {
+       ARC_STATE_ANON,
+       ARC_STATE_MRU,
+       ARC_STATE_MRU_GHOST,
+       ARC_STATE_MFU,
+       ARC_STATE_MFU_GHOST,
+       ARC_STATE_L2C_ONLY,
+       ARC_STATE_NUMTYPES
+} arc_state_type_t;
+
+typedef struct arc_buf_info {
+       arc_state_type_t        abi_state_type;
+       arc_buf_contents_t      abi_state_contents;
+       uint64_t                abi_state_index;
+       uint32_t                abi_flags;
+       uint32_t                abi_datacnt;
+       uint64_t                abi_size;
+       uint64_t                abi_spa;
+       uint64_t                abi_access;
+       uint32_t                abi_mru_hits;
+       uint32_t                abi_mru_ghost_hits;
+       uint32_t                abi_mfu_hits;
+       uint32_t                abi_mfu_ghost_hits;
+       uint32_t                abi_l2arc_hits;
+       uint32_t                abi_holds;
+       uint64_t                abi_l2arc_dattr;
+       uint64_t                abi_l2arc_asize;
+       enum zio_compress       abi_l2arc_compress;
+} arc_buf_info_t;
+
 void arc_space_consume(uint64_t space, arc_space_type_t type);
 void arc_space_return(uint64_t space, arc_space_type_t type);
 arc_buf_t *arc_buf_alloc(spa_t *spa, int size, void *tag,
@@ -100,11 +130,13 @@ arc_buf_t *arc_loan_buf(spa_t *spa, int size);
 void arc_return_buf(arc_buf_t *buf, void *tag);
 void arc_loan_inuse_buf(arc_buf_t *buf, void *tag);
 void arc_buf_add_ref(arc_buf_t *buf, void *tag);
-int arc_buf_remove_ref(arc_buf_t *buf, void *tag);
+boolean_t arc_buf_remove_ref(arc_buf_t *buf, void *tag);
+void arc_buf_info(arc_buf_t *buf, arc_buf_info_t *abi, int state_index);
 int arc_buf_size(arc_buf_t *buf);
 void arc_release(arc_buf_t *buf, void *tag);
 int arc_released(arc_buf_t *buf);
 int arc_has_callback(arc_buf_t *buf);
+void arc_buf_sigsegv(int sig, siginfo_t *si, void *unused);
 void arc_buf_freeze(arc_buf_t *buf);
 void arc_buf_thaw(arc_buf_t *buf);
 boolean_t arc_buf_eviction_needed(arc_buf_t *buf);
@@ -113,12 +145,13 @@ int arc_referenced(arc_buf_t *buf);
 #endif
 
 int arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp,
-    arc_done_func_t *done, void *private, int priority, int flags,
+    arc_done_func_t *done, void *private, zio_priority_t priority, int flags,
     uint32_t *arc_flags, const zbookmark_t *zb);
 zio_t *arc_write(zio_t *pio, spa_t *spa, uint64_t txg,
     blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, boolean_t l2arc_compress,
-    const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *done,
-    void *private, int priority, int zio_flags, const zbookmark_t *zb);
+    const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *physdone,
+    arc_done_func_t *done, void *private, zio_priority_t priority,
+    int zio_flags, const zbookmark_t *zb);
 
 arc_prune_t *arc_add_prune_callback(arc_prune_func_t *func, void *private);
 void arc_remove_prune_callback(arc_prune_t *p);
@@ -147,10 +180,9 @@ void l2arc_fini(void);
 void l2arc_start(void);
 void l2arc_stop(void);
 
-/* Global tunings */
-extern int zfs_write_limit_shift;
-extern unsigned long zfs_write_limit_max;
-extern kmutex_t zfs_write_limit_lock;
+#ifndef _KERNEL
+extern boolean_t arc_watch;
+#endif
 
 #ifdef __cplusplus
 }