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>