]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: Convert locking.tdb to new dbwrap_watch
authorVolker Lendecke <vl@samba.org>
Wed, 13 Jul 2016 05:27:30 +0000 (07:27 +0200)
committerVolker Lendecke <vl@samba.org>
Fri, 15 Jul 2016 14:56:13 +0000 (16:56 +0200)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/locking/share_mode_lock.c
source3/smbd/open.c
source3/smbd/smb2_setinfo.c

index 4e9de036c715e61e18e738f95118196866564c04..b5a63f8bf2e6aa32b3da995600add578d9c2e20d 100644 (file)
@@ -60,6 +60,7 @@ static struct db_context *lock_db;
 
 static bool locking_init_internal(bool read_only)
 {
+       struct db_context *backend;
        char *db_path;
 
        brl_init(read_only);
@@ -72,21 +73,28 @@ static bool locking_init_internal(bool read_only)
                return false;
        }
 
-       lock_db = db_open(NULL, db_path,
+       backend = db_open(NULL, db_path,
                          SMB_OPEN_DATABASE_TDB_HASH_SIZE,
                          TDB_DEFAULT|TDB_VOLATILE|TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH,
                          read_only?O_RDONLY:O_RDWR|O_CREAT, 0644,
                          DBWRAP_LOCK_ORDER_1, DBWRAP_FLAG_NONE);
        TALLOC_FREE(db_path);
-       if (!lock_db) {
+       if (!backend) {
                DEBUG(0,("ERROR: Failed to initialise locking database\n"));
                return False;
        }
 
-       if (!posix_locking_init(read_only))
-               return False;
+       lock_db = db_open_watched(NULL, backend, server_messaging_context());
+       if (lock_db == NULL) {
+               DBG_ERR("db_open_watched failed\n");
+               TALLOC_FREE(backend);
+               return false;
+       }
 
-       dbwrap_watch_db(lock_db, server_messaging_context());
+       if (!posix_locking_init(read_only)) {
+               TALLOC_FREE(lock_db);
+               return False;
+       }
 
        return True;
 }
index 57cd4f1c1afa98cb020c1b5e8a2841dedf6083d9..ab46fe0a20b5b50b0235ed118d3996352013d53b 100644 (file)
@@ -1952,9 +1952,9 @@ static void defer_open(struct share_mode_lock *lck,
                DEBUG(10, ("defering mid %llu\n",
                           (unsigned long long)req->mid));
 
-               watch_req = dbwrap_record_watch_send(
+               watch_req = dbwrap_watched_watch_send(
                        watch_state, req->sconn->ev_ctx, lck->data->record,
-                       req->sconn->msg_ctx, (struct server_id){0});
+                       (struct server_id){0});
                if (watch_req == NULL) {
                        exit_server("Could not watch share mode record");
                }
@@ -1981,11 +1981,11 @@ static void defer_open_done(struct tevent_req *req)
        NTSTATUS status;
        bool ret;
 
-       status = dbwrap_record_watch_recv(req, talloc_tos(), NULL, NULL,
+       status = dbwrap_watched_watch_recv(req, talloc_tos(), NULL, NULL,
                                          NULL);
        TALLOC_FREE(req);
        if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(5, ("dbwrap_record_watch_recv returned %s\n",
+               DEBUG(5, ("dbwrap_watched_watch_recv returned %s\n",
                          nt_errstr(status)));
                /*
                 * Even if it failed, retry anyway. TODO: We need a way to
index 0a678ea04881ef790e93eab162235f0fdbe19dce..db00ba0f672ca8beb6af0ddf1b2227587c4f1819 100644 (file)
@@ -248,11 +248,10 @@ static struct tevent_req *delay_rename_for_lease_break(struct tevent_req *req,
 
        talloc_set_destructor(rename_state, defer_rename_state_destructor);
 
-       subreq = dbwrap_record_watch_send(
+       subreq = dbwrap_watched_watch_send(
                                rename_state,
                                ev,
                                lck->data->record,
-                               fsp->conn->sconn->msg_ctx,
                                (struct server_id){0});
 
        if (subreq == NULL) {
@@ -280,8 +279,8 @@ static void defer_rename_done(struct tevent_req *subreq)
        int ret_size = 0;
        bool ok;
 
-       status = dbwrap_record_watch_recv(subreq, state->req, NULL, NULL,
-                                         NULL);
+       status = dbwrap_watched_watch_recv(subreq, state->req, NULL, NULL,
+                                          NULL);
        TALLOC_FREE(subreq);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(5, ("dbwrap_record_watch_recv returned %s\n",