]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
ukernel: output dataversion in stat struct if possible
authorDerrick Brashear <shadow@dementix.org>
Wed, 28 Sep 2011 14:23:19 +0000 (10:23 -0400)
committerDerrick Brashear <shadow@dementix.org>
Fri, 7 Oct 2011 17:33:07 +0000 (10:33 -0700)
we already have this data; if we can output it, do so.

Reviewed-on: http://gerrit.openafs.org/5510
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
(cherry picked from commit 955bab670d0aed714fc940b5be7e2b75896a63d0)

Change-Id: I9ce28fcb20cee8f15f71cd734b9da0ad85c12c3f
Reviewed-on: http://gerrit.openafs.org/5541
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
acinclude.m4
src/afs/UKERNEL/afs_usrops.c

index d5021d91969a19e21475ed6356f4ba9a2c245b4c..3ff4551ebff2256b53512e90d4bd4710ffa14599 100644 (file)
@@ -1264,6 +1264,9 @@ AC_CHECK_TYPES([fsblkcnt_t],,,[
 #endif
 ])
 
+dnl see what struct stat has for timestamps
+AC_CHECK_MEMBERS([struct stat.st_ctimespec, struct stat.st_ctimensec])
+
 dnl check for curses-lib
 save_LIBS=$LIBS
 AC_CHECK_LIB( [ncurses], [setupterm],
index b66ce5ccc40a8e769d331728b3e19c84272093d6..c1fd8200a97932500bcfb71074eeb562094e1327 100644 (file)
@@ -2459,6 +2459,16 @@ uafs_GetAttr(struct usr_vnode *vp, struct stat *stats)
     stats->st_atime = attrs.va_atime.tv_sec;
     stats->st_mtime = attrs.va_mtime.tv_sec;
     stats->st_ctime = attrs.va_ctime.tv_sec;
+    /* preserve dv if possible */
+#if defined(HAVE_STRUCT_STAT_ST_CTIMESPEC)
+    stats->st_atimespec.tv_nsec = attrs.va_atime.tv_usec * 1000;
+    stats->st_mtimespec.tv_nsec = attrs.va_mtime.tv_usec * 1000;
+    stats->st_ctimespec.tv_nsec = attrs.va_ctime.tv_usec * 1000;
+#elif defined(HAVE_STRUCT_STAT_ST_CTIMENSEC)
+    stats->st_atimensec = attrs.va_atime.tv_usec * 1000;
+    stats->st_mtimensec = attrs.va_mtime.tv_usec * 1000;
+    stats->st_ctimensec = attrs.va_ctime.tv_usec * 1000;
+#endif
     stats->st_blksize = attrs.va_blocksize;
     stats->st_blocks = attrs.va_blocks;