diff --git a/sys/boot/zfs/zfs.c b/sys/boot/zfs/zfs.c index c90e1c7..6b7f22f 100644 --- a/sys/boot/zfs/zfs.c +++ b/sys/boot/zfs/zfs.c @@ -90,8 +90,10 @@ zfs_open(const char *upath, struct open_file *f) struct file *fp; int rc; + printf("zfs_open: %s\n", upath); if (f->f_dev != &zfs_dev && f->f_dev != &zfs_dev_compat) return (EINVAL); + printf("using %s\n", f->f_dev == &zfs_dev ? "zfs_dev" : "zfs_dev_compat"); /* allocate file system specific data structure */ fp = malloc(sizeof(struct file)); @@ -99,6 +101,7 @@ zfs_open(const char *upath, struct open_file *f) f->f_fsdata = (void *)fp; rc = zfs_lookup(mount, upath, &fp->f_dnode); + printf("zfs_lookup returns %d\n", rc); fp->f_seekp = 0; if (rc) { f->f_fsdata = NULL; @@ -426,12 +429,14 @@ zfs_dev_open_spa(struct open_file *f, spa_t *spa, uint64_t root_guid) rv = zfs_spa_init(spa); if (rv != 0) return (rv); + printf("pool initialized\n"); mount = malloc(sizeof(*mount)); rv = zfs_mount(spa, root_guid, mount); if (rv != 0) { free(mount); return (rv); } + printf("pool mounted\n"); if (mount->objset.os_type != DMU_OST_ZFS) { printf("Unexpected object set type %llu\n", mount->objset.os_type); @@ -476,9 +481,11 @@ zfs_dev_open_compat(struct open_file *f, ...) dev = va_arg(args, struct devdesc *); va_end(args); + printf("zfs_dev_open: unit = %d\n", dev->d_unit); spa = spa_find_by_unit(dev->d_unit); if (!spa) return (ENXIO); + printf("... found pool %s\n", spa->spa_name); rv = zfs_dev_open_spa(f, spa, 0); if (rv != 0) return (rv); diff --git a/sys/boot/zfs/zfsimpl.c b/sys/boot/zfs/zfsimpl.c index d4c85dd..b595912 100644 --- a/sys/boot/zfs/zfsimpl.c +++ b/sys/boot/zfs/zfsimpl.c @@ -673,7 +673,7 @@ zfs_guid_to_unit(uint64_t guid) unit++; } - return (0); + return (-1); } #endif @@ -1929,18 +1929,22 @@ zfs_lookup(const struct zfsmount *mount, const char *upath, dnode_phys_t *dnode) /* * Get the root directory dnode. */ + printf("getting master dnode\n"); rc = objset_get_dnode(spa, &mount->objset, MASTER_NODE_OBJ, &dn); if (rc) return (rc); + printf("looking up root dataset id\n"); rc = zap_lookup(spa, &dn, ZFS_ROOT_OBJ, &rootnum); if (rc) return (rc); + printf("getting root dnode\n"); rc = objset_get_dnode(spa, &mount->objset, rootnum, &dn); if (rc) return (rc); + printf("starting search\n"); objnum = rootnum; p = upath; while (p && *p) {