summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/geom/geom_disk.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/geom/geom_disk.c b/sys/geom/geom_disk.c
index e79fe64..494e094 100644
--- a/sys/geom/geom_disk.c
+++ b/sys/geom/geom_disk.c
@@ -376,11 +376,12 @@ sysctl_disks(SYSCTL_HANDLER_ARGS)
sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND);
sbuf_clear(sb);
- g_call_me(g_kern_disks, sb);
- do {
+ error = g_call_me(g_kern_disks, sb);
+ while (!error && !sbuf_done(sb)) {
tsleep(sb, PZERO, "kern.disks", hz);
- } while(!sbuf_done(sb));
- error = SYSCTL_OUT(req, sbuf_data(sb), sbuf_len(sb) + 1);
+ }
+ if (!error)
+ error = SYSCTL_OUT(req, sbuf_data(sb), sbuf_len(sb) + 1);
sbuf_delete(sb);
return error;
}
OpenPOWER on IntegriCloud