aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2022-01-28 19:22:41 +0000
committerAlexander Motin <mav@FreeBSD.org>2022-01-28 19:22:41 +0000
commit29998bf2ac4cc3ac49827336655bdbcb755eeffc (patch)
tree2c91a4690a271118b18020737ff0fae90c208742
parentffc1cc95e78ec05a3e1a0aed869e33a44d9f6641 (diff)
downloadsrc-29998bf2ac4cc3ac49827336655bdbcb755eeffc.tar.gz
src-29998bf2ac4cc3ac49827336655bdbcb755eeffc.zip
glabel: Set G_CF_DIRECT_SEND/RECEIVE for taste consumer.
All I/O requests through the taste consumer are synchronous, done with g_read_data() and without any locks held. It makes no sense to delegate the I/O to g_down/g_up threads. This removes many of context switches during disk retaste. MFC after: 2 weeks
-rw-r--r--sys/geom/label/g_label.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/geom/label/g_label.c b/sys/geom/label/g_label.c
index 1df7e799b014..2244931cd19b 100644
--- a/sys/geom/label/g_label.c
+++ b/sys/geom/label/g_label.c
@@ -402,6 +402,7 @@ g_label_taste(struct g_class *mp, struct g_provider *pp, int flags __unused)
gp->access = g_label_access_taste;
gp->orphan = g_label_orphan_taste;
cp = g_new_consumer(gp);
+ cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE;
if (g_attach(cp, pp) != 0)
goto end2;
if (g_access(cp, 1, 0, 0) != 0)