Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/ufs split out lfs_itimes(). It is used in fsck_lfs.



details:   https://anonhg.NetBSD.org/src/rev/d453d1a44986
branches:  trunk
changeset: 584322:d453d1a44986
user:      christos <christos%NetBSD.org@localhost>
date:      Tue Sep 13 04:13:25 2005 +0000

description:
split out lfs_itimes(). It is used in fsck_lfs.

diffstat:

 sys/ufs/files.ufs        |    3 +-
 sys/ufs/lfs/lfs.h        |    7 ++-
 sys/ufs/lfs/lfs_extern.h |    4 +-
 sys/ufs/lfs/lfs_itimes.c |  119 +++++++++++++++++++++++++++++++++++++++++++++++
 sys/ufs/lfs/lfs_vnops.c  |   55 +--------------------
 5 files changed, 130 insertions(+), 58 deletions(-)

diffs (253 lines):

diff -r 51b82cd04b82 -r d453d1a44986 sys/ufs/files.ufs
--- a/sys/ufs/files.ufs Tue Sep 13 03:23:34 2005 +0000
+++ b/sys/ufs/files.ufs Tue Sep 13 04:13:25 2005 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.ufs,v 1.11 2005/08/28 19:37:58 thorpej Exp $
+#      $NetBSD: files.ufs,v 1.12 2005/09/13 04:13:25 christos Exp $
 
 deffs                                  FFS
 deffs                                  EXT2FS
@@ -40,6 +40,7 @@
 file   ufs/lfs/lfs_cksum.c             lfs
 file   ufs/lfs/lfs_debug.c             lfs
 file   ufs/lfs/lfs_inode.c             lfs
+file   ufs/lfs/lfs_itimes.c            lfs
 file   ufs/lfs/lfs_segment.c           lfs
 file   ufs/lfs/lfs_subr.c              lfs
 file   ufs/lfs/lfs_syscalls.c          lfs
diff -r 51b82cd04b82 -r d453d1a44986 sys/ufs/lfs/lfs.h
--- a/sys/ufs/lfs/lfs.h Tue Sep 13 03:23:34 2005 +0000
+++ b/sys/ufs/lfs/lfs.h Tue Sep 13 04:13:25 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lfs.h,v 1.93 2005/09/12 16:24:41 christos Exp $        */
+/*     $NetBSD: lfs.h,v 1.94 2005/09/13 04:13:25 christos Exp $        */
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -1081,4 +1081,9 @@
 # define ASSERT_MAYBE_SEGLOCK(x)
 #endif /* !notyet */
 
+__BEGIN_DECLS
+void lfs_itimes(struct inode *, const struct timespec *,
+    const struct timespec *, const struct timespec *);
+__END_DECLS
+
 #endif /* !_UFS_LFS_LFS_H_ */
diff -r 51b82cd04b82 -r d453d1a44986 sys/ufs/lfs/lfs_extern.h
--- a/sys/ufs/lfs/lfs_extern.h  Tue Sep 13 03:23:34 2005 +0000
+++ b/sys/ufs/lfs/lfs_extern.h  Tue Sep 13 04:13:25 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lfs_extern.h,v 1.70 2005/09/12 16:24:41 christos Exp $ */
+/*     $NetBSD: lfs_extern.h,v 1.71 2005/09/13 04:13:25 christos Exp $ */
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -236,8 +236,6 @@
 /* lfs_vnops.c */
 void lfs_mark_vnode(struct vnode *);
 void lfs_unmark_vnode(struct vnode *);
-void lfs_itimes(struct inode *, const struct timespec *,
-    const struct timespec *, const struct timespec *);
 int lfs_gop_alloc(struct vnode *, off_t, off_t, int, struct ucred *);
 void lfs_gop_size(struct vnode *, off_t, off_t *, int);
 int lfs_putpages_ext(void *, int);
