Print this page
@@ -124,11 +124,11 @@
}
(void) dlmgmt_set_doorfd(B_FALSE);
dlmgmt_door_fd = -1;
}
-static int
+int
dlmgmt_door_attach(zoneid_t zoneid, char *rootdir)
{
int fd;
int err = 0;
char doorpath[MAXPATHLEN];
@@ -230,11 +230,11 @@
* Initialize each running zone.
*/
static int
dlmgmt_allzones_init(void)
{
- int i;
+ int err, i;
zoneid_t *zids = NULL;
uint_t nzids, nzids_saved;
if (zone_list(NULL, &nzids) != 0)
return (errno);
@@ -251,41 +251,15 @@
free(zids);
goto again;
}
for (i = 0; i < nzids; i++) {
- int res;
- zone_status_t status;
-
- /*
- * Skip over zones that have gone away or are going down
- * since we got the list. Process all zones in the list,
- * logging errors for any that failed.
- */
- if (zone_getattr(zids[i], ZONE_ATTR_STATUS, &status,
- sizeof (status)) < 0)
- continue;
- switch (status) {
- case ZONE_IS_SHUTTING_DOWN:
- case ZONE_IS_EMPTY:
- case ZONE_IS_DOWN:
- case ZONE_IS_DYING:
- case ZONE_IS_DEAD:
- /* FALLTHRU */
- continue;
- default:
+ if ((err = dlmgmt_zone_init(zids[i])) != 0)
break;
}
- if ((res = dlmgmt_zone_init(zids[i])) != 0) {
- (void) fprintf(stderr, "zone (%ld) init error %s",
- zids[i], strerror(res));
- dlmgmt_log(LOG_ERR, "zone (%d) init error %s",
- zids[i], strerror(res));
- }
- }
free(zids);
- return (0);
+ return (err);
}
static int
dlmgmt_init(void)
{