>   The only way that you can get *that* guarantee is by using the 
> milestone mechanism to limit the system to a particular milestone, as 
> you suggest.
> 
> In fact, argh.  This problem affects even your proposed scheme.  By the 
> time that your patch-test-service is running, there could (in theory) be 
> all kinds of services running that didn't happen to depend on anything. 
>   Maybe in practice we could ignore that possibility, but it's still 
> bothersome.
> 
> Argh.  Not quite back to Square One, but that certainly tosses a wrench 
> into most of my theories on how to solve this problem.

Argh again.  Currently startd hard codes the allowable milestones.  My
proposal would require patching startd :(

static int
dgraph_set_milestone(const char *fmri, scf_handle_t *h, boolean_t norepository)
{
        const char *cfmri, *fs;
        graph_vertex_t *nm, *v;
        int ret = 0, r;
        scf_instance_t *inst;
        boolean_t isall, isnone, rebound = B_FALSE;

        /* Validate fmri */
        isall = (strcmp(fmri, "all") == 0);
        isnone = (strcmp(fmri, "none") == 0);

        if (!isall && !isnone) {
                if (fmri_canonify(fmri, (char **)&cfmri, B_FALSE) == EINVAL)
                        goto reject;

                if (strcmp(cfmri, single_user_fmri) != 0 &&
                    strcmp(cfmri, multi_user_fmri) != 0 &&
                    strcmp(cfmri, multi_user_svr_fmri) != 0) {
                        startd_free((void *)cfmri, max_scf_fmri_size);
reject:
                        log_framework(LOG_WARNING,
                            "Rejecting request for invalid milestone \"%s\".\n",
                            fmri);
                        return (EINVAL);
                }
        }

-Steve L.

> _______________________________________________
> zones-discuss mailing list
> zones-discuss@opensolaris.org
_______________________________________________
zones-discuss mailing list
zones-discuss@opensolaris.org

Reply via email to