From 47465050c43f93294a3be27b4b0b1a3715a2c83d Mon Sep 17 00:00:00 2001 From: Vishal Pandey Date: Thu, 8 Aug 2019 11:46:46 +0530 Subject: Worm: xattr update on changing access time of a WORM-Retained file Retention-period must be updated on changing the access time of a worm-retained file. Retention-period must be changed in the "trusted.reten-state" xattr Change-Id: Ieab758a4cf6da3b4bb1d6a3e4f95f400c8a11f1d Fixes: bz#1554286 --- xlators/features/read-only/src/worm.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'xlators/features') diff --git a/xlators/features/read-only/src/worm.c b/xlators/features/read-only/src/worm.c index 48d62e0ed86..46078c1a96e 100644 --- a/xlators/features/read-only/src/worm.c +++ b/xlators/features/read-only/src/worm.c @@ -292,6 +292,12 @@ worm_setattr(call_frame_t *frame, xlator_t *this, loc_t *loc, goto out; } } + reten_state.ret_period = reten_state.ret_period + stbuf->ia_atime - + stpre.ia_atime; + ret = gf_worm_set_xattr(this, &reten_state, _gf_false, loc); + if (ret) { + goto out; + } stbuf->ia_mtime = stpre.ia_mtime; } } @@ -372,6 +378,13 @@ worm_fsetattr(call_frame_t *frame, xlator_t *this, fd_t *fd, struct iatt *stbuf, goto out; } } + reten_state.ret_period = reten_state.ret_period + stbuf->ia_atime - + stpre.ia_atime; + ret = gf_worm_set_xattr(this, &reten_state, _gf_true, fd); + if (ret) { + goto out; + } + stbuf->ia_mtime = stpre.ia_mtime; } } -- cgit