Changeset View
Changeset View
Standalone View
Standalone View
stand/zfs/zfs.c
Show First 20 Lines • Show All 681 Lines • ▼ Show 20 Lines | zfs_parsedev(struct zfs_devdesc *dev, const char *devspec, const char **path) | ||||
if (!spa) | if (!spa) | ||||
return (ENXIO); | return (ENXIO); | ||||
dev->pool_guid = spa->spa_guid; | dev->pool_guid = spa->spa_guid; | ||||
rv = zfs_lookup_dataset(spa, rootname, &dev->root_guid); | rv = zfs_lookup_dataset(spa, rootname, &dev->root_guid); | ||||
if (rv != 0) | if (rv != 0) | ||||
return (rv); | return (rv); | ||||
if (path != NULL) | if (path != NULL) | ||||
*path = (*end == '\0') ? end : end + 1; | *path = (*end == '\0') ? end : end + 1; | ||||
dev->d_dev = &zfs_dev; | dev->dd.d_dev = &zfs_dev; | ||||
dev->d_type = zfs_dev.dv_type; | |||||
return (0); | return (0); | ||||
} | } | ||||
char * | char * | ||||
zfs_fmtdev(void *vdev) | zfs_fmtdev(void *vdev) | ||||
{ | { | ||||
static char rootname[ZFS_MAXNAMELEN]; | static char rootname[ZFS_MAXNAMELEN]; | ||||
static char buf[2 * ZFS_MAXNAMELEN + 8]; | static char buf[2 * ZFS_MAXNAMELEN + 8]; | ||||
struct zfs_devdesc *dev = (struct zfs_devdesc *)vdev; | struct zfs_devdesc *dev = (struct zfs_devdesc *)vdev; | ||||
spa_t *spa; | spa_t *spa; | ||||
buf[0] = '\0'; | buf[0] = '\0'; | ||||
if (dev->d_type != DEVT_ZFS) | if (dev->dd.d_dev->dv_type != DEVT_ZFS) | ||||
return (buf); | return (buf); | ||||
if (dev->pool_guid == 0) { | if (dev->pool_guid == 0) { | ||||
spa = STAILQ_FIRST(&zfs_pools); | spa = STAILQ_FIRST(&zfs_pools); | ||||
dev->pool_guid = spa->spa_guid; | dev->pool_guid = spa->spa_guid; | ||||
} else | } else | ||||
spa = spa_find_by_guid(dev->pool_guid); | spa = spa_find_by_guid(dev->pool_guid); | ||||
if (spa == NULL) { | if (spa == NULL) { | ||||
printf("ZFS: can't find pool by guid\n"); | printf("ZFS: can't find pool by guid\n"); | ||||
return (buf); | return (buf); | ||||
} | } | ||||
if (dev->root_guid == 0 && zfs_get_root(spa, &dev->root_guid)) { | if (dev->root_guid == 0 && zfs_get_root(spa, &dev->root_guid)) { | ||||
printf("ZFS: can't find root filesystem\n"); | printf("ZFS: can't find root filesystem\n"); | ||||
return (buf); | return (buf); | ||||
} | } | ||||
if (zfs_rlookup(spa, dev->root_guid, rootname)) { | if (zfs_rlookup(spa, dev->root_guid, rootname)) { | ||||
printf("ZFS: can't find filesystem by guid\n"); | printf("ZFS: can't find filesystem by guid\n"); | ||||
return (buf); | return (buf); | ||||
} | } | ||||
if (rootname[0] == '\0') | if (rootname[0] == '\0') | ||||
sprintf(buf, "%s:%s:", dev->d_dev->dv_name, spa->spa_name); | sprintf(buf, "%s:%s:", dev->dd.d_dev->dv_name, spa->spa_name); | ||||
else | else | ||||
sprintf(buf, "%s:%s/%s:", dev->d_dev->dv_name, spa->spa_name, | sprintf(buf, "%s:%s/%s:", dev->dd.d_dev->dv_name, spa->spa_name, | ||||
rootname); | rootname); | ||||
return (buf); | return (buf); | ||||
} | } | ||||
int | int | ||||
zfs_list(const char *name) | zfs_list(const char *name) | ||||
{ | { | ||||
static char poolname[ZFS_MAXNAMELEN]; | static char poolname[ZFS_MAXNAMELEN]; | ||||
▲ Show 20 Lines • Show All 267 Lines • Show Last 20 Lines |