summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/zfs
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2018-01-17 12:34:19 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2018-01-17 12:34:19 +0000
commit2a808e6f3a1c5fa1720415a217da96fb64133053 (patch)
tree35a6f9db837e3cfe87bb2917503d93ebc9555b1f /usr/src/uts/common/fs/zfs
parent85c7b8606e4a61f48f51d72efd00cb54a4afc46a (diff)
parentb10f758d69dd151326d3859af7e1d857ec9a6355 (diff)
downloadillumos-joyent-release-20180118.tar.gz
[illumos-gate merge]release-20180118
commit b10f758d69dd151326d3859af7e1d857ec9a6355 8963 default chunk size used by ipmi_fru_read() is too large for some SP's commit 301fd1d6f25595cd8c6d6795f39c72d97aff8cd9 8959 Add notifications when a scrub is paused or resumed commit 01a059ee0cdece49f47fd4d70086dd5bc7d0b0ff 8856 arc_cksum_is_equal() doesn't take into account ABD-logic commit b1b183574d0cf2bf3accbbf7717d88bdc3bbfc33 8952 VMware Workstation NVMe model is of "Unknown class of pci/pnpbios device" value commit be93bc991e25533dcbeb10e952fe0b9314390d90 8806 xattr_dir_inactive() releases used vnode with kernel panic commit 28e9047603953b20acb54306be7c48152a1b03e6 8954 libtopo cannot handle any array type other than string_array. Conflicts: usr/src/lib/libipmi/common/ipmi_fru.c
Diffstat (limited to 'usr/src/uts/common/fs/zfs')
-rw-r--r--usr/src/uts/common/fs/zfs/arc.c11
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_scan.c6
2 files changed, 11 insertions, 6 deletions
diff --git a/usr/src/uts/common/fs/zfs/arc.c b/usr/src/uts/common/fs/zfs/arc.c
index aceb530967..9b1f0b0ed8 100644
--- a/usr/src/uts/common/fs/zfs/arc.c
+++ b/usr/src/uts/common/fs/zfs/arc.c
@@ -23,7 +23,7 @@
* Copyright (c) 2017, Joyent, Inc.
* Copyright (c) 2011, 2017 by Delphix. All rights reserved.
* Copyright (c) 2014 by Saso Kiselkov. All rights reserved.
- * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2017 Nexenta Systems, Inc. All rights reserved.
*/
/*
@@ -1551,8 +1551,9 @@ arc_cksum_is_equal(arc_buf_hdr_t *hdr, zio_t *zio)
uint64_t lsize = HDR_GET_LSIZE(hdr);
uint64_t csize;
- void *cbuf = zio_buf_alloc(HDR_GET_PSIZE(hdr));
- csize = zio_compress_data(compress, zio->io_abd, cbuf, lsize);
+ abd_t *cdata = abd_alloc_linear(HDR_GET_PSIZE(hdr), B_TRUE);
+ csize = zio_compress_data(compress, zio->io_abd,
+ abd_to_buf(cdata), lsize);
ASSERT3U(csize, <=, HDR_GET_PSIZE(hdr));
if (csize < HDR_GET_PSIZE(hdr)) {
@@ -1568,10 +1569,10 @@ arc_cksum_is_equal(arc_buf_hdr_t *hdr, zio_t *zio)
* and zero out any part that should not contain
* data.
*/
- bzero((char *)cbuf + csize, HDR_GET_PSIZE(hdr) - csize);
+ abd_zero_off(cdata, csize, HDR_GET_PSIZE(hdr) - csize);
csize = HDR_GET_PSIZE(hdr);
}
- zio_push_transform(zio, cbuf, csize, HDR_GET_PSIZE(hdr), NULL);
+ zio_push_transform(zio, cdata, csize, HDR_GET_PSIZE(hdr), NULL);
}
/*
diff --git a/usr/src/uts/common/fs/zfs/dsl_scan.c b/usr/src/uts/common/fs/zfs/dsl_scan.c
index 9d950d853d..f1a6649199 100644
--- a/usr/src/uts/common/fs/zfs/dsl_scan.c
+++ b/usr/src/uts/common/fs/zfs/dsl_scan.c
@@ -364,6 +364,7 @@ dsl_scan_cancel_sync(void *arg, dmu_tx_t *tx)
dsl_scan_done(scn, B_FALSE, tx);
dsl_scan_sync_state(scn, tx);
+ spa_event_notify(scn->scn_dp->dp_spa, NULL, NULL, ESC_ZFS_SCRUB_ABORT);
}
int
@@ -418,6 +419,7 @@ dsl_scrub_pause_resume_sync(void *arg, dmu_tx_t *tx)
spa->spa_scan_pass_scrub_pause = gethrestime_sec();
scn->scn_phys.scn_flags |= DSF_SCRUB_PAUSED;
dsl_scan_sync_state(scn, tx);
+ spa_event_notify(spa, NULL, NULL, ESC_ZFS_SCRUB_PAUSED);
} else {
ASSERT3U(*cmd, ==, POOL_SCRUB_NORMAL);
if (dsl_scan_is_paused_scrub(scn)) {
@@ -2027,8 +2029,10 @@ dsl_scan(dsl_pool_t *dp, pool_scan_func_t func)
/* got scrub start cmd, resume paused scrub */
int err = dsl_scrub_set_pause_resume(scn->scn_dp,
POOL_SCRUB_NORMAL);
- if (err == 0)
+ if (err == 0) {
+ spa_event_notify(spa, NULL, NULL, ESC_ZFS_SCRUB_RESUME);
return (ECANCELED);
+ }
return (SET_ERROR(err));
}