diff options
author | Matthew Ahrens <[email protected]> | 2013-05-16 14:18:06 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2013-11-05 12:14:48 -0800 |
commit | 498877baf5038b32c1531e5ec96b435023200f4d (patch) | |
tree | 741845c71f02bf2dca826e3a988c7125c8958117 /include | |
parent | 03c6040bee6c87a9413b7da41d9f580f79a8ab62 (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')
-rw-r--r-- | include/sys/arc.h | 5 | ||||
-rw-r--r-- | include/sys/zfs_context.h | 2 |
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> |