summaryrefslogtreecommitdiff
path: root/source3
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 13:54:43 +0200
commitd3c2cc28545b052754a2b77a5df0a7dc86e90766 (patch)
tree330e13fea8756f163ead41bad5a9299691a4aafc /source3
parentb310f375726afedbc33f9f9033f7f79772898dc9 (diff)
downloadsamba-d3c2cc28545b052754a2b77a5df0a7dc86e90766.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-7-test): Karolin Seeger <kseeger@samba.org> Autobuild-Date(v4-7-test): Thu Jun 7 13:54:43 CEST 2018 on sn-devel-144
Diffstat (limited to 'source3')
-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 a688341c64d..d814a30711f 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);