summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/fs/devfs/devfs_devs.c2
-rw-r--r--sys/fs/devfs/devfs_vnops.c15
2 files changed, 16 insertions, 1 deletions
diff --git a/sys/fs/devfs/devfs_devs.c b/sys/fs/devfs/devfs_devs.c
index 30558ec..c7814a2 100644
--- a/sys/fs/devfs/devfs_devs.c
+++ b/sys/fs/devfs/devfs_devs.c
@@ -202,7 +202,7 @@ devfs_newdirent(char *name, int namelen)
de->de_dirent->d_reclen = GENERIC_DIRSIZ(&d);
bcopy(name, de->de_dirent->d_name, namelen);
de->de_dirent->d_name[namelen] = '\0';
- nanotime(&de->de_ctime);
+ getnanotime(&de->de_ctime);
de->de_mtime = de->de_atime = de->de_ctime;
de->de_links = 1;
return (de);
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index 1f41b51..e33ad8d 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -159,14 +159,29 @@ devfs_getattr(ap)
vap->va_size = 0;
vap->va_blocksize = DEV_BSIZE;
vap->va_type = vp->v_type;
+
+#define fix(aa) \
+ do { \
+ if ((aa).tv_sec == 0) { \
+ (aa).tv_sec = boottime.tv_sec; \
+ (aa).tv_nsec = boottime.tv_usec * 1000; \
+ } \
+ } while (0)
+
if (vp->v_type != VCHR) {
+ fix(de->de_atime);
vap->va_atime = de->de_atime;
+ fix(de->de_mtime);
vap->va_mtime = de->de_mtime;
+ fix(de->de_ctime);
vap->va_ctime = de->de_ctime;
} else {
dev = vp->v_rdev;
+ fix(dev->si_atime);
vap->va_atime = dev->si_atime;
+ fix(dev->si_mtime);
vap->va_mtime = dev->si_mtime;
+ fix(dev->si_ctime);
vap->va_ctime = dev->si_ctime;
vap->va_rdev = dev->si_udev;
}
OpenPOWER on IntegriCloud