[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ``struct stat'' issue
From: |
Thomas Schwinge |
Subject: |
Re: ``struct stat'' issue |
Date: |
Sat, 17 Nov 2007 15:31:04 +0100 |
User-agent: |
Mutt/1.5.11 |
Hello!
On Tue, Nov 13, 2007 at 05:33:31PM -0800, Roland McGrath wrote:
> > I.e., the usec / nsec value of variable `st' (``struct stat'') isn't set
> > at all. In my reading of the used ``struct ext2_inode'' (variable `di')
> > there indeed is nothing better than the sec value being provided. Should
> > we explicitly set the usec / nsec value of `st' to zero?
>
> Yes. diskfs_make_node does not zero everything first, so read_node should
> set every field.
Like this?
#v+
2007-11-17 Thomas Schwinge <tschwinge@gnu.org>
* inode.c (read_node, write_node): Use `st->st_atim', `st->mtim',
`st->ctim'.
(read_node): Correctly initialize those.
Index: inode.c
===================================================================
RCS file: /cvsroot/hurd/hurd/ext2fs/inode.c,v
retrieving revision 1.62
diff -u -p -r1.62 inode.c
--- inode.c 8 Oct 2002 23:10:09 -0000 1.62
+++ inode.c 17 Nov 2007 14:22:07 -0000
@@ -216,15 +221,13 @@ read_node (struct node *np)
st->st_size = di->i_size;
st->st_gen = di->i_generation;
- st->st_atime = di->i_atime;
- st->st_mtime = di->i_mtime;
- st->st_ctime = di->i_ctime;
-
-#ifdef XXX
- st->st_atime_usec = di->i_atime.ts_nsec / 1000;
- st->st_mtime_usec = di->i_mtime.ts_nsec / 1000;
- st->st_ctime_usec = di->i_ctime.ts_nsec / 1000;
-#endif
+ /* The ``struct ext2_inode'' doesn't do better than sec. precision yet. */
+ st->st_atim.tv_sec = di->i_atime;
+ st->st_atim.tv_nsec = 0;
+ st->st_mtim.tv_sec = di->i_mtime;
+ st->st_mtim.tv_nsec = 0;
+ st->st_ctim.tv_sec = di->i_ctime;
+ st->st_ctim.tv_nsec = 0;
st->st_blocks = di->i_blocks;
@@ -446,13 +447,19 @@ write_node (struct node *np)
di->i_links_count = st->st_nlink;
- di->i_atime = st->st_atime;
- di->i_mtime = st->st_mtime;
- di->i_ctime = st->st_ctime;
-#ifdef XXX
- di->i_atime.ts_nsec = st->st_atime_usec * 1000;
- di->i_mtime.ts_nsec = st->st_mtime_usec * 1000;
- di->i_ctime.ts_nsec = st->st_ctime_usec * 1000;
+ /* The ``struct ext2_inode'' doesn't do better than sec. precision
+ yet. */
+ di->i_atime = st->st_atim.tv_sec;
+#ifdef not_yet
+ di->i_atime.ts_nsec = st->st_atim.tv_nsec;
+#endif
+ di->i_mtime = st->st_mtim.tv_sec;
+#ifdef not_yet
+ di->i_mtime.ts_nsec = st->st_mtim.tv_nsec;
+#endif
+ di->i_ctime = st->st_ctim.tv_sec;
+#ifdef not_yet
+ di->i_ctime.ts_nsec = st->st_ctim.tv_nsec;
#endif
/* Convert generic flags in ST->st_flags to ext2-specific flags in DI
#v-
Regards,
Thomas
signature.asc
Description: Digital signature