]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
dbwrap_watch: Remove the "prec" parameter from watch_recv
authorVolker Lendecke <vl@samba.org>
Sat, 1 Jul 2017 06:27:57 +0000 (08:27 +0200)
committerRalph Boehme <slow@samba.org>
Wed, 29 Nov 2017 15:59:15 +0000 (16:59 +0100)
The initial idea was to have some "atomicity" in this API. Every
caller interested in a record would have to do something with
it once it changes. However, only one caller really used this
feature, and that is easily changed to not use it. So
remove the complexity.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/lib/dbwrap/dbwrap_watch.c
source3/lib/dbwrap/dbwrap_watch.h
source3/lib/g_lock.c
source3/smbd/open.c
source3/smbd/smb2_setinfo.c
source3/smbd/smbXsrv_session.c
source3/torture/test_dbwrap_watch.c

index be0a0d37e0b4f7bb9cad11aa5194214ada9e7d83..3e91f46b428d93e9eaf8c998fe4ed3904b029686 100644 (file)
@@ -1003,18 +1003,12 @@ static void dbwrap_watched_watch_done(struct tevent_req *subreq)
 }
 
 NTSTATUS dbwrap_watched_watch_recv(struct tevent_req *req,
-                                  TALLOC_CTX *mem_ctx,
-                                  struct db_record **prec,
                                   bool *blockerdead,
                                   struct server_id *blocker)
 {
        struct dbwrap_watched_watch_state *state = tevent_req_data(
                req, struct dbwrap_watched_watch_state);
-       struct db_watched_subrec *subrec;
        NTSTATUS status;
-       TDB_DATA key;
-       struct db_record *rec;
-       bool ok;
 
        if (tevent_req_is_nterror(req, &status)) {
                return status;
@@ -1025,35 +1019,6 @@ NTSTATUS dbwrap_watched_watch_recv(struct tevent_req *req,
        if (blocker != NULL) {
                *blocker = state->blocker;
        }
-       if (prec == NULL) {
-               return NT_STATUS_OK;
-       }
-
-       ok = dbwrap_record_watchers_key_parse(state->w_key, NULL, NULL, &key);
-       if (!ok) {
-               return NT_STATUS_INTERNAL_DB_ERROR;
-       }
-
-       rec = dbwrap_fetch_locked(state->db, mem_ctx, key);
-       if (rec == NULL) {
-               return NT_STATUS_INTERNAL_DB_ERROR;
-       }
-
-       talloc_set_destructor(state, NULL);
-
-       subrec = talloc_get_type_abort(
-               rec->private_data, struct db_watched_subrec);
-
-       ok = dbwrap_watched_remove_waiter(&subrec->wrec, state->me);
-       if (ok) {
-               status = dbwrap_watched_save(subrec->subrec, &subrec->wrec,
-                                            NULL, &subrec->wrec.data, 1, 0);
-               if (!NT_STATUS_IS_OK(status)) {
-                       DBG_WARNING("dbwrap_watched_save failed: %s\n",
-                                   nt_errstr(status));
-               }
-       }
-
-       *prec = rec;
        return NT_STATUS_OK;
 }
+
index 1849310ab1602d453502406cc2e4f966b41b7fc4..e94378f2d5ae6dc5c9cc33f57525cf2480d96c19 100644 (file)
@@ -32,8 +32,6 @@ struct tevent_req *dbwrap_watched_watch_send(TALLOC_CTX *mem_ctx,
                                             struct db_record *rec,
                                             struct server_id blocker);
 NTSTATUS dbwrap_watched_watch_recv(struct tevent_req *req,
-                                  TALLOC_CTX *mem_ctx,
-                                  struct db_record **prec,
                                   bool *blockerdead,
                                   struct server_id *blocker);
 
index 8709052591d2fcceb71425b508bf2fdca8bf08ae..c5d66e3855e8a0940c3635873cc29d4b12d905e4 100644 (file)
@@ -385,7 +385,7 @@ static void g_lock_lock_retry(struct tevent_req *subreq)
        struct g_lock_lock_fn_state fn_state;
        NTSTATUS status;
 
-       status = dbwrap_watched_watch_recv(subreq, NULL, NULL, NULL, NULL);
+       status = dbwrap_watched_watch_recv(subreq, NULL, NULL);
        DBG_DEBUG("watch_recv returned %s\n", nt_errstr(status));
        TALLOC_FREE(subreq);
 
index 8c52f4bba56b0af8262409063fca55bfaab45b74..e55c394109204ba1147a2fc116954fffbd324725 100644 (file)
@@ -2390,8 +2390,7 @@ static void defer_open_done(struct tevent_req *req)
        NTSTATUS status;
        bool ret;
 
-       status = dbwrap_watched_watch_recv(req, talloc_tos(), NULL, NULL,
-                                         NULL);
+       status = dbwrap_watched_watch_recv(req, NULL, NULL);
        TALLOC_FREE(req);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(5, ("dbwrap_watched_watch_recv returned %s\n",
index db00ba0f672ca8beb6af0ddf1b2227587c4f1819..0355095c8b1ea61e9580f768e4dcfdc436213e55 100644 (file)
@@ -279,8 +279,7 @@ static void defer_rename_done(struct tevent_req *subreq)
        int ret_size = 0;
        bool ok;
 
-       status = dbwrap_watched_watch_recv(subreq, state->req, NULL, NULL,
-                                          NULL);
+       status = dbwrap_watched_watch_recv(subreq, NULL, NULL);
        TALLOC_FREE(subreq);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(5, ("dbwrap_record_watch_recv returned %s\n",
index 24767483287df2de7f8ac7cbd0d2d4e0d656c33c..9e1fb6977b4c68ce858bb6cc5e47b0de88ccb5b7 100644 (file)
@@ -1129,7 +1129,7 @@ static void smb2srv_session_close_previous_modified(struct tevent_req *subreq)
        uint32_t global_id;
        NTSTATUS status;
 
-       status = dbwrap_watched_watch_recv(subreq, state, NULL, NULL, NULL);
+       status = dbwrap_watched_watch_recv(subreq, NULL, NULL);
        TALLOC_FREE(subreq);
        if (tevent_req_nterror(req, status)) {
                return;
index 5aa0430b1111a22a4a39c24c05520d4f47faa386..97d5ea6393c353468ec063dcd0252efbbce3b8ee 100644 (file)
@@ -90,8 +90,7 @@ bool run_dbwrap_watch1(int dummy)
                goto fail;
        }
 
-       status = dbwrap_watched_watch_recv(req, talloc_tos(), &rec, NULL,
-                                          NULL);
+       status = dbwrap_watched_watch_recv(req, NULL, NULL);
        if (!NT_STATUS_IS_OK(status)) {
                fprintf(stderr, "dbwrap_record_watch_recv failed: %s\n",
                        nt_errstr(status));