From a7a51bd9e6db206644a84f69dc6914a0fb266b0d Mon Sep 17 00:00:00 2001 From: Christof Schmitt Date: Fri, 18 May 2018 20:51:58 -0700 Subject: smbd: Flush dfree memcache on service reload BUG: https://bugzilla.samba.org/show_bug.cgi?id=13446 Signed-off-by: Christof Schmitt Reviewed-by: Jeremy Allison (cherry picked from commit e30d0c0e0d11f65b2d1886be3c0fe9e32eaf3926) Autobuild-User(v4-8-test): Karolin Seeger Autobuild-Date(v4-8-test): Thu Jun 7 14:09:12 CEST 2018 on sn-devel-144 --- source3/smbd/dfree.c | 5 +++++ source3/smbd/proto.h | 1 + source3/smbd/server_reload.c | 1 + 3 files changed, 7 insertions(+) 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); -- cgit v1.2.1