summaryrefslogtreecommitdiffstats
path: root/xlators/features/utime
diff options
context:
space:
mode:
authorKotresh HR <khiremat@redhat.com>2018-06-18 13:40:33 -0400
committerAmar Tumballi <amarts@redhat.com>2018-06-20 06:51:21 +0000
commitc097a7894d458e33a41f6db6092677108ef30fec (patch)
treebb15f6b6ff99a72b397a511c3c2d34449a0f0b47 /xlators/features/utime
parent841991130c94e3fcf4076917be6da9ce90406932 (diff)
ctime: Fix self heal of symlink in EC volume
Since IEEE Std 1003.1-2001 does not require any association of file times with symbolic links, there is no requirement that file times be updated by readlink() states [1]. stat on symlink file was generating a readlink fop on one of the subvolumes of ec set which in turn updates atime on that subvolume. This causes mdata xattr to be different across ec set and hence self heal fails. So based on [1], atime is no longer updated by readlink fop. [1] http://pubs.opengroup.org/onlinepubs/009695399/functions/readlink.html fixes: bz#1592509 Change-Id: I08bd3ca3bdb222bd18160b1aa58fc2f7630c8083 Signed-off-by: Kotresh HR <khiremat@redhat.com>
Diffstat (limited to 'xlators/features/utime')
-rw-r--r--xlators/features/utime/src/utime-gen-fops-c.py2
-rw-r--r--xlators/features/utime/src/utime-gen-fops-h.py2
-rw-r--r--xlators/features/utime/src/utime-helpers.c1
-rw-r--r--xlators/features/utime/src/utime.c1
4 files changed, 2 insertions, 4 deletions
diff --git a/xlators/features/utime/src/utime-gen-fops-c.py b/xlators/features/utime/src/utime-gen-fops-c.py
index 5f4202f0d18..6ebd1afe9cd 100644
--- a/xlators/features/utime/src/utime-gen-fops-c.py
+++ b/xlators/features/utime/src/utime-gen-fops-c.py
@@ -87,7 +87,7 @@ gf_utime_@NAME@ (call_frame_t *frame, xlator_t *this,
}
"""
-utime_ops = ['fallocate', 'zerofill', 'opendir', 'readlink', 'mknod', 'mkdir',
+utime_ops = ['fallocate', 'zerofill', 'opendir', 'mknod', 'mkdir',
'unlink', 'rmdir', 'symlink', 'rename', 'link', 'truncate',
'ftruncate', 'create', 'open', 'removexattr', 'fremovexattr']
diff --git a/xlators/features/utime/src/utime-gen-fops-h.py b/xlators/features/utime/src/utime-gen-fops-h.py
index 66119ce4fb2..9c297062929 100644
--- a/xlators/features/utime/src/utime-gen-fops-h.py
+++ b/xlators/features/utime/src/utime-gen-fops-h.py
@@ -15,7 +15,7 @@ gf_utime_@NAME@ (call_frame_t *frame, xlator_t *this,
@LONG_ARGS@);
"""
-utime_ops = ['fallocate', 'zerofill', 'opendir', 'readlink', 'mknod', 'mkdir',
+utime_ops = ['fallocate', 'zerofill', 'opendir', 'mknod', 'mkdir',
'unlink', 'rmdir', 'symlink', 'rename', 'link', 'truncate',
'ftruncate', 'create', 'open', 'removexattr', 'fremovexattr',
'readv', 'writev', 'setattr', 'fsetattr']
diff --git a/xlators/features/utime/src/utime-helpers.c b/xlators/features/utime/src/utime-helpers.c
index 8dcd2647a35..6cac9651190 100644
--- a/xlators/features/utime/src/utime-helpers.c
+++ b/xlators/features/utime/src/utime-helpers.c
@@ -41,7 +41,6 @@ utime_update_attribute_flags(call_frame_t *frame, glusterfs_fop_t fop)
break;
case GF_FOP_OPENDIR:
- case GF_FOP_READLINK:
case GF_FOP_OPEN:
case GF_FOP_READ:
frame->root->flags |= MDATA_ATIME;
diff --git a/xlators/features/utime/src/utime.c b/xlators/features/utime/src/utime.c
index 27a0e260ca4..a8d74d9cb5c 100644
--- a/xlators/features/utime/src/utime.c
+++ b/xlators/features/utime/src/utime.c
@@ -202,7 +202,6 @@ struct xlator_fops fops = {
.setattr = gf_utime_setattr,
.fsetattr = gf_utime_fsetattr,
.opendir = gf_utime_opendir,
- .readlink = gf_utime_readlink,
.removexattr = gf_utime_removexattr,
};
struct xlator_cbks cbks = {