From 33800b332ec7aa70fa14809c1030cfabaddc02a0 Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Sat, 15 Nov 2014 23:30:31 +0100 Subject: md-cache: check mtime_nsec and ctime_nsec fields for changes too When md-cache checks for an updated mtime/ctime in order to see if it should request a cache invalidation, it only looks at the whole-second "mtime" and "ctime" fields. If a file was modified a fraction of a second after the time of the cached data, md-cache won't notice the change. BUG: 1164506 Change-Id: Ieb7baa46f84489d2d7ea8d60a7fb2595564eb955 Original-author: Philip Spencer Signed-off-by: Niels de Vos Reviewed-on: http://review.gluster.org/9131 Tested-by: Gluster Build System Reviewed-by: Xavier Hernandez Reviewed-by: Vijay Bellur --- xlators/performance/md-cache/src/md-cache.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'xlators/performance/md-cache') diff --git a/xlators/performance/md-cache/src/md-cache.c b/xlators/performance/md-cache/src/md-cache.c index ae7d06d92f3..a890accbb34 100644 --- a/xlators/performance/md-cache/src/md-cache.c +++ b/xlators/performance/md-cache/src/md-cache.c @@ -411,9 +411,13 @@ mdc_inode_iatt_set_validate(xlator_t *this, inode_t *inode, struct iatt *prebuf, */ if (IA_ISREG(inode->ia_type) && ((iatt->ia_mtime != mdc->md_mtime) || - (iatt->ia_ctime != mdc->md_ctime))) + (iatt->ia_mtime_nsec != mdc->md_mtime_nsec) || + (iatt->ia_ctime != mdc->md_ctime) || + (iatt->ia_ctime_nsec != mdc->md_ctime_nsec))) if (!prebuf || (prebuf->ia_ctime != mdc->md_ctime) || - (prebuf->ia_mtime != mdc->md_mtime)) + (prebuf->ia_ctime_nsec != mdc->md_ctime_nsec) || + (prebuf->ia_mtime != mdc->md_mtime) || + (prebuf->ia_mtime_nsec != mdc->md_mtime_nsec)) inode_invalidate(inode); mdc_from_iatt (mdc, iatt); -- cgit