Merge branch 'master-readonly-records' into foo
authorRonnie Sahlberg <ronniesahlberg@gmail.com>
Sun, 11 Sep 2011 23:34:34 +0000 (09:34 +1000)
committerRonnie Sahlberg <ronniesahlberg@gmail.com>
Sun, 11 Sep 2011 23:34:34 +0000 (09:34 +1000)
Conflicts:

Makefile.in
tools/ctdb.c

1  2 
Makefile.in
client/ctdb_client.c
include/ctdb_client.h
include/ctdb_private.h
server/ctdb_ltdb_server.c
server/ctdb_recoverd.c
tools/ctdb.c
tools/ctdb_vacuum.c

diff --cc Makefile.in
index 01483d0b77e8c9d257ca00bd80c82d07733fec72,80b0a02f5583b27c73d140dbf44e870f0a72ed34..7ec430c1649659c9a326c3aee17e93728cfdc6d3
@@@ -71,14 -67,15 +71,16 @@@ CTDB_SERVER_OBJ = server/ctdbd.o server
        $(CTDB_CLIENT_OBJ) $(CTDB_TCP_OBJ) @INFINIBAND_WRAPPER_OBJ@
  
  TEST_BINS=tests/bin/ctdb_bench tests/bin/ctdb_fetch tests/bin/ctdb_fetch_one \
-       tests/bin/ctdb_fetch_lock_once tests/bin/ctdb_store \
+       tests/bin/ctdb_fetch_lock_once \
+       tests/bin/ctdb_fetch_readonly_once tests/bin/ctdb_fetch_readonly_loop \
+       tests/bin/ctdb_store tests/bin/ctdb_trackingdb_test \
        tests/bin/ctdb_randrec tests/bin/ctdb_persistent \
        tests/bin/ctdb_traverse tests/bin/rb_test tests/bin/ctdb_transaction \
-       tests/bin/ctdb_takeover_tests
+       tests/bin/ctdb_takeover_tests tests/bin/ctdb_update_record \
        @INFINIBAND_BINS@
  
 -BINS = bin/ctdb @CTDB_SCSI_IO@ bin/smnotify bin/ping_pong bin/ltdbtool
 +BINS = bin/ctdb @CTDB_SCSI_IO@ bin/smnotify bin/ping_pong bin/ltdbtool @CTDB_PMDA@
 +
  SBINS = bin/ctdbd
  
  DIRS = lib bin tests/bin
