aboutsummaryrefslogtreecommitdiff
path: root/lib/geom
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2019-12-29 21:16:03 +0000
committerAlexander Motin <mav@FreeBSD.org>2019-12-29 21:16:03 +0000
commit86c06ff8864bc0e2233980c741b689714000850d (patch)
tree7a17d62013a575a1a0a8eaf6d509c5e0d8b2907f /lib/geom
parent2a73387f1c342808c4939305f019deea9245ff25 (diff)
downloadsrc-86c06ff8864bc0e2233980c741b689714000850d.tar.gz
src-86c06ff8864bc0e2233980c741b689714000850d.zip
Remove GEOM_SCHED class and gsched tool.
This code was not actively maintained since it was introduced 10 years ago. It lacks support for many later GEOM features, such as direct dispatch, unmapped I/O, stripesize/stripeoffset, resize, etc. Plus it is the only remaining use of GEOM nstart/nend request counters, used there to implement live insertion/removal, questionable by itself. Plus, as number of people commented, GEOM is not the best place for I/O scheduler, since it has limited information about layers both above and below it, required for efficient scheduling. Plus with the modern shift to SSDs there is just no more significant need for this kind of scheduling. Approved by: imp, phk, luigi Relnotes: yes
Notes
Notes: svn path=/head/; revision=356185
Diffstat (limited to 'lib/geom')
-rw-r--r--lib/geom/Makefile.classes1
-rw-r--r--lib/geom/sched/Makefile9
-rw-r--r--lib/geom/sched/Makefile.depend19
-rw-r--r--lib/geom/sched/geom_sched.c128
-rw-r--r--lib/geom/sched/gsched.8162
5 files changed, 0 insertions, 319 deletions
diff --git a/lib/geom/Makefile.classes b/lib/geom/Makefile.classes
index a8c4c81ba6e8..fcaa748825ee 100644
--- a/lib/geom/Makefile.classes
+++ b/lib/geom/Makefile.classes
@@ -20,7 +20,6 @@ GEOM_CLASSES+= nop
GEOM_CLASSES+= part
GEOM_CLASSES+= raid
GEOM_CLASSES+= raid3
-GEOM_CLASSES+= sched
GEOM_CLASSES+= shsec
GEOM_CLASSES+= stripe
GEOM_CLASSES+= virstor
diff --git a/lib/geom/sched/Makefile b/lib/geom/sched/Makefile
deleted file mode 100644
index ad3f5b131a18..000000000000
--- a/lib/geom/sched/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# GEOM_LIBRARY_PATH
-# $FreeBSD$
-
-PACKAGE=runtime
-.PATH: ${.CURDIR:H:H}/misc
-
-GEOM_CLASS= sched
-
-.include <bsd.lib.mk>
diff --git a/lib/geom/sched/Makefile.depend b/lib/geom/sched/Makefile.depend
deleted file mode 100644
index fb5f86e931fb..000000000000
--- a/lib/geom/sched/Makefile.depend
+++ /dev/null
@@ -1,19 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- lib/libgeom \
- sbin/geom/core \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/lib/geom/sched/geom_sched.c b/lib/geom/sched/geom_sched.c
deleted file mode 100644
index 7b7b281d7d55..000000000000
--- a/lib/geom/sched/geom_sched.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2009 Fabio Checconi
- * Copyright (c) 2010 Luigi Rizzo, Universita` di Pisa
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * $Id$
- * $FreeBSD$
- *
- * This file implements the userspace library used by the 'geom'
- * command to load and manipulate disk schedulers.
- */
-
-#include <sys/cdefs.h>
-#include <sys/param.h>
-#include <sys/linker.h>
-#include <sys/module.h>
-
-#include <stdio.h>
-#include <stdint.h>
-#include <libgeom.h>
-
-#include "core/geom.h"
-#include "misc/subr.h"
-
-#define G_SCHED_VERSION 0
-
-uint32_t lib_version = G_LIB_VERSION;
-uint32_t version = G_SCHED_VERSION;
-
-/*
- * storage for parameters used by this geom class.
- * Right now only the scheduler name is used.
- */
-#define GSCHED_ALGO "rr" /* default scheduler */
-
-/*
- * Adapt to differences in geom library.
- * in V1 struct g_command misses gc_argname, eld, and G_BOOL is undefined
- */
-#if G_LIB_VERSION <= 1
-#define G_TYPE_BOOL G_TYPE_NUMBER
-#endif
-#if G_LIB_VERSION >= 3 && G_LIB_VERSION <= 4
-#define G_ARGNAME NULL,
-#else
-#define G_ARGNAME
-#endif
-
-static void
-gcmd_createinsert(struct gctl_req *req, unsigned flags __unused)
-{
- const char *reqalgo;
- char name[64];
-
- if (gctl_has_param(req, "algo"))
- reqalgo = gctl_get_ascii(req, "algo");
- else
- reqalgo = GSCHED_ALGO;
-
- snprintf(name, sizeof(name), "gsched_%s", reqalgo);
- /*
- * Do not complain about errors here, gctl_issue()
- * will fail anyway.
- */
- if (modfind(name) < 0)
- kldload(name);
- gctl_issue(req);
-}
-
-struct g_command class_commands[] = {
- { "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, gcmd_createinsert,
- {
- { 'a', "algo", GSCHED_ALGO, G_TYPE_STRING },
- G_OPT_SENTINEL
- },
- G_ARGNAME "[-v] [-a algorithm_name] dev ..."
- },
- { "insert", G_FLAG_VERBOSE | G_FLAG_LOADKLD, gcmd_createinsert,
- {
- { 'a', "algo", GSCHED_ALGO, G_TYPE_STRING },
- G_OPT_SENTINEL
- },
- G_ARGNAME "[-v] [-a algorithm_name] dev ..."
- },
- { "configure", G_FLAG_VERBOSE, NULL,
- {
- { 'a', "algo", GSCHED_ALGO, G_TYPE_STRING },
- G_OPT_SENTINEL
- },
- G_ARGNAME "[-v] [-a algorithm_name] prov ..."
- },
- { "destroy", G_FLAG_VERBOSE, NULL,
- {
- { 'f', "force", NULL, G_TYPE_BOOL },
- G_OPT_SENTINEL
- },
- G_ARGNAME "[-fv] prov ..."
- },
- { "reset", G_FLAG_VERBOSE, NULL, G_NULL_OPTS,
- G_ARGNAME "[-v] prov ..."
- },
- G_CMD_SENTINEL
-};
diff --git a/lib/geom/sched/gsched.8 b/lib/geom/sched/gsched.8
deleted file mode 100644
index facb5c18440f..000000000000
--- a/lib/geom/sched/gsched.8
+++ /dev/null
@@ -1,162 +0,0 @@
-.\" Copyright (c) 2009-2010 Fabio Checconi
-.\" Copyright (c) 2009-2010 Luigi Rizzo, Universita` di Pisa
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd July 26, 2012
-.Dt GSCHED 8
-.Os
-.Sh NAME
-.Nm gsched
-.Nd "control utility for disk scheduler GEOM class"
-.Sh SYNOPSIS
-.Nm
-.Cm create
-.Op Fl v
-.Op Fl a Ar algorithm
-.Ar provider ...
-.Nm
-.Cm insert
-.Op Fl v
-.Op Fl a Ar algorithm
-.Ar provider ...
-.Nm
-.Cm configure
-.Op Fl v
-.Op Fl a Ar algorithm
-.Ar node ...
-.Nm
-.Cm destroy
-.Op Fl fv
-.Ar node ...
-.Nm
-.Cm reset
-.Op Fl v
-.Ar node ...
-.Nm
-.Cm { list | status | load | unload }
-.Sh DESCRIPTION
-The
-.Nm
-utility (also callable as
-.Nm geom sched ... )
-changes the scheduling policy of the requests going to a provider.
-.Pp
-The first argument to
-.Nm
-indicates an action to be performed:
-.Bl -tag -width ".Cm configure"
-.It Cm create
-Create a new provider and geom node using the specified scheduling algorithm.
-.Ar algorithm
-is the name of the scheduling algorithm used for the provider.
-Available algorithms include:
-.Ar rr ,
-which implements anticipatory scheduling with round robin service
-among clients;
-.Ar as ,
-which implements a simple form of anticipatory scheduling with
-no per-client queue.
-.Pp
-If the operation succeeds, the new provider should appear with name
-.Pa /dev/ Ns Ao Ar dev Ac Ns Pa .sched. .
-The kernel module
-.Pa geom_sched.ko
-will be loaded if it is not loaded already.
-.It Cm insert
-Operates as "create", but the insertion is "transparent",
-i.e. the existing provider is rerouted to the newly created geom,
-which in turn forwards requests to the existing geom.
-This operation allows one to start/stop a scheduling service
-on an already existing provider.
-.Pp
-A subsequent "destroy" will remove the newly created geom and
-hook the provider back to the original geom.
-.It Cm configure
-Configure existing scheduling provider. It supports the same options
-as the
-.Nm create
-command.
-.It Cm destroy
-Destroy the geom specified in the parameter.
-.It Cm reset
-Do nothing.
-.It Cm list | status | load | unload
-See
-.Xr geom 8 .
-.El
-.Pp
-Additional options:
-.Bl -tag -width ".Fl f"
-.It Fl f
-Force the removal of the specified provider.
-.It Fl v
-Be more verbose.
-.El
-.Sh SYSCTL VARIABLES
-The following
-.Xr sysctl 8
-variables can be used to control the behavior of the
-.Nm SCHED
-GEOM class.
-The default value is shown next to each variable.
-.Bl -tag -width indent
-.It Va kern.geom.sched.debug : No 0
-Debug level of the
-.Nm SCHED
-GEOM class.
-This can be set to a number between 0 and 2 inclusive.
-If set to 0 minimal debug information is printed, and if set to 2 the
-maximum amount of debug information is printed.
-.El
-.Sh EXIT STATUS
-Exit status is 0 on success, and 1 if the command fails.
-.Sh EXAMPLES
-The following example shows how to create a scheduling provider for disk
-.Pa /dev/ada0 ,
-and how to destroy it.
-.Bd -literal -offset indent
-# Load the geom_sched module:
-kldload geom_sched
-# Load some scheduler classes used by geom_sched:
-kldload gsched_rr
-# Configure device ada0 to use scheduler "rr":
-geom sched insert -a rr ada0
-# Now provider ada0 uses the "rr" algorithm;
-# the new geom is ada0.sched.
-# Remove the scheduler on the device:
-geom sched destroy -v ada0.sched.
-.Ed
-.Sh SEE ALSO
-.Xr geom 4 ,
-.Xr geom 8
-.Sh HISTORY
-The
-.Nm
-utility first appeared in
-.Fx 8.1 .
-.Sh AUTHORS
-.An Fabio Checconi Aq Mt fabio@FreeBSD.org
-.An Luigi Rizzo Aq Mt luigi@FreeBSD.org