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
[-- Attachment #1 --] 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 > > Log: > When upgrading a pool which contain root file system, give user a hint that > he should update boot code. > > MFC after: 2 weeks > > Modified: > head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c > > Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c > ============================================================================== > --- 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; > > static int > +is_root_pool(zpool_handle_t *zhp) > +{ > + static struct statfs sfs; > + static char *poolname = NULL; > + static boolean_t stated = 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 = B_TRUE; > + if (statfs("/", &sfs) == -1) { > + (void) fprintf(stderr, > + "Unable to stat root file system: %s.\n", > + strerror(errno)); > + break; > + } > + if (strcmp(sfs.f_fstypename, "zfs") != 0) > + break; > + poolname = sfs.f_mntfromname; > + if ((slash = strchr(poolname, '/')) != NULL) > + *slash = '\0'; > + break; > + } > + return (poolname != NULL && strcmp(poolname, zpool_get_name(zhp)) == 0); > +} This while "loop" doesn't seem to loop at all, is this intended? Fabian [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (FreeBSD) iEYEARECAAYFAkx9TYwACgkQBYqIVf93VJ3t0ACffnTnGOAGMyFhLSG06Lct4Z2/ 8KwAn2JyMGLXF9hfZhST4laE4U217h3a =kffu -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100831204421.4ad0a99a>
