aboutsummaryrefslogtreecommitdiffstats
path: root/include/sys
diff options
context:
space:
mode:
authorMatthew Ahrens <[email protected]>2013-05-16 14:18:06 -0700
committerBrian Behlendorf <[email protected]>2013-11-05 12:14:48 -0800
commit498877baf5038b32c1531e5ec96b435023200f4d (patch)
tree741845c71f02bf2dca826e3a988c7125c8958117 /include/sys
parent03c6040bee6c87a9413b7da41d9f580f79a8ab62 (diff)
Illumos #3112, #3113, #3114
3112 ztest does not honor ZFS_DEBUG 3113 ztest should use watchpoints to protect frozen arc bufs 3114 some leaked nvlists in zfsdev_ioctl Reviewed by: Adam Leventhal <[email protected]> Reviewed by: Matt Amdur <[email protected]> Reviewed by: George Wilson <[email protected]> Reviewed by: Christopher Siden <[email protected]> Approved by: Eric Schrock <[email protected]> References: https://www.illumos.org/issues/3112 https://www.illumos.org/issues/3113 https://www.illumos.org/issues/3114 illumos/illumos-gate@cd1c8b85eb30b568e9816221430c479ace7a559d The /proc/self/cmd watchpoint interface is specific to Solaris. Therefore, the #3113 implementation was reworked to use the more portable mprotect(2) system call. When the pages are watched they are marked read-only for protection. Any write to the protected address range immediately trigger a SIGSEGV. The pages are marked writable again when they are unwatched. Ported-by: Brian Behlendorf <[email protected]> Issue #1489
Diffstat (limited to 'include/sys')
-rw-r--r--include/sys/arc.h5
-rw-r--r--include/sys/zfs_context.h2
2 files changed, 7 insertions, 0 deletions
diff --git a/include/sys/arc.h b/include/sys/arc.h
index efafb551a..221946da3 100644
--- a/include/sys/arc.h
+++ b/include/sys/arc.h
@@ -136,6 +136,7 @@ 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);
@@ -183,6 +184,10 @@ 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
}
#endif
diff --git a/include/sys/zfs_context.h b/include/sys/zfs_context.h
index adb152f58..28a1306aa 100644
--- a/include/sys/zfs_context.h
+++ b/include/sys/zfs_context.h
@@ -97,6 +97,8 @@
#include <dirent.h>
#include <time.h>
#include <ctype.h>
+#include <signal.h>
+#include <sys/mman.h>
#include <sys/note.h>
#include <sys/types.h>
#include <sys/cred.h>