diff -r 51b82cd04b82 -r d453d1a44986 sys/ufs/lfs/lfs_itimes.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/ufs/lfs/lfs_itimes.c  Tue Sep 13 04:13:25 2005 +0000
@@ -0,0 +1,119 @@
+/*     $NetBSD: lfs_itimes.c,v 1.1 2005/09/13 04:13:26 christos Exp $  */
+
+/*-
+ * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Konrad E. Schroder <perseant%hhhh.org@localhost>.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the NetBSD
+ *     Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: lfs_itimes.c,v 1.1 2005/09/13 04:13:26 christos Exp $");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/time.h>
+#include <sys/ucred.h>
+#include <sys/mount.h>
+#include <sys/buf.h>
+
+#include <ufs/ufs/inode.h>
+
+#ifndef _KERNEL
+#include "bufcache.h"
+#include "vnode.h"
+#include "lfs_user.h"
+#define vnode uvnode
+#define buf ubuf
+#else
+#include <ufs/lfs/lfs_extern.h>
+#endif
+
+#include <ufs/lfs/lfs.h>
+
+void
+lfs_itimes(struct inode *ip, const struct timespec *acc,
+    const struct timespec *mod, const struct timespec *cre)
+{
+#ifdef _KERNEL
+       struct timespec *ts = NULL, tsb;
+
+       KASSERT(ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_UPDATE | IN_MODIFY));
+#endif
+
+       if (ip->i_flag & IN_ACCESS) {
+#ifdef _KERNEL
+               if (acc == NULL)
+                       acc = ts == NULL ? (ts = nanotime(&tsb)) : ts;
+#endif
+               ip->i_ffs1_atime = acc->tv_sec;
+               ip->i_ffs1_atimensec = acc->tv_nsec;
+               if (ip->i_lfs->lfs_version > 1) {
+                       struct lfs *fs = ip->i_lfs;
+                       struct buf *ibp;
+                       IFILE *ifp;
+
+                       LFS_IENTRY(ifp, ip->i_lfs, ip->i_number, ibp);
+                       ifp->if_atime_sec = acc->tv_sec;
+                       ifp->if_atime_nsec = acc->tv_nsec;
+                       LFS_BWRITE_LOG(ibp);
+                       simple_lock(&fs->lfs_interlock);
+                       fs->lfs_flags |= LFS_IFDIRTY;
+                       simple_unlock(&fs->lfs_interlock);
+               } else {
+                       LFS_SET_UINO(ip, IN_ACCESSED);
+               }
+       }
+       if (ip->i_flag & (IN_CHANGE | IN_UPDATE | IN_MODIFY)) {
+               if (ip->i_flag & (IN_UPDATE | IN_MODIFY)) {
+#ifdef _KERNEL
+                       if (mod == NULL)
+                               mod = ts == NULL ? (ts = nanotime(&tsb)) : ts;
+#endif
+                       ip->i_ffs1_mtime = mod->tv_sec;
+                       ip->i_ffs1_mtimensec = mod->tv_nsec;
+                       ip->i_modrev++;
+               }
+               if (ip->i_flag & (IN_CHANGE | IN_MODIFY)) {
+#ifdef _KERNEL
+                       if (cre == NULL)
+                               cre = ts == NULL ? (ts = nanotime(&tsb)) : ts;
+#endif
+                       ip->i_ffs1_ctime = cre->tv_sec;
+                       ip->i_ffs1_ctimensec = cre->tv_nsec;
+               }
+               if (ip->i_flag & (IN_CHANGE | IN_UPDATE))
+                       LFS_SET_UINO(ip, IN_MODIFIED);
+               if (ip->i_flag & IN_MODIFY)
+                       LFS_SET_UINO(ip, IN_ACCESSED);
+       }
+       ip->i_flag &= ~(IN_ACCESS | IN_CHANGE | IN_UPDATE | IN_MODIFY);
+}
diff -r 51b82cd04b82 -r d453d1a44986 sys/ufs/lfs/lfs_vnops.c
--- a/sys/ufs/lfs/lfs_vnops.c   Tue Sep 13 03:23:34 2005 +0000
+++ b/sys/ufs/lfs/lfs_vnops.c   Tue Sep 13 04:13:25 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lfs_vnops.c,v 1.154 2005/09/12 16:24:41 christos Exp $ */
+/*     $NetBSD: lfs_vnops.c,v 1.155 2005/09/13 04:13:26 christos Exp $ */
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.154 2005/09/12 16:24:41 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.155 2005/09/13 04:13:26 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -268,57 +268,6 @@
 
 static int check_dirty(struct lfs *, struct vnode *, off_t, off_t, off_t, int, int);
 
-void
-lfs_itimes(struct inode *ip, const struct timespec *acc,
-    const struct timespec *mod, const struct timespec *cre)
-{
-       struct timespec *ts = NULL, tsb;
-
-       KASSERT(ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_UPDATE | IN_MODIFY));
-
-       if (ip->i_flag & IN_ACCESS) {
-               if (acc == NULL)
-                       acc = ts == NULL ? (ts = nanotime(&tsb)) : ts;
-               ip->i_ffs1_atime = acc->tv_sec;
-               ip->i_ffs1_atimensec = acc->tv_nsec;
-               if (ip->i_lfs->lfs_version > 1) {
-                       struct lfs *fs = ip->i_lfs;
-                       struct buf *ibp;
-                       IFILE *ifp;
-
-                       LFS_IENTRY(ifp, ip->i_lfs, ip->i_number, ibp);
-                       ifp->if_atime_sec = acc->tv_sec;
-                       ifp->if_atime_nsec = acc->tv_nsec;
-                       LFS_BWRITE_LOG(ibp);
-                       simple_lock(&fs->lfs_interlock);
-                       fs->lfs_flags |= LFS_IFDIRTY;
-                       simple_unlock(&fs->lfs_interlock);
-               } else {
-                       LFS_SET_UINO(ip, IN_ACCESSED);
-               }
-       }
-       if (ip->i_flag & (IN_CHANGE | IN_UPDATE | IN_MODIFY)) {
-               if (ip->i_flag & (IN_UPDATE | IN_MODIFY)) {
-                       if (mod == NULL)
-                               mod = ts == NULL ? (ts = nanotime(&tsb)) : ts;
-                       ip->i_ffs1_mtime = mod->tv_sec;
-                       ip->i_ffs1_mtimensec = mod->tv_nsec;
-                       ip->i_modrev++;
-               }
-               if (ip->i_flag & (IN_CHANGE | IN_MODIFY)) {
-                       if (cre == NULL)
-                               cre = ts == NULL ? (ts = nanotime(&tsb)) : ts;
-                       ip->i_ffs1_ctime = cre->tv_sec;
-                       ip->i_ffs1_ctimensec = cre->tv_nsec;
-               }
-               if (ip->i_flag & (IN_CHANGE | IN_UPDATE))
-                       LFS_SET_UINO(ip, IN_MODIFIED);
-               if (ip->i_flag & IN_MODIFY)
-                       LFS_SET_UINO(ip, IN_ACCESSED);
-       }
-       ip->i_flag &= ~(IN_ACCESS | IN_CHANGE | IN_UPDATE | IN_MODIFY);
-}
-
 #define        LFS_READWRITE
 #include <ufs/ufs/ufs_readwrite.c>
 #undef LFS_READWRITE



Home | Main Index | Thread Index | Old Index