svn commit: r256863 - projects/camlock/sys/geom
Alexander Motin
mav at FreeBSD.org
Mon Oct 21 21:32:25 UTC 2013
Author: mav
Date: Mon Oct 21 21:32:24 2013
New Revision: 256863
URL: http://svnweb.freebsd.org/changeset/base/256863
Log:
Add and use constants for g_collectstats bits.
Modified:
projects/camlock/sys/geom/geom_int.h
projects/camlock/sys/geom/geom_io.c
Modified: projects/camlock/sys/geom/geom_int.h
==============================================================================
--- projects/camlock/sys/geom/geom_int.h Mon Oct 21 21:16:50 2013 (r256862)
+++ projects/camlock/sys/geom/geom_int.h Mon Oct 21 21:32:24 2013 (r256863)
@@ -39,6 +39,9 @@ LIST_HEAD(class_list_head, g_class);
TAILQ_HEAD(g_tailq_head, g_geom);
extern int g_collectstats;
+#define G_STATS_PROVIDERS 1 /* Collect I/O stats for providers */
+#define G_STATS_CONSUMERS 2 /* Collect I/O stats for consumers */
+
extern int g_debugflags;
/*
* 1 G_T_TOPOLOGY
Modified: projects/camlock/sys/geom/geom_io.c
==============================================================================
--- projects/camlock/sys/geom/geom_io.c Mon Oct 21 21:16:50 2013 (r256862)
+++ projects/camlock/sys/geom/geom_io.c Mon Oct 21 21:32:24 2013 (r256863)
@@ -510,7 +510,8 @@ g_io_request(struct bio *bp, struct g_co
KASSERT(!(bp->bio_flags & BIO_ONQUEUE),
("Bio already on queue bp=%p", bp));
- if ((g_collectstats & ~(pp->stat ? 0 : 1)) != 0)
+ if ((g_collectstats & G_STATS_CONSUMERS) != 0 ||
+ ((g_collectstats & G_STATS_PROVIDERS) != 0 && pp->stat != NULL))
binuptime(&bp->bio_t0);
else
getbinuptime(&bp->bio_t0);
@@ -545,9 +546,9 @@ g_io_request(struct bio *bp, struct g_co
*/
mtxp = mtx_pool_find(mtxpool_sleep, pp);
mtx_lock(mtxp);
- if (g_collectstats & 1)
+ if (g_collectstats & G_STATS_PROVIDERS)
devstat_start_transaction(pp->stat, &bp->bio_t0);
- if (g_collectstats & 2)
+ if (g_collectstats & G_STATS_CONSUMERS)
devstat_start_transaction(cp->stat, &bp->bio_t0);
pp->nstart++;
cp->nstart++;
@@ -649,13 +650,14 @@ g_io_deliver(struct bio *bp, int error)
* can not update one instance of the statistics from more
* than one thread at a time, so grab the lock first.
*/
- if ((g_collectstats & ~(pp->stat ? 0 : 1)) != 0)
+ if ((g_collectstats & G_STATS_CONSUMERS) != 0 ||
+ ((g_collectstats & G_STATS_PROVIDERS) != 0 && pp->stat != NULL))
binuptime(&now);
mtxp = mtx_pool_find(mtxpool_sleep, cp);
mtx_lock(mtxp);
- if (g_collectstats & 1)
+ if (g_collectstats & G_STATS_PROVIDERS)
devstat_end_transaction_bio_bt(pp->stat, bp, &now);
- if (g_collectstats & 2)
+ if (g_collectstats & G_STATS_CONSUMERS)
devstat_end_transaction_bio_bt(cp->stat, bp, &now);
cp->nend++;
pp->nend++;
More information about the svn-src-projects
mailing list