@@@ -175,10 -169,26 +177,26 @@@ tests/bin/ctdb_fetch_one: $(CTDB_CLIENT
        @echo Linking $@
        @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_fetch_one.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
  
- tests/bin/ctdb_fetch_lock_once: libctdb/libctdb.a tests/src/ctdb_fetch_lock_once.o @TDB_OBJ@ @POPT_OBJ@
+ tests/bin/ctdb_fetch_lock_once: libctdb/libctdb.a tests/src/ctdb_fetch_lock_once.o 
        @echo Linking $@
 -      @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_fetch_lock_once.o libctdb/libctdb.a -ltdb $(LIB_FLAGS)
 +      @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_fetch_lock_once.o @TDB_OBJ@ @POPT_OBJ@ libctdb/libctdb.a $(LIB_FLAGS)
  
+ tests/bin/ctdb_fetch_readonly_once: $(CTDB_CLIENT_OBJ) tests/src/ctdb_fetch_readonly_once.o
+       @echo Linking $@
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_fetch_readonly_once.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+ tests/bin/ctdb_fetch_readonly_loop: $(CTDB_CLIENT_OBJ) tests/src/ctdb_fetch_readonly_loop.o
+       @echo Linking $@
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_fetch_readonly_loop.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+ tests/bin/ctdb_trackingdb_test: $(CTDB_CLIENT_OBJ) tests/src/ctdb_trackingdb_test.o
+       @echo Linking $@
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_trackingdb_test.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+ tests/bin/ctdb_update_record: $(CTDB_CLIENT_OBJ) tests/src/ctdb_update_record.o 
+       @echo Linking $@
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_update_record.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
  tests/bin/ctdb_store: $(CTDB_CLIENT_OBJ) tests/src/ctdb_store.o 
        @echo Linking $@
        @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_store.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc tools/ctdb.c
index a8474cf9b884c17c9ffab8d10d69426bb6f1037e,331392c2e430a9011850efb66d0bae07e2806403..26c0bfb76980a84bf75f1a456d8e421d322f4373
@@@ -3007,6 -3012,62 +3007,62 @@@ static int control_catdb(struct ctdb_co
        return 0;
  }
  
 -      ctdb_db = ctdb_attach(ctdb, db_name, false, 0);
+ struct cattdb_data {
+       struct ctdb_context *ctdb;
+       uint32_t count;
+ };
+ static int cattdb_traverse(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, void *private_data)
+ {
+       struct cattdb_data *d = private_data;
+       d->count++;
+       
+       return ctdb_dumpdb_record(d->ctdb, key, data, stdout);
+ }
+ /*
+   cat the local tdb database using same format as catdb
+  */
+ static int control_cattdb(struct ctdb_context *ctdb, int argc, const char **argv)
+ {
+       const char *db_name;
+       struct ctdb_db_context *ctdb_db;
+       struct cattdb_data d;
+       bool persistent;
+       if (argc < 1) {
+               usage();
+       }
+       db_name = argv[0];
+       if (db_exists(ctdb, db_name, &persistent)) {
+               DEBUG(DEBUG_ERR,("Database '%s' does not exist\n", db_name));
+               return -1;
+       }
++      ctdb_db = ctdb_attach(ctdb, TIMELIMIT(), db_name, false, 0);
+       if (ctdb_db == NULL) {
+               DEBUG(DEBUG_ERR,("Unable to attach to database '%s'\n", db_name));
+               return -1;
+       }
+       /* traverse the local tdb */
+       d.count = 0;
+       d.ctdb  = ctdb;
+       if (tdb_traverse_read(ctdb_db->ltdb->tdb, cattdb_traverse, &d) == -1) {
+               printf("Failed to cattdb data\n");
+               exit(10);
+       }
+       talloc_free(ctdb_db);
+       printf("Dumped %d records\n", d.count);
+       return 0;
+ }
  /*
    display the content of a database key
   */
@@@ -4159,7 -4254,7 +4246,7 @@@ static int control_backupdb(struct ctdb
                                     allow_unhealthy));
        }
  
-       ctdb_db = ctdb_attach(ctdb, TIMELIMIT(), argv[0], dbmap->dbs[i].persistent, 0);
 -      ctdb_db = ctdb_attach(ctdb, argv[0], dbmap->dbs[i].flags & CTDB_DB_FLAGS_PERSISTENT, 0);
++      ctdb_db = ctdb_attach(ctdb, TIMELIMIT(), argv[0], dbmap->dbs[i].flags & CTDB_DB_FLAGS_PERSISTENT, 0);
        if (ctdb_db == NULL) {
                DEBUG(DEBUG_ERR,("Unable to attach to database '%s'\n", argv[0]));
                talloc_free(tmp_ctx);
@@@ -4558,7 -4653,7 +4645,7 @@@ static int control_wipedb(struct ctdb_c
                return -1;
        }
  
-       ctdb_db = ctdb_attach(ctdb, TIMELIMIT(), argv[0], dbmap->dbs[i].persistent, 0);
 -      ctdb_db = ctdb_attach(ctdb, argv[0], dbmap->dbs[i].flags & CTDB_DB_FLAGS_PERSISTENT, 0);
++      ctdb_db = ctdb_attach(ctdb, TIMELIMIT(), argv[0], dbmap->dbs[i].flags & CTDB_DB_FLAGS_PERSISTENT, 0);
        if (ctdb_db == NULL) {
                DEBUG(DEBUG_ERR, ("Unable to attach to database '%s'\n",
                                  argv[0]));
Simple merge