Changeset View
Changeset View
Standalone View
Standalone View
sys/geom/geom_vol_ffs.c
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | |||||
#include <geom/geom.h> | #include <geom/geom.h> | ||||
#include <geom/geom_slice.h> | #include <geom/geom_slice.h> | ||||
FEATURE(geom_vol, "GEOM support for volume names from UFS superblock"); | FEATURE(geom_vol, "GEOM support for volume names from UFS superblock"); | ||||
#define VOL_FFS_CLASS_NAME "VOL_FFS" | #define VOL_FFS_CLASS_NAME "VOL_FFS" | ||||
static int superblocks[] = SBLOCKSEARCH; | static int superblocks[] = SBLOCKSEARCH; | ||||
static int g_vol_ffs_once; | |||||
struct g_vol_ffs_softc { | struct g_vol_ffs_softc { | ||||
char * vol; | char * vol; | ||||
}; | }; | ||||
static int | static int | ||||
g_vol_ffs_start(struct bio *bp __unused) | g_vol_ffs_start(struct bio *bp __unused) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 80 Lines • ▼ Show 20 Lines | for (sb=0; (superblock = superblocks[sb]) != -1; sb++) { | ||||
g_topology_unlock(); | g_topology_unlock(); | ||||
break; | break; | ||||
} | } | ||||
g_topology_lock(); | g_topology_lock(); | ||||
g_access(cp, -1, 0, 0); | g_access(cp, -1, 0, 0); | ||||
if (LIST_EMPTY(&gp->provider)) { | if (LIST_EMPTY(&gp->provider)) { | ||||
g_slice_spoiled(cp); | g_slice_spoiled(cp); | ||||
return (NULL); | return (NULL); | ||||
} | |||||
if (!g_vol_ffs_once) { | |||||
g_vol_ffs_once = 1; | |||||
printf( | |||||
"WARNING: geom_vol_Ffs (geom %s) is deprecated, " | |||||
"use glabel instead.\n", gp->name); | |||||
} | } | ||||
return (gp); | return (gp); | ||||
} | } | ||||
static struct g_class g_vol_ffs_class = { | static struct g_class g_vol_ffs_class = { | ||||
.name = VOL_FFS_CLASS_NAME, | .name = VOL_FFS_CLASS_NAME, | ||||
.version = G_VERSION, | .version = G_VERSION, | ||||
.taste = g_vol_ffs_taste, | .taste = g_vol_ffs_taste, | ||||
}; | }; | ||||
DECLARE_GEOM_CLASS(g_vol_ffs_class, g_vol_ffs); | DECLARE_GEOM_CLASS(g_vol_ffs_class, g_vol_ffs); |