aboutsummaryrefslogtreecommitdiff
path: root/sys/geom
diff options
context:
space:
mode:
authorAlexander Leidinger <netchild@FreeBSD.org>2011-02-25 10:24:35 +0000
committerAlexander Leidinger <netchild@FreeBSD.org>2011-02-25 10:24:35 +0000
commitcb08c2cc8318d1efcb68303861ebb89f4f73c1f3 (patch)
tree9d3d4c4ac744558b0f121bc95130f956f192c80f /sys/geom
parentde5b19526b7350b9c608ae4bf0bd80b91e51a5df (diff)
downloadsrc-cb08c2cc8318d1efcb68303861ebb89f4f73c1f3.tar.gz
src-cb08c2cc8318d1efcb68303861ebb89f4f73c1f3.zip
Add some FEATURE macros for various GEOM classes.
No FreeBSD version bump, the userland application to query the features will be committed last and can serve as an indication of the availablility if needed. Sponsored by: Google Summer of Code 2010 Submitted by: kibab Reviewed by: silence on geom@ during 2 weeks X-MFC after: to be determined in last commit with code from this project
Notes
Notes: svn path=/head/; revision=219029
Diffstat (limited to 'sys/geom')
-rw-r--r--sys/geom/bde/g_bde.c3
-rw-r--r--sys/geom/cache/g_cache.c2
-rw-r--r--sys/geom/concat/g_concat.c1
-rw-r--r--sys/geom/eli/g_eli.c1
-rw-r--r--sys/geom/gate/g_gate.c2
-rw-r--r--sys/geom/geom_bsd.c3
-rw-r--r--sys/geom/geom_fox.c3
-rw-r--r--sys/geom/geom_mbr.c3
-rw-r--r--sys/geom/geom_pc98.c3
-rw-r--r--sys/geom/geom_sunlabel.c3
-rw-r--r--sys/geom/geom_vol_ffs.c3
-rw-r--r--sys/geom/journal/g_journal.c1
-rw-r--r--sys/geom/label/g_label.c2
-rw-r--r--sys/geom/linux_lvm/g_linux_lvm.c2
-rw-r--r--sys/geom/mirror/g_mirror.c1
-rw-r--r--sys/geom/multipath/g_multipath.c1
-rw-r--r--sys/geom/part/g_part_apm.c3
-rw-r--r--sys/geom/part/g_part_bsd.c3
-rw-r--r--sys/geom/part/g_part_ebr.c8
-rw-r--r--sys/geom/part/g_part_gpt.c3
-rw-r--r--sys/geom/part/g_part_mbr.c3
-rw-r--r--sys/geom/part/g_part_pc98.c3
-rw-r--r--sys/geom/part/g_part_vtoc8.c3
-rw-r--r--sys/geom/raid3/g_raid3.c1
-rw-r--r--sys/geom/shsec/g_shsec.c1
-rw-r--r--sys/geom/stripe/g_stripe.c1
-rw-r--r--sys/geom/uzip/g_uzip.c3
-rw-r--r--sys/geom/virstor/g_virstor.c2
28 files changed, 68 insertions, 0 deletions
diff --git a/sys/geom/bde/g_bde.c b/sys/geom/bde/g_bde.c
index 696c70fdc267..bd4b10770f69 100644
--- a/sys/geom/bde/g_bde.c
+++ b/sys/geom/bde/g_bde.c
@@ -41,6 +41,7 @@
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/kthread.h>
+#include <sys/sysctl.h>
#include <crypto/rijndael/rijndael-api-fst.h>
#include <crypto/sha2/sha2.h>
@@ -48,6 +49,8 @@
#include <geom/bde/g_bde.h>
#define BDE_CLASS_NAME "BDE"
+FEATURE(geom_bde, "GEOM-based Disk Encryption");
+
static void
g_bde_start(struct bio *bp)
{
diff --git a/sys/geom/cache/g_cache.c b/sys/geom/cache/g_cache.c
index 7be8cb34385c..01c787390b08 100644
--- a/sys/geom/cache/g_cache.c
+++ b/sys/geom/cache/g_cache.c
@@ -42,6 +42,8 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/cache/g_cache.h>
+FEATURE(geom_cache, "GEOM cache module");
+
static MALLOC_DEFINE(M_GCACHE, "gcache_data", "GEOM_CACHE Data");
SYSCTL_DECL(_kern_geom);
diff --git a/sys/geom/concat/g_concat.c b/sys/geom/concat/g_concat.c
index 545cb8f4ce7a..85d8a21b3e83 100644
--- a/sys/geom/concat/g_concat.c
+++ b/sys/geom/concat/g_concat.c
@@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/concat/g_concat.h>
+FEATURE(geom_concat, "GEOM concatenation support");
static MALLOC_DEFINE(M_CONCAT, "concat_data", "GEOM_CONCAT Data");
diff --git a/sys/geom/eli/g_eli.c b/sys/geom/eli/g_eli.c
index d1c31bde599a..0dd0d0cdaee5 100644
--- a/sys/geom/eli/g_eli.c
+++ b/sys/geom/eli/g_eli.c
@@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$");
#include <geom/eli/g_eli.h>
#include <geom/eli/pkcs5v2.h>
+FEATURE(geom_eli, "GEOM crypto module");
MALLOC_DEFINE(M_ELI, "eli data", "GEOM_ELI Data");
diff --git a/sys/geom/gate/g_gate.c b/sys/geom/gate/g_gate.c
index e035f97fbefa..7951209a95f4 100644
--- a/sys/geom/gate/g_gate.c
+++ b/sys/geom/gate/g_gate.c
@@ -53,6 +53,8 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/gate/g_gate.h>
+FEATURE(geom_gate, "GEOM Gate module");
+
static MALLOC_DEFINE(M_GATE, "gg_data", "GEOM Gate Data");
SYSCTL_DECL(_kern_geom);
diff --git a/sys/geom/geom_bsd.c b/sys/geom/geom_bsd.c
index 7c3d2273b31e..c5b92520c1a8 100644
--- a/sys/geom/geom_bsd.c
+++ b/sys/geom/geom_bsd.c
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/endian.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <sys/kernel.h>
#include <sys/fcntl.h>
#include <sys/conf.h>
@@ -60,6 +61,8 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/geom_slice.h>
+FEATURE(geom_bsd, "GEOM BSD disklabels support");
+
#define BSD_CLASS_NAME "BSD"
#define ALPHA_LABEL_OFFSET 64
diff --git a/sys/geom/geom_fox.c b/sys/geom/geom_fox.c
index d943d859340c..2fea00d963a5 100644
--- a/sys/geom/geom_fox.c
+++ b/sys/geom/geom_fox.c
@@ -37,6 +37,7 @@
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <sys/kernel.h>
#include <sys/conf.h>
#include <sys/bio.h>
@@ -52,6 +53,8 @@
#define FOX_CLASS_NAME "FOX"
#define FOX_MAGIC "GEOM::FOX"
+FEATURE(geom_fox, "GEOM FOX redundant path mitigation support");
+
struct g_fox_softc {
off_t mediasize;
u_int sectorsize;
diff --git a/sys/geom/geom_mbr.c b/sys/geom/geom_mbr.c
index 6b034ba833b5..6a736a74c4fc 100644
--- a/sys/geom/geom_mbr.c
+++ b/sys/geom/geom_mbr.c
@@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$");
#include <sys/errno.h>
#include <sys/endian.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <sys/kernel.h>
#include <sys/fcntl.h>
#include <sys/malloc.h>
@@ -50,6 +51,8 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/geom_slice.h>
+FEATURE(geom_mbr, "GEOM DOS/MBR partitioning support");
+
#define MBR_CLASS_NAME "MBR"
#define MBREXT_CLASS_NAME "MBREXT"
diff --git a/sys/geom/geom_pc98.c b/sys/geom/geom_pc98.c
index 4f89958dfc58..ffc48bd2f1b4 100644
--- a/sys/geom/geom_pc98.c
+++ b/sys/geom/geom_pc98.c
@@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/endian.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <sys/kernel.h>
#include <sys/fcntl.h>
#include <sys/malloc.h>
@@ -47,6 +48,8 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/geom_slice.h>
+FEATURE(geom_pc98, "GEOM NEC PC9800 partitioning support");
+
#define PC98_CLASS_NAME "PC98"
struct g_pc98_softc {
diff --git a/sys/geom/geom_sunlabel.c b/sys/geom/geom_sunlabel.c
index e9002de7fd6a..f05b7e622477 100644
--- a/sys/geom/geom_sunlabel.c
+++ b/sys/geom/geom_sunlabel.c
@@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/endian.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <sys/kernel.h>
#include <sys/conf.h>
#include <sys/bio.h>
@@ -51,6 +52,8 @@ __FBSDID("$FreeBSD$");
#include <geom/geom_slice.h>
#include <machine/endian.h>
+FEATURE(geom_sunlabel, "GEOM Sun/Solaris partitioning support");
+
#define SUNLABEL_CLASS_NAME "SUN"
struct g_sunlabel_softc {
diff --git a/sys/geom/geom_vol_ffs.c b/sys/geom/geom_vol_ffs.c
index c21b1b6c81f5..4fa4da599893 100644
--- a/sys/geom/geom_vol_ffs.c
+++ b/sys/geom/geom_vol_ffs.c
@@ -30,6 +30,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/errno.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/bio.h>
@@ -42,6 +43,8 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/geom_slice.h>
+FEATURE(geom_vol, "GEOM support for volume names from UFS superblock");
+
#define VOL_FFS_CLASS_NAME "VOL_FFS"
static int superblocks[] = SBLOCKSEARCH;
diff --git a/sys/geom/journal/g_journal.c b/sys/geom/journal/g_journal.c
index f3f9072052a3..48c03a1cd5c2 100644
--- a/sys/geom/journal/g_journal.c
+++ b/sys/geom/journal/g_journal.c
@@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$");
#include <geom/journal/g_journal.h>
+FEATURE(geom_journal, "GEOM journaling support");
/*
* On-disk journal format:
diff --git a/sys/geom/label/g_label.c b/sys/geom/label/g_label.c
index c45828949dc3..bee7a8505749 100644
--- a/sys/geom/label/g_label.c
+++ b/sys/geom/label/g_label.c
@@ -36,10 +36,12 @@ __FBSDID("$FreeBSD$");
#include <sys/bio.h>
#include <sys/malloc.h>
#include <sys/libkern.h>
+#include <sys/sysctl.h>
#include <geom/geom.h>
#include <geom/geom_slice.h>
#include <geom/label/g_label.h>
+FEATURE(geom_label, "GEOM labeling support");
SYSCTL_DECL(_kern_geom);
SYSCTL_NODE(_kern_geom, OID_AUTO, label, CTLFLAG_RW, 0, "GEOM_LABEL stuff");
diff --git a/sys/geom/linux_lvm/g_linux_lvm.c b/sys/geom/linux_lvm/g_linux_lvm.c
index d210611702ce..2ac19e06958f 100644
--- a/sys/geom/linux_lvm/g_linux_lvm.c
+++ b/sys/geom/linux_lvm/g_linux_lvm.c
@@ -42,6 +42,8 @@ __FBSDID("$FreeBSD$");
#include <geom/linux_lvm/g_linux_lvm.h>
+FEATURE(geom_linux_lvm, "GEOM Linux LVM partitioning support");
+
/* Declare malloc(9) label */
static MALLOC_DEFINE(M_GLLVM, "gllvm", "GEOM_LINUX_LVM Data");
diff --git a/sys/geom/mirror/g_mirror.c b/sys/geom/mirror/g_mirror.c
index 41d35e45d34f..326851f96c9d 100644
--- a/sys/geom/mirror/g_mirror.c
+++ b/sys/geom/mirror/g_mirror.c
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sched.h>
#include <geom/mirror/g_mirror.h>
+FEATURE(geom_mirror, "GEOM mirroring support");
static MALLOC_DEFINE(M_MIRROR, "mirror_data", "GEOM_MIRROR Data");
diff --git a/sys/geom/multipath/g_multipath.c b/sys/geom/multipath/g_multipath.c
index 8806b589f0e5..6c53f4163c40 100644
--- a/sys/geom/multipath/g_multipath.c
+++ b/sys/geom/multipath/g_multipath.c
@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/multipath/g_multipath.h>
+FEATURE(geom_multipath, "GEOM multipath support");
SYSCTL_DECL(_kern_geom);
SYSCTL_NODE(_kern_geom, OID_AUTO, multipath, CTLFLAG_RW, 0,
diff --git a/sys/geom/part/g_part_apm.c b/sys/geom/part/g_part_apm.c
index c73d7f6f0982..1a1a3bd28606 100644
--- a/sys/geom/part/g_part_apm.c
+++ b/sys/geom/part/g_part_apm.c
@@ -41,11 +41,14 @@ __FBSDID("$FreeBSD$");
#include <sys/queue.h>
#include <sys/sbuf.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <geom/geom.h>
#include <geom/part/g_part.h>
#include "g_part_if.h"
+FEATURE(geom_part_apm, "GEOM partitioning class for Apple-style partitions");
+
struct g_part_apm_table {
struct g_part_table base;
struct apm_ddr ddr;
diff --git a/sys/geom/part/g_part_bsd.c b/sys/geom/part/g_part_bsd.c
index e51a22ff35c1..61fe89a41411 100644
--- a/sys/geom/part/g_part_bsd.c
+++ b/sys/geom/part/g_part_bsd.c
@@ -40,11 +40,14 @@ __FBSDID("$FreeBSD$");
#include <sys/queue.h>
#include <sys/sbuf.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <geom/geom.h>
#include <geom/part/g_part.h>
#include "g_part_if.h"
+FEATURE(geom_part_bsd, "GEOM partitioning class for BSD disklabels");
+
struct g_part_bsd_table {
struct g_part_table base;
u_char *bbarea;
diff --git a/sys/geom/part/g_part_ebr.c b/sys/geom/part/g_part_ebr.c
index 7bf0c55a07e2..5f665ca45219 100644
--- a/sys/geom/part/g_part_ebr.c
+++ b/sys/geom/part/g_part_ebr.c
@@ -42,11 +42,19 @@ __FBSDID("$FreeBSD$");
#include <sys/queue.h>
#include <sys/sbuf.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <geom/geom.h>
#include <geom/part/g_part.h>
#include "g_part_if.h"
+FEATURE(geom_part_ebr,
+ "GEOM partitioning class for extended boot records support");
+#if defined(GEOM_PART_EBR_COMPAT)
+FEATURE(geom_part_ebr_compat,
+ "GEOM EBR partitioning class: backward-compatible partition names");
+#endif
+
#define EBRSIZE 512
struct g_part_ebr_table {
diff --git a/sys/geom/part/g_part_gpt.c b/sys/geom/part/g_part_gpt.c
index d0896b8e11f7..9e897a4393ba 100644
--- a/sys/geom/part/g_part_gpt.c
+++ b/sys/geom/part/g_part_gpt.c
@@ -41,12 +41,15 @@ __FBSDID("$FreeBSD$");
#include <sys/queue.h>
#include <sys/sbuf.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <sys/uuid.h>
#include <geom/geom.h>
#include <geom/part/g_part.h>
#include "g_part_if.h"
+FEATURE(geom_part_gpt, "GEOM partitioning class for GPT partitions support");
+
CTASSERT(offsetof(struct gpt_hdr, padding) == 92);
CTASSERT(sizeof(struct gpt_ent) == 128);
diff --git a/sys/geom/part/g_part_mbr.c b/sys/geom/part/g_part_mbr.c
index c39c92fb2307..63b7e6448aa9 100644
--- a/sys/geom/part/g_part_mbr.c
+++ b/sys/geom/part/g_part_mbr.c
@@ -40,11 +40,14 @@ __FBSDID("$FreeBSD$");
#include <sys/queue.h>
#include <sys/sbuf.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <geom/geom.h>
#include <geom/part/g_part.h>
#include "g_part_if.h"
+FEATURE(geom_part_mbr, "GEOM partitioning class for MBR support");
+
#define MBRSIZE 512
struct g_part_mbr_table {
diff --git a/sys/geom/part/g_part_pc98.c b/sys/geom/part/g_part_pc98.c
index e7b334195082..d8aa87d2bc39 100644
--- a/sys/geom/part/g_part_pc98.c
+++ b/sys/geom/part/g_part_pc98.c
@@ -40,11 +40,14 @@ __FBSDID("$FreeBSD$");
#include <sys/queue.h>
#include <sys/sbuf.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <geom/geom.h>
#include <geom/part/g_part.h>
#include "g_part_if.h"
+FEATURE(geom_part_pc98, "GEOM partitioning class for PC-9800 disk partitions");
+
#define SECSIZE 512
#define MENUSIZE 7168
#define BOOTSIZE 8192
diff --git a/sys/geom/part/g_part_vtoc8.c b/sys/geom/part/g_part_vtoc8.c
index d22c5b1af9d6..e59c8e4454f5 100644
--- a/sys/geom/part/g_part_vtoc8.c
+++ b/sys/geom/part/g_part_vtoc8.c
@@ -39,12 +39,15 @@ __FBSDID("$FreeBSD$");
#include <sys/queue.h>
#include <sys/sbuf.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <sys/vtoc.h>
#include <geom/geom.h>
#include <geom/part/g_part.h>
#include "g_part_if.h"
+FEATURE(geom_part_vtoc8, "GEOM partitioning class for SMI VTOC8 disk labels");
+
struct g_part_vtoc8_table {
struct g_part_table base;
struct vtoc8 vtoc;
diff --git a/sys/geom/raid3/g_raid3.c b/sys/geom/raid3/g_raid3.c
index 110b3f9ef779..6cc20947ef54 100644
--- a/sys/geom/raid3/g_raid3.c
+++ b/sys/geom/raid3/g_raid3.c
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sched.h>
#include <geom/raid3/g_raid3.h>
+FEATURE(geom_raid3, "GEOM RAID-3 functionality");
static MALLOC_DEFINE(M_RAID3, "raid3_data", "GEOM_RAID3 Data");
diff --git a/sys/geom/shsec/g_shsec.c b/sys/geom/shsec/g_shsec.c
index 7be39bb648db..ee2cf4bab554 100644
--- a/sys/geom/shsec/g_shsec.c
+++ b/sys/geom/shsec/g_shsec.c
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/shsec/g_shsec.h>
+FEATURE(geom_shsec, "GEOM shared secret device support");
static MALLOC_DEFINE(M_SHSEC, "shsec_data", "GEOM_SHSEC Data");
diff --git a/sys/geom/stripe/g_stripe.c b/sys/geom/stripe/g_stripe.c
index a79928471e6a..add0be0f3132 100644
--- a/sys/geom/stripe/g_stripe.c
+++ b/sys/geom/stripe/g_stripe.c
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <geom/geom.h>
#include <geom/stripe/g_stripe.h>
+FEATURE(geom_stripe, "GEOM striping support");
static MALLOC_DEFINE(M_STRIPE, "stripe_data", "GEOM_STRIPE Data");
diff --git a/sys/geom/uzip/g_uzip.c b/sys/geom/uzip/g_uzip.c
index 2301efbe0e19..c8b0dfccae4c 100644
--- a/sys/geom/uzip/g_uzip.c
+++ b/sys/geom/uzip/g_uzip.c
@@ -36,10 +36,13 @@ __FBSDID("$FreeBSD$");
#include <sys/mutex.h>
#include <sys/malloc.h>
#include <sys/systm.h>
+#include <sys/sysctl.h>
#include <geom/geom.h>
#include <net/zlib.h>
+FEATURE(geom_uzip, "GEOM uzip read-only compressed disks support");
+
#undef GEOM_UZIP_DEBUG
#ifdef GEOM_UZIP_DEBUG
#define DPRINTF(a) printf a
diff --git a/sys/geom/virstor/g_virstor.c b/sys/geom/virstor/g_virstor.c
index 38ce78283c8a..d48a2b1ef9a1 100644
--- a/sys/geom/virstor/g_virstor.c
+++ b/sys/geom/virstor/g_virstor.c
@@ -52,6 +52,8 @@ __FBSDID("$FreeBSD$");
#include <geom/virstor/g_virstor.h>
#include <geom/virstor/g_virstor_md.h>
+FEATURE(g_virstor, "GEOM virtual storage support");
+
/* Declare malloc(9) label */
static MALLOC_DEFINE(M_GVIRSTOR, "gvirstor", "GEOM_VIRSTOR Data");