git://git.camperquake.de
/
zfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add new kstat for monitoring time in dmu_tx_assign
[zfs.git]
/
module
/
zfs
/
dmu_tx.c
diff --git
a/module/zfs/dmu_tx.c
b/module/zfs/dmu_tx.c
index
31c88c9
..
b0dc64f
100644
(file)
--- a/
module/zfs/dmu_tx.c
+++ b/
module/zfs/dmu_tx.c
@@
-1089,12
+1089,15
@@
dmu_tx_unassign(dmu_tx_t *tx)
int
dmu_tx_assign(dmu_tx_t *tx, uint64_t txg_how)
{
int
dmu_tx_assign(dmu_tx_t *tx, uint64_t txg_how)
{
+ hrtime_t before, after;
int err;
ASSERT(tx->tx_txg == 0);
ASSERT(txg_how != 0);
ASSERT(!dsl_pool_sync_context(tx->tx_pool));
int err;
ASSERT(tx->tx_txg == 0);
ASSERT(txg_how != 0);
ASSERT(!dsl_pool_sync_context(tx->tx_pool));
+ before = gethrtime();
+
while ((err = dmu_tx_try_assign(tx, txg_how)) != 0) {
dmu_tx_unassign(tx);
while ((err = dmu_tx_try_assign(tx, txg_how)) != 0) {
dmu_tx_unassign(tx);
@@
-1106,6
+1109,11
@@
dmu_tx_assign(dmu_tx_t *tx, uint64_t txg_how)
txg_rele_to_quiesce(&tx->tx_txgh);
txg_rele_to_quiesce(&tx->tx_txgh);
+ after = gethrtime();
+
+ dsl_pool_tx_assign_add_usecs(tx->tx_pool,
+ (after - before) / NSEC_PER_USEC);
+
return (0);
}
return (0);
}