uberblock_t current_uberblock;
- int mounted;
grub_uint64_t guid;
};
static grub_err_t
check_pool_label (struct grub_zfs_data *data,
struct grub_zfs_device_desc *diskdesc,
- int *inserted)
+ int *inserted, int original)
{
grub_uint64_t pool_state, txg = 0;
char *nvlist,*features;
grub_dprintf ("zfs", "check 11 passed\n");
- if (data->mounted && data->guid != poolguid)
- return grub_error (GRUB_ERR_BAD_FS, "another zpool");
- else
+ if (original)
data->guid = poolguid;
+ if (data->guid != poolguid)
+ return grub_error (GRUB_ERR_BAD_FS, "another zpool");
+
{
char *nv;
nv = grub_zfs_nvlist_lookup_nvlist (nvlist, ZPOOL_CONFIG_VDEV_TREE);
}
grub_dprintf ("zfs", "label ok %d\n", label);
- err = check_pool_label (data, &desc, inserted);
+ err = check_pool_label (data, &desc, inserted, original);
if (err || !*inserted)
{
grub_errno = GRUB_ERR_NONE;
ub_endian) >> 63) & 1;
grub_free (osp);
- data->mounted = 1;
-
return data;
}