summaryrefslogtreecommitdiffstats
path: root/sys/boot/zfs
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2012-05-12 20:27:33 +0000
committeravg <avg@FreeBSD.org>2012-05-12 20:27:33 +0000
commit5a967fbfcc6f8df911a59020f191a5953d53c3a3 (patch)
tree9bd0cc8d4dee80f534d8942657f2f4fd2a5a37f0 /sys/boot/zfs
parentee127d5890a3679e20c7cd055ab00cc78d4cb5e8 (diff)
downloadFreeBSD-src-5a967fbfcc6f8df911a59020f191a5953d53c3a3.zip
FreeBSD-src-5a967fbfcc6f8df911a59020f191a5953d53c3a3.tar.gz
sparc64/zfs boot: take advantage of new libzfsboot capabilities
Also drop the now unneeded compatibility shims. Tested by: marius MFC after: 1 month
Diffstat (limited to 'sys/boot/zfs')
-rw-r--r--sys/boot/zfs/zfs.c69
-rw-r--r--sys/boot/zfs/zfsimpl.c32
2 files changed, 12 insertions, 89 deletions
diff --git a/sys/boot/zfs/zfs.c b/sys/boot/zfs/zfs.c
index d474181..50a74b3 100644
--- a/sys/boot/zfs/zfs.c
+++ b/sys/boot/zfs/zfs.c
@@ -418,16 +418,26 @@ zfs_dev_print(int verbose)
* Attempt to open the pool described by (dev) for use by (f).
*/
static int
-zfs_dev_open_spa(struct open_file *f, spa_t *spa, uint64_t root_guid)
+zfs_dev_open(struct open_file *f, ...)
{
+ va_list args;
+ struct zfs_devdesc *dev;
struct zfsmount *mount;
+ spa_t *spa;
int rv;
+ va_start(args, f);
+ dev = va_arg(args, struct zfs_devdesc *);
+ va_end(args);
+
+ spa = spa_find_by_guid(dev->pool_guid);
+ if (!spa)
+ return (ENXIO);
rv = zfs_spa_init(spa);
if (rv != 0)
return (rv);
mount = malloc(sizeof(*mount));
- rv = zfs_mount(spa, root_guid, mount);
+ rv = zfs_mount(spa, dev->root_guid, mount);
if (rv != 0) {
free(mount);
return (rv);
@@ -439,49 +449,6 @@ zfs_dev_open_spa(struct open_file *f, spa_t *spa, uint64_t root_guid)
return (EIO);
}
f->f_devdata = mount;
- return (0);
-}
-
-static int
-zfs_dev_open(struct open_file *f, ...)
-{
- va_list args;
- struct zfs_devdesc *dev;
- spa_t *spa;
- int rv;
-
- va_start(args, f);
- dev = va_arg(args, struct zfs_devdesc *);
- va_end(args);
-
- spa = spa_find_by_guid(dev->pool_guid);
- if (!spa)
- return (ENXIO);
- rv = zfs_dev_open_spa(f, spa, dev->root_guid);
- if (rv != 0)
- return (rv);
- free(dev);
- return (0);
-}
-
-static int
-zfs_dev_open_compat(struct open_file *f, ...)
-{
- va_list args;
- struct devdesc *dev;
- spa_t *spa;
- int rv;
-
- va_start(args, f);
- dev = va_arg(args, struct devdesc *);
- va_end(args);
-
- spa = spa_find_by_unit(dev->d_unit);
- if (!spa)
- return (ENXIO);
- rv = zfs_dev_open_spa(f, spa, 0);
- if (rv != 0)
- return (rv);
free(dev);
return (0);
}
@@ -514,18 +481,6 @@ struct devsw zfs_dev = {
.dv_cleanup = NULL
};
-struct devsw zfs_dev_compat = {
- .dv_name = "zfs",
- .dv_type = DEVT_ZFS,
- .dv_init = zfs_dev_init,
- .dv_strategy = zfs_dev_strategy,
- .dv_open = zfs_dev_open_compat,
- .dv_close = zfs_dev_close,
- .dv_ioctl = noioctl,
- .dv_print = zfs_dev_print,
- .dv_cleanup = NULL
-};
-
int
zfs_parsedev(struct zfs_devdesc *dev, const char *devspec, const char **path)
{
diff --git a/sys/boot/zfs/zfsimpl.c b/sys/boot/zfs/zfsimpl.c
index e67728e..fe64027 100644
--- a/sys/boot/zfs/zfsimpl.c
+++ b/sys/boot/zfs/zfsimpl.c
@@ -646,38 +646,6 @@ spa_find_by_name(const char *name)
return (0);
}
-#ifndef BOOT2
-static spa_t *
-spa_find_by_unit(int unit)
-{
- spa_t *spa;
-
- STAILQ_FOREACH(spa, &zfs_pools, spa_link) {
- if (unit == 0)
- return (spa);
- unit--;
- }
-
- return (0);
-}
-
-static int
-zfs_guid_to_unit(uint64_t guid)
-{
- spa_t *spa;
- int unit;
-
- unit = 0;
- STAILQ_FOREACH(spa, &zfs_pools, spa_link) {
- if (spa->spa_guid == guid)
- return (unit);
- unit++;
- }
-
- return (-1);
-}
-#endif
-
static spa_t *
spa_create(uint64_t guid)
{
OpenPOWER on IntegriCloud