diff options
author | avg <avg@FreeBSD.org> | 2012-05-12 20:27:33 +0000 |
---|---|---|
committer | avg <avg@FreeBSD.org> | 2012-05-12 20:27:33 +0000 |
commit | 5a967fbfcc6f8df911a59020f191a5953d53c3a3 (patch) | |
tree | 9bd0cc8d4dee80f534d8942657f2f4fd2a5a37f0 /sys/boot/zfs | |
parent | ee127d5890a3679e20c7cd055ab00cc78d4cb5e8 (diff) | |
download | FreeBSD-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.c | 69 | ||||
-rw-r--r-- | sys/boot/zfs/zfsimpl.c | 32 |
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) { |