[PATCH] Remove some unused code, optimize leases_db.c
Volker Lendecke
Volker.Lendecke at SerNet.DE
Tue Oct 2 06:32:45 UTC 2018
Hi!
Review appreciated!
Thanks, Volker
https://gitlab.com/samba-team/devel/samba/pipelines/31643297
--
SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de, mailto:kontakt at sernet.de
-------------- next part --------------
From 5eb07037da2b5497c479470e4eacd072ded39ca0 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 25 Sep 2018 03:58:16 -0700
Subject: [PATCH 1/6] includes: Remove an unused #define
Signed-off-by: Volker Lendecke <vl at samba.org>
---
source3/include/smb.h | 5 -----
1 file changed, 5 deletions(-)
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 89469fc1433..7f22a60a3aa 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -546,11 +546,6 @@ enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT,
#define FNUM_FIELD_INVALID 0
-/*
- * Size of buffer to use when moving files across filesystems.
- */
-#define COPYBUF_SIZE (8*1024)
-
/*
* Map the Core and Extended Oplock requesst bits down
* to common bits (EXCLUSIVE_OPLOCK & BATCH_OPLOCK).
--
2.11.0
From 1cf4b7683e7ac3e7ed496c595b8cc58dd35d65e8 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 25 Sep 2018 03:58:29 -0700
Subject: [PATCH 2/6] includes: Fix a typo
Signed-off-by: Volker Lendecke <vl at samba.org>
---
source3/include/smb.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 7f22a60a3aa..c37dbeb1286 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -547,7 +547,7 @@ enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT,
#define FNUM_FIELD_INVALID 0
/*
- * Map the Core and Extended Oplock requesst bits down
+ * Map the Core and Extended Oplock request bits down
* to common bits (EXCLUSIVE_OPLOCK & BATCH_OPLOCK).
*/
--
2.11.0
From 741dfdf07ad75e4edffff60deabeafd97604c26a Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 25 Sep 2018 04:02:35 -0700
Subject: [PATCH 3/6] includes: Remove an unused #define
Signed-off-by: Volker Lendecke <vl at samba.org>
---
source3/include/smb.h | 4 ----
1 file changed, 4 deletions(-)
diff --git a/source3/include/smb.h b/source3/include/smb.h
index c37dbeb1286..0fd9471c356 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -50,10 +50,6 @@
#define SIZEOFWORD 2
-#ifndef DEF_CREATE_MASK
-#define DEF_CREATE_MASK (0755)
-#endif
-
/* string manipulation flags - see clistr.c and srvstr.c */
#define STR_TERMINATE 1
#define STR_UPPER 2
--
2.11.0
From 6bfe3407e3d7a24c574745a87f0f5153e07fbbad Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 25 Sep 2018 08:57:17 -0700
Subject: [PATCH 4/6] lib: Remove unused tdb_pack_append()
Signed-off-by: Volker Lendecke <vl at samba.org>
---
source3/include/util_tdb.h | 2 --
source3/lib/util_tdb.c | 34 ----------------------------------
2 files changed, 36 deletions(-)
diff --git a/source3/include/util_tdb.h b/source3/include/util_tdb.h
index 11160335975..8dc104834e8 100644
--- a/source3/include/util_tdb.h
+++ b/source3/include/util_tdb.h
@@ -38,8 +38,6 @@ int tdb_trans_delete(struct tdb_context *tdb, TDB_DATA key);
*/
int tdb_unpack(const uint8_t *buf, int bufsize, const char *fmt, ...);
size_t tdb_pack(uint8_t *buf, int bufsize, const char *fmt, ...);
-bool tdb_pack_append(TALLOC_CTX *mem_ctx, uint8_t **buf, size_t *len,
- const char *fmt, ...);
struct tdb_context *tdb_open_log(const char *name, int hash_size,
int tdb_flags, int open_flags, mode_t mode);
diff --git a/source3/lib/util_tdb.c b/source3/lib/util_tdb.c
index 1e533e82534..80e66e0a108 100644
--- a/source3/lib/util_tdb.c
+++ b/source3/lib/util_tdb.c
@@ -140,40 +140,6 @@ size_t tdb_pack(uint8_t *buf, int bufsize, const char *fmt, ...)
return result;
}
-bool tdb_pack_append(TALLOC_CTX *mem_ctx, uint8_t **buf, size_t *len,
- const char *fmt, ...)
-{
- va_list ap;
- size_t len1, len2;
-
- va_start(ap, fmt);
- len1 = tdb_pack_va(NULL, 0, fmt, ap);
- va_end(ap);
-
- if (mem_ctx != NULL) {
- *buf = talloc_realloc(mem_ctx, *buf, uint8_t,
- (*len) + len1);
- } else {
- *buf = SMB_REALLOC_ARRAY(*buf, uint8_t, (*len) + len1);
- }
-
- if (*buf == NULL) {
- return False;
- }
-
- va_start(ap, fmt);
- len2 = tdb_pack_va((*buf)+(*len), len1, fmt, ap);
- va_end(ap);
-
- if (len1 != len2) {
- return False;
- }
-
- *len += len2;
-
- return True;
-}
-
/****************************************************************************
Useful pair of routines for packing/unpacking data consisting of
integers and strings.
--
2.11.0
From 7c33a00d9c0cc101e34a9dd6f870c4fa0d929c59 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Mon, 10 Sep 2018 14:59:14 +0200
Subject: [PATCH 5/6] smbd: Fix a warning
gcc complains that the "const" is ignored on function return
types. Right now I'm compiling this file a lot, so silence this
warning :-)
Signed-off-by: Volker Lendecke <vl at samba.org>
---
source3/locking/share_mode_lock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c
index 919e74c0851..a97d8d44930 100644
--- a/source3/locking/share_mode_lock.c
+++ b/source3/locking/share_mode_lock.c
@@ -142,7 +142,7 @@ static TDB_DATA locking_key(const struct file_id *id)
necessary we can always make this a separate (smaller) cache.
******************************************************************/
-static const DATA_BLOB memcache_key(const struct file_id *id)
+static DATA_BLOB memcache_key(const struct file_id *id)
{
return data_blob_const((const void *)id, sizeof(*id));
}
--
2.11.0
From 7fc5b76302fdc98d36b5de2de84021dd3d126a36 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Thu, 13 Sep 2018 21:05:05 +0200
Subject: [PATCH 6/6] leases: Streamline leases_db_key a bit
We don't need to talloc the blob, it's always the same size
Signed-off-by: Volker Lendecke <vl at samba.org>
---
source3/locking/leases_db.c | 62 +++++++++++++++------------------------------
1 file changed, 21 insertions(+), 41 deletions(-)
diff --git a/source3/locking/leases_db.c b/source3/locking/leases_db.c
index ea63b00e272..31576280fb6 100644
--- a/source3/locking/leases_db.c
+++ b/source3/locking/leases_db.c
@@ -60,33 +60,30 @@ bool leases_db_init(bool read_only)
return true;
}
-static bool leases_db_key(TALLOC_CTX *mem_ctx,
- const struct GUID *client_guid,
- const struct smb2_lease_key *lease_key,
- TDB_DATA *key)
+struct leases_db_key_buf {
+ uint8_t buf[32];
+};
+
+static TDB_DATA leases_db_key(struct leases_db_key_buf *buf,
+ const struct GUID *client_guid,
+ const struct smb2_lease_key *lease_key)
{
struct leases_db_key db_key = {
.client_guid = *client_guid,
.lease_key = *lease_key };
- DATA_BLOB blob;
+ DATA_BLOB blob = { .data = buf->buf, .length = sizeof(buf->buf) };
enum ndr_err_code ndr_err;
if (DEBUGLEVEL >= 10) {
- DEBUG(10, ("%s:\n", __func__));
+ DBG_DEBUG("\n");
NDR_PRINT_DEBUG(leases_db_key, &db_key);
}
- ndr_err = ndr_push_struct_blob(
- &blob, mem_ctx, &db_key,
- (ndr_push_flags_fn_t)ndr_push_leases_db_key);
- if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
- DEBUG(10, ("%s: ndr_push_struct_blob_failed: %s\n",
- __func__, ndr_errstr(ndr_err)));
- return false;
- }
+ ndr_err = ndr_push_struct_into_fixed_blob(
+ &blob, &db_key, (ndr_push_flags_fn_t)ndr_push_leases_db_key);
+ SMB_ASSERT(NDR_ERR_CODE_IS_SUCCESS(ndr_err));
- *key = make_tdb_data(blob.data, blob.length);
- return true;
+ return (TDB_DATA) { .dptr = buf->buf, .dsize = sizeof(buf->buf) };
}
NTSTATUS leases_db_add(const struct GUID *client_guid,
@@ -96,11 +93,12 @@ NTSTATUS leases_db_add(const struct GUID *client_guid,
const char *base_name,
const char *stream_name)
{
- TDB_DATA db_key, db_value;
+ struct leases_db_key_buf keybuf;
+ TDB_DATA db_key = leases_db_key(&keybuf, client_guid, lease_key);
+ TDB_DATA db_value;
DATA_BLOB blob;
struct db_record *rec;
NTSTATUS status;
- bool ok;
struct leases_db_value new_value;
struct leases_db_file new_file;
struct leases_db_value *value = NULL;
@@ -110,14 +108,7 @@ NTSTATUS leases_db_add(const struct GUID *client_guid,
return NT_STATUS_INTERNAL_ERROR;
}
- ok = leases_db_key(talloc_tos(), client_guid, lease_key, &db_key);
- if (!ok) {
- DEBUG(10, ("%s: leases_db_key failed\n", __func__));
- return NT_STATUS_NO_MEMORY;
- }
-
rec = dbwrap_fetch_locked(leases_db, talloc_tos(), db_key);
- TALLOC_FREE(db_key.dptr);
if (rec == NULL) {
return NT_STATUS_INTERNAL_ERROR;
}
@@ -221,26 +212,21 @@ NTSTATUS leases_db_del(const struct GUID *client_guid,
const struct smb2_lease_key *lease_key,
const struct file_id *id)
{
- TDB_DATA db_key, db_value;
+ struct leases_db_key_buf keybuf;
+ TDB_DATA db_key = leases_db_key(&keybuf, client_guid, lease_key);
+ TDB_DATA db_value;
struct db_record *rec;
NTSTATUS status;
struct leases_db_value *value;
enum ndr_err_code ndr_err;
DATA_BLOB blob;
uint32_t i;
- bool ok;
if (!leases_db_init(false)) {
return NT_STATUS_INTERNAL_ERROR;
}
- ok = leases_db_key(talloc_tos(), client_guid, lease_key, &db_key);
- if (!ok) {
- return NT_STATUS_NO_MEMORY;
- }
-
rec = dbwrap_fetch_locked(leases_db, talloc_tos(), db_key);
- TALLOC_FREE(db_key.dptr);
if (rec == NULL) {
return NT_STATUS_NOT_FOUND;
}
@@ -372,20 +358,15 @@ NTSTATUS leases_db_parse(const struct GUID *client_guid,
void *private_data),
void *private_data)
{
- TDB_DATA db_key;
+ struct leases_db_key_buf keybuf;
+ TDB_DATA db_key = leases_db_key(&keybuf, client_guid, lease_key);
struct leases_db_fetch_state state;
NTSTATUS status;
- bool ok;
if (!leases_db_init(true)) {
return NT_STATUS_INTERNAL_ERROR;
}
- ok = leases_db_key(talloc_tos(), client_guid, lease_key, &db_key);
- if (!ok) {
- return NT_STATUS_NO_MEMORY;
- }
-
state = (struct leases_db_fetch_state) {
.parser = parser,
.private_data = private_data,
@@ -394,7 +375,6 @@ NTSTATUS leases_db_parse(const struct GUID *client_guid,
status = dbwrap_parse_record(leases_db, db_key, leases_db_parser,
&state);
- TALLOC_FREE(db_key.dptr);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
--
2.11.0
More information about the samba-technical
mailing list