smbd: Flush dfree memcache on service reload
authorChristof Schmitt <cs@samba.org>
Sat, 19 May 2018 03:51:58 +0000 (20:51 -0700)
committerJeremy Allison <jra@samba.org>
Fri, 25 May 2018 20:52:12 +0000 (22:52 +0200)
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>
source3/smbd/dfree.c
source3/smbd/proto.h
source3/smbd/server_reload.c

index 5b20707ffae87fd6a4bb092755a13c7d94aa6451..d280e1efe7f8c44391ac1a393414b779545a9550 100644 (file)
@@ -273,3 +273,8 @@ out:
        TALLOC_FREE(to_free);
        return dfree_ret;
 }
+
+void flush_dfree_cache(void)
+{
+       memcache_flush(smbd_memcache(), DFREE_CACHE);
+}
index 86b655152891ce1ee39f336d821f1e5fff0375df..7a5ac4c4bc8b1630a2eaf1e16195c36d2545239c 100644 (file)
@@ -173,6 +173,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  */
 
index c93c0774979c335f105bb9fb81ef7c5a41b7de34..9b6209619c30b499ae04d8a854f7633026480616 100644 (file)
@@ -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);