From 254c049a4a15a87ed9928075be57535f41ae4c29 Mon Sep 17 00:00:00 2001 From: Jerry Jelinek Date: Fri, 26 Oct 2012 21:05:15 +0000 Subject: [PATCH] 5931 after svccfg import is killed, subsequent import fails Reviewed by: Robert Mustacchi Reviewed by: Tony Nguyen Approved by: Dan McDonald --- usr/src/cmd/svc/svccfg/svccfg_libscf.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/usr/src/cmd/svc/svccfg/svccfg_libscf.c b/usr/src/cmd/svc/svccfg/svccfg_libscf.c index df7f7af209..017965783b 100644 --- a/usr/src/cmd/svc/svccfg/svccfg_libscf.c +++ b/usr/src/cmd/svc/svccfg/svccfg_libscf.c @@ -21,7 +21,7 @@ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2011, Joyent, Inc. All rights reserved. + * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright 2012 Milan Jurik. All rights reserved. */ @@ -7036,6 +7036,7 @@ lscf_service_import(void *v, void *pvt) int fresh = 0; scf_snaplevel_t *running; int have_ge = 0; + boolean_t retried = B_FALSE; const char * const ts_deleted = gettext("Temporary service svc:/%s " "was deleted unexpectedly.\n"); @@ -7091,6 +7092,7 @@ lscf_service_import(void *v, void *pvt) return (UU_WALK_ERROR); } +retry: if (scf_scope_add_service(imp_scope, imp_tsname, imp_tsvc) != 0) { switch (scf_error()) { case SCF_ERROR_CONNECTION_BROKEN: @@ -7100,6 +7102,11 @@ lscf_service_import(void *v, void *pvt) return (stash_scferror(lcbdata)); case SCF_ERROR_EXISTS: + if (!retried) { + lscf_delete(imp_tsname, 0); + retried = B_TRUE; + goto retry; + } warn(gettext( "Temporary service \"%s\" must be deleted before " "this manifest can be imported.\n"), imp_tsname); -- 2.11.4.GIT