diff options
-rw-r--r-- | ctdb/include/ctdb_client.h | 1 | ||||
-rw-r--r-- | ctdb/server/ctdb_recover.c | 3 | ||||
-rw-r--r-- | ctdb/tools/ctdb.c | 18 |
3 files changed, 17 insertions, 5 deletions
diff --git a/ctdb/include/ctdb_client.h b/ctdb/include/ctdb_client.h index 05e12c7f95..a9e47be40a 100644 --- a/ctdb/include/ctdb_client.h +++ b/ctdb/include/ctdb_client.h @@ -212,6 +212,7 @@ struct ctdb_dbid_map { struct ctdb_dbid { uint32_t dbid; #define CTDB_DB_FLAGS_PERSISTENT 0x01 +#define CTDB_DB_FLAGS_READONLY 0x02 uint8_t flags; } dbs[1]; }; diff --git a/ctdb/server/ctdb_recover.c b/ctdb/server/ctdb_recover.c index bfd9bae772..e1a4776af1 100644 --- a/ctdb/server/ctdb_recover.c +++ b/ctdb/server/ctdb_recover.c @@ -190,6 +190,9 @@ ctdb_control_getdbmap(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indat if (ctdb_db->persistent != 0) { dbid_map->dbs[i].flags |= CTDB_DB_FLAGS_PERSISTENT; } + if (ctdb_db->readonly != 0) { + dbid_map->dbs[i].flags |= CTDB_DB_FLAGS_READONLY; + } } return 0; diff --git a/ctdb/tools/ctdb.c b/ctdb/tools/ctdb.c index d853699d8a..1770fe4e80 100644 --- a/ctdb/tools/ctdb.c +++ b/ctdb/tools/ctdb.c @@ -3554,12 +3554,13 @@ static int control_getdbmap(struct ctdb_context *ctdb, int argc, const char **ar } if(options.machinereadable){ - printf(":ID:Name:Path:Persistent:Unhealthy:\n"); + printf(":ID:Name:Path:Persistent:Unhealthy:ReadOnly:\n"); for(i=0;i<dbmap->num;i++){ const char *path; const char *name; const char *health; bool persistent; + bool readonly; ctdb_ctrl_getdbpath(ctdb, TIMELIMIT(), options.pnn, dbmap->dbs[i].dbid, ctdb, &path); @@ -3568,9 +3569,10 @@ static int control_getdbmap(struct ctdb_context *ctdb, int argc, const char **ar ctdb_ctrl_getdbhealth(ctdb, TIMELIMIT(), options.pnn, dbmap->dbs[i].dbid, ctdb, &health); persistent = dbmap->dbs[i].flags & CTDB_DB_FLAGS_PERSISTENT; - printf(":0x%08X:%s:%s:%d:%d:\n", + readonly = dbmap->dbs[i].flags & CTDB_DB_FLAGS_READONLY; + printf(":0x%08X:%s:%s:%d:%d:%d:\n", dbmap->dbs[i].dbid, name, path, - !!(persistent), !!(health)); + !!(persistent), !!(health), !!(readonly)); } return 0; } @@ -3581,14 +3583,17 @@ static int control_getdbmap(struct ctdb_context *ctdb, int argc, const char **ar const char *name; const char *health; bool persistent; + bool readonly; ctdb_ctrl_getdbpath(ctdb, TIMELIMIT(), options.pnn, dbmap->dbs[i].dbid, ctdb, &path); ctdb_ctrl_getdbname(ctdb, TIMELIMIT(), options.pnn, dbmap->dbs[i].dbid, ctdb, &name); ctdb_ctrl_getdbhealth(ctdb, TIMELIMIT(), options.pnn, dbmap->dbs[i].dbid, ctdb, &health); persistent = dbmap->dbs[i].flags & CTDB_DB_FLAGS_PERSISTENT; - printf("dbid:0x%08x name:%s path:%s%s%s\n", + readonly = dbmap->dbs[i].flags & CTDB_DB_FLAGS_READONLY; + printf("dbid:0x%08x name:%s path:%s%s%s%s\n", dbmap->dbs[i].dbid, name, path, persistent?" PERSISTENT":"", + readonly?" READONLY":"", health?" UNHEALTHY":""); } @@ -3621,6 +3626,7 @@ static int control_getdbstatus(struct ctdb_context *ctdb, int argc, const char * const char *name; const char *health; bool persistent; + bool readonly; ctdb_ctrl_getdbname(ctdb, TIMELIMIT(), options.pnn, dbmap->dbs[i].dbid, ctdb, &name); if (strcmp(name, db_name) != 0) { @@ -3630,9 +3636,11 @@ static int control_getdbstatus(struct ctdb_context *ctdb, int argc, const char * ctdb_ctrl_getdbpath(ctdb, TIMELIMIT(), options.pnn, dbmap->dbs[i].dbid, ctdb, &path); ctdb_ctrl_getdbhealth(ctdb, TIMELIMIT(), options.pnn, dbmap->dbs[i].dbid, ctdb, &health); persistent = dbmap->dbs[i].flags & CTDB_DB_FLAGS_PERSISTENT; - printf("dbid: 0x%08x\nname: %s\npath: %s\nPERSISTENT: %s\nHEALTH: %s\n", + readonly = dbmap->dbs[i].flags & CTDB_DB_FLAGS_READONLY; + printf("dbid: 0x%08x\nname: %s\npath: %s\nPERSISTENT: %s\nREADONLY: %s\nHEALTH: %s\n", dbmap->dbs[i].dbid, name, path, persistent?"yes":"no", + readonly?"yes":"no", health?health:"OK"); return 0; } |