s3: Use lock_order for setting the db priority
authorVolker Lendecke <vl@samba.org>
Mon, 16 Jan 2012 12:42:52 +0000 (13:42 +0100)
committerVolker Lendecke <vlendec@samba.org>
Wed, 18 Jan 2012 15:21:52 +0000 (16:21 +0100)
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Wed Jan 18 16:21:52 CET 2012 on sn-devel-104

source3/lib/dbwrap/dbwrap_ctdb.c

index e5c07f4b8e7bccf005c0a81a95556df297e63956..3c1ab44d4e0351e6c08ab5449496b07f179be3ec 100644 (file)
@@ -1439,6 +1439,9 @@ struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
        char *db_path;
        struct ctdbd_connection *conn;
        struct loadparm_context *lp_ctx;
+       struct ctdb_db_priority prio;
+       NTSTATUS status;
+       int cstatus;
 
        if (!lp_clustering()) {
                DEBUG(10, ("Clustering disabled -- no ctdb\n"));
@@ -1485,6 +1488,21 @@ struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
                chmod(db_path, mode);
        }
 
+       prio.db_id = db_ctdb->db_id;
+       prio.priority = lock_order;
+
+       status = ctdbd_control_local(
+               conn, CTDB_CONTROL_SET_DB_PRIORITY, 0, 0,
+               make_tdb_data((uint8_t *)&prio, sizeof(prio)),
+               NULL, NULL, &cstatus);
+
+       if (!NT_STATUS_IS_OK(status) || (cstatus != 0)) {
+               DEBUG(1, ("CTDB_CONTROL_SET_DB_PRIORITY failed: %s, %d\n",
+                         nt_errstr(status), cstatus));
+               TALLOC_FREE(result);
+               return NULL;
+       }
+
        lp_ctx = loadparm_init_s3(db_path, loadparm_s3_context());
 
        db_ctdb->wtdb = tdb_wrap_open(db_ctdb, db_path, hash_size, tdb_flags,