At the point in time where most devices are created, we don't know what
time it is because boottime is not yet initialized. Finagle the relevant fields when we get the chance.
This commit is contained in:
parent
a28f659d51
commit
4b1c62b3f2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=71945
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user