Date: Sun, 3 Nov 2019 22:59:46 +0000 From: Steven Hartland <steven.hartland@multiplay.co.uk> To: Toomas Soome <tsoome@freebsd.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r354283 - in head: stand/libsa/zfs sys/cddl/boot/zfs Message-ID: <CAHEMsqZSTisgEJASZbhwSoT=je%2BhaAXqyUq%2B2mCf3vGkepxiKw@mail.gmail.com> In-Reply-To: <201911031325.xA3DPl3B080386@repo.freebsd.org> References: <201911031325.xA3DPl3B080386@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Pretty sure we had at least two systems using root with log just fine, so would be interested to know why this isn=E2=80=99t supported anymore? On Sun, 3 Nov 2019 at 13:26, Toomas Soome <tsoome@freebsd.org> wrote: > Author: tsoome > Date: Sun Nov 3 13:25:47 2019 > New Revision: 354283 > URL: https://svnweb.freebsd.org/changeset/base/354283 > > Log: > loader: we do not support booting from pool with log device > > If pool has log device, stop there and tell about it. > > Modified: > head/stand/libsa/zfs/zfs.c > head/stand/libsa/zfs/zfsimpl.c > head/sys/cddl/boot/zfs/zfsimpl.h > > Modified: head/stand/libsa/zfs/zfs.c > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/stand/libsa/zfs/zfs.c Sun Nov 3 13:03:47 2019 (r354282) > +++ head/stand/libsa/zfs/zfs.c Sun Nov 3 13:25:47 2019 (r354283) > @@ -668,6 +668,11 @@ zfs_dev_open(struct open_file *f, ...) > spa =3D spa_find_by_guid(dev->pool_guid); > if (!spa) > return (ENXIO); > + if (spa->spa_with_log) { > + printf("Reading pool %s is not supported due to log > device.\n", > + spa->spa_name); > + return (ENXIO); > + } > mount =3D malloc(sizeof(*mount)); > if (mount =3D=3D NULL) > return (ENOMEM); > > Modified: head/stand/libsa/zfs/zfsimpl.c > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/stand/libsa/zfs/zfsimpl.c Sun Nov 3 13:03:47 2019 > (r354282) > +++ head/stand/libsa/zfs/zfsimpl.c Sun Nov 3 13:25:47 2019 > (r354283) > @@ -1109,6 +1109,7 @@ vdev_init_from_nvlist(const unsigned char *nvlist, > vde > const unsigned char *kids; > int nkids, i, is_new; > uint64_t is_offline, is_faulted, is_degraded, is_removed, > isnt_present; > + uint64_t is_log; > > if (nvlist_find(nvlist, ZPOOL_CONFIG_GUID, DATA_TYPE_UINT64, > NULL, &guid) > @@ -1132,17 +1133,20 @@ vdev_init_from_nvlist(const unsigned char *nvlist= , > vde > } > > is_offline =3D is_removed =3D is_faulted =3D is_degraded =3D isnt= _present > =3D 0; > + is_log =3D 0; > > nvlist_find(nvlist, ZPOOL_CONFIG_OFFLINE, DATA_TYPE_UINT64, NULL, > - &is_offline); > + &is_offline); > nvlist_find(nvlist, ZPOOL_CONFIG_REMOVED, DATA_TYPE_UINT64, NULL, > - &is_removed); > + &is_removed); > nvlist_find(nvlist, ZPOOL_CONFIG_FAULTED, DATA_TYPE_UINT64, NULL, > - &is_faulted); > + &is_faulted); > nvlist_find(nvlist, ZPOOL_CONFIG_DEGRADED, DATA_TYPE_UINT64, NULL= , > - &is_degraded); > + &is_degraded); > nvlist_find(nvlist, ZPOOL_CONFIG_NOT_PRESENT, DATA_TYPE_UINT64, > NULL, > - &isnt_present); > + &isnt_present); > + nvlist_find(nvlist, ZPOOL_CONFIG_IS_LOG, DATA_TYPE_UINT64, NULL, > + &is_log); > > vdev =3D vdev_find(guid); > if (!vdev) { > @@ -1217,6 +1221,7 @@ vdev_init_from_nvlist(const unsigned char *nvlist, > vde > return (ENOMEM); > vdev->v_name =3D name; > } > + vdev->v_islog =3D is_log =3D=3D 1; > } else { > is_new =3D 0; > } > @@ -1433,6 +1438,12 @@ vdev_status(vdev_t *vdev, int indent) > { > vdev_t *kid; > int ret; > + > + if (vdev->v_islog) { > + (void)pager_output(" logs\n"); > + indent++; > + } > + > ret =3D print_state(indent, vdev->v_name, vdev->v_state); > if (ret !=3D 0) > return (ret); > @@ -1737,6 +1748,12 @@ vdev_probe(vdev_phys_read_t *_read, void > *read_priv, s > printf("ZFS: inconsistent nvlist contents\n"); > return (EIO); > } > + > + /* > + * We do not support reading pools with log device. > + */ > + if (vdev->v_islog) > + spa->spa_with_log =3D vdev->v_islog; > > /* > * Re-evaluate top-level vdev state. > > Modified: head/sys/cddl/boot/zfs/zfsimpl.h > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/cddl/boot/zfs/zfsimpl.h Sun Nov 3 13:03:47 2019 > (r354282) > +++ head/sys/cddl/boot/zfs/zfsimpl.h Sun Nov 3 13:25:47 2019 > (r354283) > @@ -1670,6 +1670,7 @@ typedef struct vdev { > vdev_phys_read_t *v_phys_read; /* read from raw leaf vdev */ > vdev_read_t *v_read; /* read from vdev */ > void *v_read_priv; /* private data for read function > */ > + boolean_t v_islog; > struct spa *spa; /* link to spa */ > /* > * Values stored in the config for an indirect or removing vdev. > @@ -1694,6 +1695,7 @@ typedef struct spa { > zio_cksum_salt_t spa_cksum_salt; /* secret salt for cksum = */ > void *spa_cksum_tmpls[ZIO_CHECKSUM_FUNCTIONS]; > int spa_inited; /* initialized */ > + boolean_t spa_with_log; /* this pool has log */ > } spa_t; > > /* IO related arguments. */ >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHEMsqZSTisgEJASZbhwSoT=je%2BhaAXqyUq%2B2mCf3vGkepxiKw>