summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristof Schmitt <cs@samba.org>2018-05-18 20:51:58 -0700
committerKarolin Seeger <kseeger@samba.org>2018-06-07 14:09:12 +0200
commita7a51bd9e6db206644a84f69dc6914a0fb266b0d (patch)
tree51dcc3e24de3e82d3b2ff30abb36282982edcec5
parentf7e53f864b527245081e31982868d3f9f4645630 (diff)
downloadsamba-a7a51bd9e6db206644a84f69dc6914a0fb266b0d.tar.gz
smbd: Flush dfree memcache on service reload
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13446 Signed-off-by: Christof Schmitt <cs@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> (cherry picked from commit e30d0c0e0d11f65b2d1886be3c0fe9e32eaf3926) Autobuild-User(v4-8-test): Karolin Seeger <kseeger@samba.org> Autobuild-Date(v4-8-test): Thu Jun 7 14:09:12 CEST 2018 on sn-devel-144
-rw-r--r--source3/smbd/dfree.c5
-rw-r--r--source3/smbd/proto.h1
-rw-r--r--source3/smbd/server_reload.c1
3 files changed, 7 insertions, 0 deletions
diff --git a/source3/smbd/dfree.c b/source3/smbd/dfree.c
index 5b20707ffae..d280e1efe7f 100644
--- a/source3/smbd/dfree.c
+++ b/source3/smbd/dfree.c
@@ -273,3 +273,8 @@ out:
TALLOC_FREE(to_free);
return dfree_ret;
}
+
+void flush_dfree_cache(void)
+{
+ memcache_flush(smbd_memcache(), DFREE_CACHE);
+}
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index fe376404709..9bb919d4123 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -176,6 +176,7 @@ uint64_t sys_disk_free(connection_struct *conn, struct smb_filename *fname,
uint64_t *bsize, uint64_t *dfree, uint64_t *dsize);
uint64_t get_dfree_info(connection_struct *conn, struct smb_filename *fname,
uint64_t *bsize, uint64_t *dfree, uint64_t *dsize);
+void flush_dfree_cache(void);
/* The following definitions come from smbd/dir.c */
diff --git a/source3/smbd/server_reload.c b/source3/smbd/server_reload.c
index c93c0774979..9b6209619c3 100644
--- a/source3/smbd/server_reload.c
+++ b/source3/smbd/server_reload.c
@@ -164,6 +164,7 @@ bool reload_services(struct smbd_server_connection *sconn,
mangle_reset_cache();
reset_stat_cache();
+ flush_dfree_cache();
/* this forces service parameters to be flushed */
set_current_service(NULL,0,True);