Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Aug 2010 20:44:21 +0200
From:      Fabian Keil <freebsd-listen@fabiankeil.de>
To:        Pawel Jakub Dawidek <pjd@FreeBSD.org>
Cc:        svn-src-all@freebsd.org
Subject:   Re: svn commit: r212050 - head/cddl/contrib/opensolaris/cmd/zpool
Message-ID:  <20100831204421.4ad0a99a@r500.local>
In-Reply-To: <201008311041.o7VAfrAF028012@svn.freebsd.org>
References:  <201008311041.o7VAfrAF028012@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--Sig_//lmLcAq/u5XAtOsQj94cpsB
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Pawel Jakub Dawidek <pjd@FreeBSD.org> wrote:

> Author: pjd
> Date: Tue Aug 31 10:41:53 2010
> New Revision: 212050
> URL: http://svn.freebsd.org/changeset/base/212050
>=20
> Log:
>   When upgrading a pool which contain root file system, give user a hint =
that
>   he should update boot code.
>  =20
>   MFC after:	2 weeks
>=20
> Modified:
>   head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
>=20
> Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.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/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c	Tue Aug 31 09:38=
:43 2010	(r212049)
> +++ head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c	Tue Aug 31 10:41=
:53 2010	(r212050)
> @@ -3333,12 +3333,39 @@ typedef struct upgrade_cbdata {
>  	int	cb_all;
>  	int	cb_first;
>  	int	cb_newer;
> +	char	cb_poolname[ZPOOL_MAXNAMELEN];
>  	int	cb_argc;
>  	uint64_t cb_version;
>  	char	**cb_argv;
>  } upgrade_cbdata_t;
> =20
>  static int
> +is_root_pool(zpool_handle_t *zhp)
> +{
> +	static struct statfs sfs;
> +	static char *poolname =3D NULL;
> +	static boolean_t stated =3D B_FALSE;

Why are those variables static? They all seem to be (re)initialized
before first-use in the function.

> +	char *slash;
> +
> +	while (!stated) {
> +		stated =3D B_TRUE;
> +		if (statfs("/", &sfs) =3D=3D -1) {
> +			(void) fprintf(stderr,
> +			    "Unable to stat root file system: %s.\n",
> +			    strerror(errno));
> +			break;
> +		}
> +		if (strcmp(sfs.f_fstypename, "zfs") !=3D 0)
> +			break;
> +		poolname =3D sfs.f_mntfromname;
> +		if ((slash =3D strchr(poolname, '/')) !=3D NULL)
> +			*slash =3D '\0';
> +		break;
> +	}
> +	return (poolname !=3D NULL && strcmp(poolname, zpool_get_name(zhp)) =3D=
=3D 0);
> +}

This while "loop" doesn't seem to loop at all, is this intended?

Fabian

--Sig_//lmLcAq/u5XAtOsQj94cpsB
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (FreeBSD)

iEYEARECAAYFAkx9TYwACgkQBYqIVf93VJ3t0ACffnTnGOAGMyFhLSG06Lct4Z2/
8KwAn2JyMGLXF9hfZhST4laE4U217h3a
=kffu
-----END PGP SIGNATURE-----

--Sig_//lmLcAq/u5XAtOsQj94cpsB--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100831204421.4ad0a99a>