From: Alex Zhuravlev Date: Wed, 23 Mar 2016 12:32:54 +0000 (+0300) Subject: LU-7902 osd: no need to set same [acm]time X-Git-Tag: 2.8.53~50 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=f21b415d15eda21aa7f489242b0eb844b968be7a;ds=sidebyside LU-7902 osd: no need to set same [acm]time osd_attr_set() has [acm]time cached in the objects. so if the caller wants to set them to the same value, there is no point to call very expensive SA update procedure. Change-Id: I4e06306198496170f5d9c486a8d245c0978c0f79 Signed-off-by: Alex Zhuravlev Reviewed-on: http://review.whamcloud.com/19088 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Niu Yawei Reviewed-by: Bobi Jam Reviewed-by: Oleg Drokin --- diff --git a/lustre/osd-zfs/osd_object.c b/lustre/osd-zfs/osd_object.c index b875be2..f00d454 100644 --- a/lustre/osd-zfs/osd_object.c +++ b/lustre/osd-zfs/osd_object.c @@ -954,6 +954,15 @@ static int osd_attr_set(const struct lu_env *env, struct dt_object *dt, if (!S_ISREG(dt->do_lu.lo_header->loh_attr)) valid &= ~(LA_SIZE | LA_BLOCKS); + if (valid & LA_CTIME && la->la_ctime == obj->oo_attr.la_ctime) + valid &= ~LA_CTIME; + + if (valid & LA_MTIME && la->la_mtime == obj->oo_attr.la_mtime) + valid &= ~LA_MTIME; + + if (valid & LA_ATIME && la->la_atime == obj->oo_attr.la_atime) + valid &= ~LA_ATIME; + if (valid == 0) GOTO(out, rc = 0);