summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorDavid Major <David.Major@Sun.COM>2009-04-15 16:16:13 -0500
committerDavid Major <David.Major@Sun.COM>2009-04-15 16:16:13 -0500
commit4ea0a8690a2e6ec3ccf6235e1cea96de94351bea (patch)
tree2bc92f5c4602b7420ad6507bf3e951ce78f88808 /usr/src
parentc60a6da3c3825f88388f3fba451c3dd975088f07 (diff)
downloadillumos-joyent-4ea0a8690a2e6ec3ccf6235e1cea96de94351bea.tar.gz
6829466 mmsinit fails with return code 1 because database is not ready
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/mms/mgmt/init/common/mmsinit.c6
-rw-r--r--usr/src/lib/mms/mgmt/common/mgmt_acsls.c1
-rw-r--r--usr/src/lib/mms/mgmt/common/mgmt_media.c5
-rw-r--r--usr/src/lib/mms/mgmt/common/mgmt_mm.c21
-rw-r--r--usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c135
-rw-r--r--usr/src/lib/mms/mgmt/common/mgmt_util.c49
-rw-r--r--usr/src/lib/mms/mgmt/common/mms_mgmt.h5
7 files changed, 205 insertions, 17 deletions
diff --git a/usr/src/cmd/mms/mgmt/init/common/mmsinit.c b/usr/src/cmd/mms/mgmt/init/common/mmsinit.c
index 03da70dc15..08093a9fc7 100644
--- a/usr/src/cmd/mms/mgmt/init/common/mmsinit.c
+++ b/usr/src/cmd/mms/mgmt/init/common/mmsinit.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -40,6 +40,7 @@
extern char *optarg;
extern int optind, opterr, optopt;
+static char *_SrcFile = __FILE__;
#ifdef MMS_VAR_CFG
static char *usemsg = \
@@ -102,7 +103,8 @@ main(int argc, char **argv)
(void) mms_trace_open("/var/log/mms/mmsinit.log", MMS_ID_CLI,
MMS_SEV_INFO, 5 * MEGA, 0, 0);
-
+ (void) mms_trace_filter(MMS_SEV_DEVP);
+ mms_trace(MMS_DEBUG, "mmsinit started ###############################");
if (argc < 2) {
st = 1;
}
diff --git a/usr/src/lib/mms/mgmt/common/mgmt_acsls.c b/usr/src/lib/mms/mgmt/common/mgmt_acsls.c
index fb9b7b8669..e7f56089e2 100644
--- a/usr/src/lib/mms/mgmt/common/mgmt_acsls.c
+++ b/usr/src/lib/mms/mgmt/common/mgmt_acsls.c
@@ -227,6 +227,7 @@ acs_start_ssi(char *acshost, char *ssiport)
cmd[2] = NULL;
pid = exec_mgmt_cmd(NULL, NULL, 0, 0, B_TRUE, cmd);
+ mms_trace(MMS_DEBUG, "exec_mgmt_cmd: %s %s", cmd[0], cmd[1]);
status = check_exit(pid, NULL);
diff --git a/usr/src/lib/mms/mgmt/common/mgmt_media.c b/usr/src/lib/mms/mgmt/common/mgmt_media.c
index 410107dec8..af05731cec 100644
--- a/usr/src/lib/mms/mgmt/common/mgmt_media.c
+++ b/usr/src/lib/mms/mgmt/common/mgmt_media.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -2330,6 +2330,8 @@ call_mmsmnt(door_arg_t *arg)
/* server is not running. Try to start it */
(void) exec_mgmt_cmd(NULL, NULL, 0, 0, B_TRUE,
cmd);
+ mms_trace(MMS_DEBUG,
+ "exec_mgmt_cmd: %s", cmd[0]);
} else {
st = errno;
return (st);
@@ -2358,6 +2360,7 @@ call_mmsmnt(door_arg_t *arg)
* the door file
*/
(void) exec_mgmt_cmd(NULL, NULL, 0, 0, B_TRUE, cmd);
+ mms_trace(MMS_DEBUG, "exec_mgmt_cmd: %s", cmd[0]);
/* give the server a chance to start */
(void) nanosleep(&sleepfor, NULL);
} else if ((saverr != EAGAIN) && (saverr != EINTR)) {
diff --git a/usr/src/lib/mms/mgmt/common/mgmt_mm.c b/usr/src/lib/mms/mgmt/common/mgmt_mm.c
index 7581432ffa..fb28acb53a 100644
--- a/usr/src/lib/mms/mgmt/common/mgmt_mm.c
+++ b/usr/src/lib/mms/mgmt/common/mgmt_mm.c
@@ -323,6 +323,7 @@ mms_mgmt_init_host(nvlist_t *opts, nvlist_t **errs)
}
if (!mgmt_chk_auth("solaris.mms.create")) {
+ mms_trace(MMS_DEBUG, "mgmt_chk_auth error");
return (EACCES);
}
@@ -330,12 +331,14 @@ mms_mgmt_init_host(nvlist_t *opts, nvlist_t **errs)
/* make sure we've not already been initialized */
st = mms_cfg_getvar(MMS_CFG_CONFIG_TYPE, buf);
if (st != 0) {
+ mms_trace(MMS_DEBUG, "mms_cfg_getvar error");
st = mgmt_xlate_cfgerr(st);
if (st != ENOENT) {
return (st);
}
} else {
/* host already configured */
+ mms_trace(MMS_DEBUG, "already config error");
return (EALREADY);
}
#endif /* MMS_VAR_CFG */
@@ -357,6 +360,7 @@ mms_mgmt_init_host(nvlist_t *opts, nvlist_t **errs)
optp = mms_client_opts;
#endif /* MMS_VAR_CFG */
} else {
+ mms_trace(MMS_DEBUG, "EINVAL error");
st = EINVAL;
}
}
@@ -376,6 +380,7 @@ mms_mgmt_init_host(nvlist_t *opts, nvlist_t **errs)
st = mms_cfg_getvar(MMS_CFG_MM_DB_USER, buf);
if (st != 0) {
+ mms_trace(MMS_DEBUG, "mms_cfg_getvar error");
st = mgmt_xlate_cfgerr(st);
if (st == ENOENT) {
st = mms_cfg_getvar(MMS_CFG_DB_INST
@@ -384,6 +389,7 @@ mms_mgmt_init_host(nvlist_t *opts, nvlist_t **errs)
}
if (st != 0) {
/* major configuration error */
+ mms_trace(MMS_DEBUG, "major configuration error");
MGMT_ADD_OPTERR(init_errs,
"mmsdb method_context/user",
st);
@@ -517,16 +523,27 @@ mms_mgmt_init_host(nvlist_t *opts, nvlist_t **errs)
}
if (st != 0) {
+ mms_trace(MMS_DEBUG, "mgmt_db_create error");
goto done;
}
+ mms_trace(MMS_DEBUG, "enable mm");
st = mgmt_set_svc_state(MMSVC, ENABLE, NULL);
+ if (st != 0)
+ mms_trace(MMS_DEBUG,
+ "mgmt_set_svc_state(MMSVC, ENABLE, NULL) "
+ "error");
}
/* Watcher needs to be started for both host types */
if (st == 0) {
+ mms_trace(MMS_DEBUG, "enable wcr");
st = mgmt_set_svc_state(WCRSVC, ENABLE, NULL);
}
+ if (st != 0)
+ mms_trace(MMS_DEBUG,
+ "mgmt_set_svc_state(WCRSVC, ENABLE, NULL) "
+ "error");
done:
if (st != 0) {
@@ -821,14 +838,17 @@ mms_mgmt_set_opts(nvlist_t *optlist, nvlist_t *errlist)
/* refresh services */
if (*mmtype == 's') {
if (refresh_svcs & DB) {
+ mms_trace(MMS_DEBUG, "refresh db");
(void) mgmt_set_svc_state(DBSVC, REFRESH, NULL);
}
if (refresh_svcs & MM) {
+ mms_trace(MMS_DEBUG, "refresh mm");
(void) mgmt_set_svc_state(MMSVC, REFRESH, NULL);
}
}
if (refresh_svcs & WCR) {
+ mms_trace(MMS_DEBUG, "refresh wcr");
(void) mgmt_set_svc_state(WCRSVC, REFRESH, NULL);
}
@@ -849,6 +869,7 @@ mms_mgmt_uninitialize(void)
/* stop all running services */
for (i = 0; mmsvcs[i] != NULL; i++) {
+ mms_trace(MMS_DEBUG, "disable %s", mmsvcs[i]);
st = mgmt_set_svc_state(mmsvcs[i], DISABLE, NULL);
if (st != 0) {
break;
diff --git a/usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c b/usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c
index 9f97b9dcf1..f79716ea7d 100644
--- a/usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c
+++ b/usr/src/lib/mms/mgmt/common/mgmt_mmsdb.c
@@ -193,6 +193,8 @@ mgmt_db_init(void)
st = mgmt_get_db_opts(&opts);
if (st != 0) {
+ mms_trace(MMS_DEBUG,
+ "mgmt_get_db_opts(&opts) error");
return (st);
}
@@ -212,8 +214,12 @@ mgmt_db_init(void)
pid = exec_mgmt_cmd(NULL, NULL, opts.dbuid, opts.dbgid,
B_FALSE, cmd);
+ mms_trace(MMS_DEBUG, "exec_mgmt_cmd: %s %s %s", cmd[0], cmd[1], cmd[2]);
st = check_exit(pid, NULL);
+ if (st != 0)
+ mms_trace(MMS_DEBUG,
+ "exec_mgmt_cmd error");
return (st);
}
@@ -316,11 +322,15 @@ mgmt_db_create(int initialize, int populate, nvlist_t *optlist)
mms_trace(MMS_DEBUG, "Creating the MMS Database");
if (!mgmt_chk_auth("solaris.mms.modify")) {
+ mms_trace(MMS_DEBUG,
+ "mgmt_chk_auth(\"solaris.mms.modify\") error");
return (EACCES);
}
st = mgmt_get_db_opts(&opts);
if (st != 0) {
+ mms_trace(MMS_DEBUG,
+ "mgmt_get_db_opts(&opts) error");
return (st);
}
@@ -337,6 +347,8 @@ mgmt_db_create(int initialize, int populate, nvlist_t *optlist)
if (initialize) {
st = mgmt_db_check();
if (st == 0) {
+ mms_trace(MMS_DEBUG,
+ "EALREADY error");
/* db is alive, already inited */
return (EALREADY);
}
@@ -344,21 +356,30 @@ mgmt_db_create(int initialize, int populate, nvlist_t *optlist)
/* check to see if files exist, even if svc is stopped */
(void) snprintf(buf, sizeof (buf), "%s/base", opts.path);
if (access(buf, F_OK) == 0) {
+ mms_trace(MMS_DEBUG,
+ "access(buf, F_OK) error");
return (EALREADY);
}
st = mgmt_db_init();
+ if (st != 0)
+ mms_trace(MMS_DEBUG,
+ "mgmt_db_init() error");
if (st == 0) {
st = configure_pgconf(opts.port, opts.logdir);
}
if (st != 0) {
+ mms_trace(MMS_DEBUG,
+ "configure_pgconf error");
return (st);
}
/* create the dirs we need */
st = create_db_dirs(opts.path, opts.dbuid, opts.dbgid, NULL);
if (st != 0) {
+ mms_trace(MMS_DEBUG,
+ "create_db_dirs error");
return (st);
}
}
@@ -370,6 +391,8 @@ mgmt_db_create(int initialize, int populate, nvlist_t *optlist)
if (populate) {
st = get_dbver_from_optfile(pkgfile, &ver);
if (st != 0) {
+ mms_trace(MMS_DEBUG,
+ "get_dbver_from_optfile error");
return (st);
}
@@ -377,6 +400,8 @@ mgmt_db_create(int initialize, int populate, nvlist_t *optlist)
st = get_dbver_from_optfile(buf, &oldver);
if (st != 0) {
if (st != ENOENT) {
+ mms_trace(MMS_DEBUG,
+ "get_dbver_from_optfile error");
return (st);
}
st = 0;
@@ -400,15 +425,32 @@ mgmt_db_create(int initialize, int populate, nvlist_t *optlist)
}
/* make sure the DB is running */
+ mms_trace(MMS_DEBUG, "enable db");
st = mgmt_set_svc_state(DBSVC, ENABLE, NULL);
if (st != 0) {
+ mms_trace(MMS_DEBUG,
+ "mgmt_set_svc_state error");
+ return (st);
+ }
+
+ st = mgmt_db_ready();
+ if (st != 0) {
+ mms_trace(MMS_ERR,
+ "database did not go ready");
return (st);
}
pid = exec_mgmt_cmd(NULL, NULL, opts.dbuid, opts.dbgid,
B_FALSE, cmd);
+ mms_trace(MMS_DEBUG,
+ "exec_mgmt_cmd: %s %s %s %s %s %s",
+ cmd[0], cmd[1], cmd[2], cmd[3], cmd[4], cmd[5]);
st = check_exit(pid, NULL);
+ if (st != 0) {
+ mms_trace(MMS_DEBUG,
+ "exec_mgmt_cmd error: st %d", st);
+ }
if ((st == 0) && (populate)) {
/* import all the sql cmds */
@@ -470,20 +512,89 @@ mgmt_db_drop(void)
pid = exec_mgmt_cmd(NULL, NULL, opts.dbuid, opts.dbgid,
B_FALSE, cmd);
+ mms_trace(MMS_DEBUG, "exec_mgmt_cmd: %s %s %s %s",
+ cmd[0], cmd[1], cmd[2], cmd[3]);
+
st = check_exit(pid, NULL);
if (st != 0) {
/* restart the service to force users to disconnect */
+ mms_trace(MMS_DEBUG, "restart db");
(void) mgmt_set_svc_state(DBSVC, RESTART, NULL);
- pid = exec_mgmt_cmd(NULL, NULL, opts.dbuid, opts.dbgid,
+ st = mgmt_db_ready();
+ if (st != 0) {
+ mms_trace(MMS_ERR,
+ "database did not go ready");
+ }
+
+ if (st == 0) {
+ pid = exec_mgmt_cmd(NULL, NULL, opts.dbuid, opts.dbgid,
+ B_FALSE, cmd);
+ mms_trace(MMS_DEBUG, "exec_mgmt_cmd: %s %s %s %s",
+ cmd[0], cmd[1], cmd[2], cmd[3]);
+
+ st = check_exit(pid, NULL);
+ }
+ }
+
+ return (st);
+}
+
+int
+mgmt_db_ready(void)
+{
+ int i;
+ int st;
+ pid_t pid;
+ FILE *readf = NULL;
+ mmsdb_opts_t opts;
+ char *cmd[7];
+ char dbbuf[2048];
+
+ if (!mgmt_chk_auth("solaris.mms.modify")) {
+ return (EACCES);
+ }
+
+ st = mgmt_get_db_opts(&opts);
+ if (st != 0) {
+ return (st);
+ }
+
+ mms_trace(MMS_DEBUG, "check for database ready");
+
+ (void) snprintf(dbbuf, sizeof (dbbuf), "%s/psql", opts.bindir);
+
+ /* simple test to list available databases to check for db ready */
+ cmd[0] = dbbuf;
+ cmd[1] = "-h";
+ cmd[2] = opts.dbhost;
+ cmd[3] = "-p";
+ cmd[4] = opts.port;
+ cmd[5] = "-l";
+ cmd[6] = NULL;
+
+ for (i = 0; i < 30; i++) {
+
+ /* when the simple test is successful the */
+ /* database is ready for socket connections */
+
+ pid = exec_mgmt_cmd(&readf, NULL, opts.dbuid, opts.dbgid,
B_FALSE, cmd);
+ mms_trace(MMS_DEBUG, "exec_mgmt_cmd: %s %s %s %s %s %s",
+ cmd[0], cmd[1], cmd[2], cmd[3], cmd[4], cmd[5]);
st = check_exit(pid, NULL);
+ if (st == 0) {
+ break;
+ }
+ (void) sleep(1);
}
+ (void) fclose(readf);
+
return (st);
}
@@ -507,6 +618,8 @@ mgmt_db_check(void)
return (st);
}
+ /* test to see if the mms database already exists */
+
(void) snprintf(dbbuf, sizeof (dbbuf), "%s/psql", opts.bindir);
cmd[0] = dbbuf;
@@ -525,6 +638,9 @@ mgmt_db_check(void)
pid = exec_mgmt_cmd(&readf, NULL, opts.dbuid, opts.dbgid,
B_FALSE, cmd);
+ mms_trace(MMS_DEBUG, "exec_mgmt_cmd: %s %s %s %s %s %s %s %s",
+ cmd[0], cmd[1], cmd[2], cmd[3], cmd[4],
+ cmd[5], cmd[6], cmd[7]);
st = check_exit(pid, NULL);
@@ -600,6 +716,9 @@ mgmt_db_dump(char *dumpdir, char *dumpfile, int len)
pid = exec_mgmt_cmd(NULL, NULL, opts.dbuid, opts.dbgid,
B_FALSE, cmd);
+ mms_trace(MMS_DEBUG, "exec_mgmt_cmd: %s %s %s %s %s %s %s %s %s %s",
+ cmd[0], cmd[1], cmd[2], cmd[3], cmd[4],
+ cmd[5], cmd[6], cmd[7], cmd[8], cmd[9]);
st = check_exit(pid, NULL);
@@ -637,6 +756,7 @@ mgmt_db_restore(char *dumpfile)
}
/* shutdown MM */
+ mms_trace(MMS_DEBUG, "disable mm");
st = mgmt_set_svc_state(MMSVC, DISABLE, &mmstate);
if (st != 0) {
if (mmstate) {
@@ -654,6 +774,7 @@ mgmt_db_restore(char *dumpfile)
st = mgmt_db_sql_exec(dumpfile, &opts);
if ((st == 0) && (strcmp(mmstate, "online") == 0)) {
+ mms_trace(MMS_DEBUG, "enable mm");
st = mgmt_set_svc_state(MMSVC, ENABLE, NULL);
}
@@ -1083,6 +1204,9 @@ mgmt_db_sql_exec(char *cmdfile, mmsdb_opts_t *opts)
pid = exec_mgmt_cmd(NULL, &dberr, opts->dbuid, opts->dbgid,
B_FALSE, cmd);
+ mms_trace(MMS_DEBUG, "exec_mgmt_cmd: %s %s %s %s %s %s %s %s %s",
+ cmd[0], cmd[1], cmd[2], cmd[3], cmd[4],
+ cmd[5], cmd[6], cmd[7], cmd[8]);
st = check_exit(pid, NULL);
@@ -1294,8 +1418,17 @@ mgmt_set_db_pass(char *dbpass, nvlist_t *errs)
}
/* restart the db */
+ mms_trace(MMS_DEBUG, "restart db");
st = mgmt_set_svc_state(DBSVC, RESTART, NULL);
+ if (st == 0) {
+ st = mgmt_db_ready();
+ if (st != 0) {
+ mms_trace(MMS_ERR,
+ "database did not go ready");
+ }
+ }
+
return (st);
}
diff --git a/usr/src/lib/mms/mgmt/common/mgmt_util.c b/usr/src/lib/mms/mgmt/common/mgmt_util.c
index 7112a08683..02dd8c209f 100644
--- a/usr/src/lib/mms/mgmt/common/mgmt_util.c
+++ b/usr/src/lib/mms/mgmt/common/mgmt_util.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -686,17 +686,23 @@ exec_mgmt_cmd(
/* The path to the executable must be fully-qualified */
if ((cmd == NULL) || (cmd[0] == NULL) || (cmd[0][0] != '/')) {
+ mms_trace(MMS_DEBUG,
+ "validate error");
return (-1);
}
if (outstr != NULL) {
if (pipe(fdo) < 0) {
+ mms_trace(MMS_DEBUG,
+ "pipe(fdo) error");
return (-1);
}
}
if (errstr != NULL) {
if (pipe(fde) < 0) {
+ mms_trace(MMS_DEBUG,
+ "pipe(fde) error");
(void) close(fdo[0]);
(void) close(fdo[1]);
return (-1);
@@ -704,6 +710,8 @@ exec_mgmt_cmd(
}
if ((pid = fork()) < 0) {
+ mms_trace(MMS_DEBUG,
+ "fork() error");
(void) close(fdo[0]);
(void) close(fdo[1]);
(void) close(fde[0]);
@@ -724,6 +732,8 @@ exec_mgmt_cmd(
}
if ((fde[1] == -1) || (fdo[1] == -1)) {
+ mms_trace(MMS_DEBUG,
+ "(fde[1] == -1) || (fdo[1] == -1) error");
exit(9);
}
@@ -760,6 +770,8 @@ exec_mgmt_cmd(
ret = execv(cmd[0], cmd);
if (0 != ret) {
+ mms_trace(MMS_DEBUG,
+ "execv(cmd[0], cmd) error");
return (ret);
}
}
@@ -812,16 +824,17 @@ mgmt_set_svc_state(
char *endState = NULL;
int st = 0;
const char *cmpState;
- struct timespec ts;
int i;
if (fmri == NULL) {
+ mms_trace(MMS_ERR, "fmri is null");
return (MMS_MGMT_NOARG);
}
startState = smf_get_state(fmri);
if (startState == NULL) {
st = scf_error();
+ mms_trace(MMS_ERR, "get state %s - %s", fmri, scf_strerror(st));
/*
* Not an error if request to disable or degrade a
* non-existent svc
@@ -852,7 +865,15 @@ mgmt_set_svc_state(
* though I can't see why.
*/
if (strcmp(startState, SCF_STATE_STRING_MAINT) == 0) {
+ mms_trace(MMS_DEBUG,
+ "restore before disable %s",
+ fmri);
st = mgmt_set_svc_state(fmri, RESTORE, NULL);
+ if (st != 0) {
+ mms_trace(MMS_ERR,
+ "failed to restore %s",
+ fmri);
+ }
st = smf_disable_instance(fmri, 0);
}
if (strcmp(startState, cmpState) != 0) {
@@ -901,22 +922,25 @@ mgmt_set_svc_state(
break;
default:
st = -1;
+ mms_trace(MMS_ERR, "%s unknown action %d",
+ fmri, targetState);
break;
}
if (st == 0) {
/*
- * Changing state sometimes takes a while, so
- * loop for up to 5 seconds.
+ * Changing state sometimes takes a while and
+ * the scf service state functions do not wait.
+ * Check to see if the action was successul.
*/
- ts.tv_sec = 0;
- ts.tv_nsec = 500 * 1000000;
-
- for (i = 1; i < 10; i++) {
- st = 1;
+ st = 1;
+ for (i = 0; i < 10; i++) {
endState = smf_get_state(fmri);
if (endState == NULL) {
st = scf_error();
+ mms_trace(MMS_ERR,
+ "wait for state change %s - %s",
+ fmri, scf_strerror(st));
break;
} else if (strcmp(endState, cmpState) == 0) {
st = 0;
@@ -924,10 +948,12 @@ mgmt_set_svc_state(
}
free(endState);
endState = NULL;
- (void) nanosleep(&ts, NULL);
+ (void) sleep(1);
}
- } else {
+ } else if (st != -1) {
st = scf_error();
+ mms_trace(MMS_ERR, "state change %s - %s",
+ fmri, scf_strerror(st));
}
if ((startState != NULL) && (original == NULL)) {
@@ -970,7 +996,6 @@ check_exit(pid_t pid, int *signo)
}
}
}
-
return (st);
}
diff --git a/usr/src/lib/mms/mgmt/common/mms_mgmt.h b/usr/src/lib/mms/mgmt/common/mms_mgmt.h
index 428f8803dc..c1f43c5eb4 100644
--- a/usr/src/lib/mms/mgmt/common/mms_mgmt.h
+++ b/usr/src/lib/mms/mgmt/common/mms_mgmt.h
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _MMS_MGMT_H_
@@ -199,6 +199,9 @@ int
mgmt_db_drop(void);
int
+mgmt_db_ready(void);
+
+int
mgmt_db_check(void);
int