From: Volker Lendecke Date: Wed, 13 Jul 2016 05:27:30 +0000 (+0200) Subject: smbd: Convert locking.tdb to new dbwrap_watch X-Git-Tag: tdb-1.3.10~363 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=83e4e1a78645011f4cf527f0eb1a5b0f7a815f97;p=thirdparty%2Fsamba.git smbd: Convert locking.tdb to new dbwrap_watch Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c index 4e9de036c71..b5a63f8bf2e 100644 --- a/source3/locking/share_mode_lock.c +++ b/source3/locking/share_mode_lock.c @@ -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; } diff --git a/source3/smbd/open.c b/source3/smbd/open.c index 57cd4f1c1af..ab46fe0a20b 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -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 diff --git a/source3/smbd/smb2_setinfo.c b/source3/smbd/smb2_setinfo.c index 0a678ea0488..db00ba0f672 100644 --- a/source3/smbd/smb2_setinfo.c +++ b/source3/smbd/smb2_setinfo.c @@ -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",