svn commit: r264505 - in stable: 8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs 9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
John Baldwin
jhb at FreeBSD.org
Tue Apr 15 15:58:07 UTC 2014
Author: jhb
Date: Tue Apr 15 15:58:06 2014
New Revision: 264505
URL: http://svnweb.freebsd.org/changeset/base/264505
Log:
Don't pass a timeout of 0 ticks to pause() for a delay of less than 1
hz tick. On 8.x this results in an infinite sleep as pause() does not
support a delay of 0 ticks. Since all delay values are converted from
nanoseconds to ticks using a floor function, skipping the sleep for a
delay smaller than 1 tick is the more consistent than rounding up to a
single tick.
This is a direct commit to 8 and 9 as 10.x and later use pause_sbt()
instead.
Reviewed by: avg
Modified:
stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
Changes in other areas also in this revision:
Modified:
stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Tue Apr 15 15:41:57 2014 (r264504)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c Tue Apr 15 15:58:06 2014 (r264505)
@@ -1062,9 +1062,13 @@ dmu_tx_delay(dmu_tx_t *tx, uint64_t dirt
continue;
mutex_exit(&curthread->t_delay_lock);
#else
+ int timo;
+
/* XXX High resolution callouts are not available */
ASSERT(wakeup >= now);
- pause("dmu_tx_delay", NSEC_TO_TICK(wakeup - now));
+ timo = NSEC_TO_TICK(wakeup - now);
+ if (timo != 0)
+ pause("dmu_tx_delay", timo);
#endif
#else
hrtime_t delta = wakeup - gethrtime();
More information about the svn-src-stable-9
mailing list