aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2017-03-02 07:55:47 +0000
committerAlexander Motin <mav@FreeBSD.org>2017-03-02 07:55:47 +0000
commit6d1ccf40cc543fd487b9d3de0ad6efc2a05cb387 (patch)
tree0ca60c6973452c7aa14421b71bc8809c526ff80e /sys
parente93f9c77088a45d5530a7320b082b57c27058f68 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
index aa003fe33091..27ffed6aac30 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
@@ -959,7 +959,7 @@ uint64_t zil_block_buckets[] = {
* Calls are serialized.
*/
static lwb_t *
-zil_lwb_write_start(zilog_t *zilog, lwb_t *lwb)
+zil_lwb_write_start(zilog_t *zilog, lwb_t *lwb, boolean_t last)
{
lwb_t *nlwb = NULL;
zil_chain_t *zilc;
@@ -1060,6 +1060,8 @@ zil_lwb_write_start(zilog_t *zilog, lwb_t *lwb)
*/
bzero(lwb->lwb_buf + lwb->lwb_nused, wsz - lwb->lwb_nused);
+ if (last)
+ lwb->lwb_zio->io_pipeline &= ~ZIO_STAGE_ISSUE_ASYNC;
zio_nowait(lwb->lwb_zio); /* Kick off the write for the old log block */
/*
@@ -1103,7 +1105,7 @@ cont:
if (reclen > lwb_sp || (reclen + dlen > lwb_sp &&
lwb_sp < ZIL_MAX_LOG_DATA / 8 && (dlen % ZIL_MAX_LOG_DATA == 0 ||
lwb_sp < reclen + dlen % ZIL_MAX_LOG_DATA))) {
- lwb = zil_lwb_write_start(zilog, lwb);
+ lwb = zil_lwb_write_start(zilog, lwb, B_FALSE);
if (lwb == NULL)
return (NULL);
zil_lwb_write_init(zilog, lwb);
@@ -1560,7 +1562,7 @@ zil_commit_writer(zilog_t *zilog)
/* write the last block out */
if (lwb != NULL && lwb->lwb_zio != NULL)
- lwb = zil_lwb_write_start(zilog, lwb);
+ lwb = zil_lwb_write_start(zilog, lwb, B_TRUE);
zilog->zl_cur_used = 0;