Source-Changes-HG archive

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

[src/trunk]: src/sys/ufs Apparently we also need to cut and paste ffs_snapgon...



details:   https://anonhg.NetBSD.org/src/rev/111837f971d1
branches:  trunk
changeset: 787203:111837f971d1
user:      dholland <dholland%NetBSD.org@localhost>
date:      Thu Jun 06 00:50:51 2013 +0000

description:
Apparently we also need to cut and paste ffs_snapgone() in order to be
able to link the ufs code.

Instead of actually cutting and pasting it (as it depends on ffs-only
things) implement it as panic. Probably we'll be able to demonstrate
later that it's unreachable.

XXX: Someone should add snapgone to struct ufs_ops in ufs/ufsmount.h,
XXX: and fix ufs/ufs_lookup.c to not hardwire ffs.

diffstat:

 sys/ufs/files.ufs           |   3 +-
 sys/ufs/lfs/ulfs_extern.h   |   4 +-
 sys/ufs/lfs/ulfs_lookup.c   |   8 ++--
 sys/ufs/lfs/ulfs_snapshot.c |  90 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 98 insertions(+), 7 deletions(-)

diffs (165 lines):

diff -r f1a7c812e3db -r 111837f971d1 sys/ufs/files.ufs
--- a/sys/ufs/files.ufs Thu Jun 06 00:49:28 2013 +0000
+++ b/sys/ufs/files.ufs Thu Jun 06 00:50:51 2013 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.ufs,v 1.30 2013/06/06 00:46:40 dholland Exp $
+#      $NetBSD: files.ufs,v 1.31 2013/06/06 00:50:51 dholland Exp $
 
 deffs                                  FFS
 deffs                                  EXT2FS
@@ -83,6 +83,7 @@
 file   ufs/lfs/ulfs_quota1_subr.c      lfs
 file   ufs/lfs/ulfs_quota2_subr.c      lfs & lfs_quota2
 file   ufs/lfs/ulfs_rename.c           lfs
+file   ufs/lfs/ulfs_snapshot.c         lfs
 file   ufs/lfs/ulfs_vfsops.c           lfs
 file   ufs/lfs/ulfs_vnops.c            lfs
 file   ufs/lfs/ulfs_wapbl.c            lfs
diff -r f1a7c812e3db -r 111837f971d1 sys/ufs/lfs/ulfs_extern.h
--- a/sys/ufs/lfs/ulfs_extern.h Thu Jun 06 00:49:28 2013 +0000
+++ b/sys/ufs/lfs/ulfs_extern.h Thu Jun 06 00:50:51 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ulfs_extern.h,v 1.3 2013/06/06 00:49:28 dholland Exp $ */
+/*     $NetBSD: ulfs_extern.h,v 1.4 2013/06/06 00:50:51 dholland Exp $ */
 /*  from NetBSD: ufs_extern.h,v 1.72 2012/05/09 00:21:18 riastradh Exp  */
 
 /*-
@@ -204,7 +204,7 @@
  * Snapshot function prototypes.
  */
 
-void   lfs_snapgone(struct inode *);
+void   ulfs_snapgone(struct inode *);
 
 __END_DECLS
 
diff -r f1a7c812e3db -r 111837f971d1 sys/ufs/lfs/ulfs_lookup.c
--- a/sys/ufs/lfs/ulfs_lookup.c Thu Jun 06 00:49:28 2013 +0000
+++ b/sys/ufs/lfs/ulfs_lookup.c Thu Jun 06 00:50:51 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ulfs_lookup.c,v 1.5 2013/06/06 00:49:28 dholland Exp $ */
+/*     $NetBSD: ulfs_lookup.c,v 1.6 2013/06/06 00:50:51 dholland Exp $ */
 /*  from NetBSD: ufs_lookup.c,v 1.122 2013/01/22 09:39:18 dholland Exp  */
 
 /*
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.5 2013/06/06 00:49:28 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.6 2013/06/06 00:50:51 dholland Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_lfs.h"
@@ -1151,7 +1151,7 @@
         */
        if (ip != 0 && (ip->i_flags & SF_SNAPSHOT) != 0 &&
            ip->i_nlink == 0)
-               lfs_snapgone(ip);
+               ulfs_snapgone(ip);
        ULFS_WAPBL_UPDATE(dvp, NULL, NULL, 0);
        return (error);
 }
@@ -1200,7 +1200,7 @@
         * when last open reference goes away.
         */
        if ((oip->i_flags & SF_SNAPSHOT) != 0 && oip->i_nlink == 0)
-               lfs_snapgone(oip);
+               ulfs_snapgone(oip);
        ULFS_WAPBL_UPDATE(vdp, NULL, NULL, UPDATE_DIROP);
        return (error);
 }
diff -r f1a7c812e3db -r 111837f971d1 sys/ufs/lfs/ulfs_snapshot.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/ufs/lfs/ulfs_snapshot.c       Thu Jun 06 00:50:51 2013 +0000
@@ -0,0 +1,90 @@
+/*     $NetBSD: ulfs_snapshot.c,v 1.1 2013/06/06 00:50:51 dholland Exp $       */
+/*  from ffs_snapshot.c,v 1.122 2013/05/07 09:40:54 hannken Exp  */
+
+/*
+ * Copyright 2000 Marshall Kirk McKusick. All Rights Reserved.
+ *
+ * Further information about snapshots can be obtained from:
+ *
+ *     Marshall Kirk McKusick          http://www.mckusick.com/softdep/
+ *     1614 Oxford Street              mckusick%mckusick.com@localhost
+ *     Berkeley, CA 94709-1608         +1-510-843-9542
+ *     USA
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY MARSHALL KIRK MCKUSICK ``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 MARSHALL KIRK MCKUSICK 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.
+ *
+ *     @(#)ffs_snapshot.c      8.11 (McKusick) 7/23/00
+ *
+ *     from FreeBSD: ffs_snapshot.c,v 1.79 2004/02/13 02:02:06 kuriyama Exp
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: ulfs_snapshot.c,v 1.1 2013/06/06 00:50:51 dholland Exp $");
+
+#if defined(_KERNEL_OPT)
+#include "opt_lfs.h"
+#endif
+
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/systm.h>
+#include <sys/conf.h>
+#include <sys/buf.h>
+#include <sys/proc.h>
+#include <sys/namei.h>
+#include <sys/sched.h>
+#include <sys/stat.h>
+#include <sys/malloc.h>
+#include <sys/mount.h>
+#include <sys/resource.h>
+#include <sys/resourcevar.h>
+#include <sys/vnode.h>
+#include <sys/kauth.h>
+#include <sys/fstrans.h>
+#include <sys/wapbl.h>
+
+#include <miscfs/specfs/specdev.h>
+
+#include <ufs/lfs/ulfs_quotacommon.h>
+#include <ufs/lfs/ulfsmount.h>
+#include <ufs/lfs/ulfs_inode.h>
+#include <ufs/lfs/ulfs_extern.h>
+#include <ufs/lfs/ulfs_bswap.h>
+#include <ufs/lfs/ulfs_wapbl.h>
+
+#include <ufs/lfs/lfs.h>
+#include <ufs/lfs/lfs_extern.h>
+
+#include <uvm/uvm.h>
+
+/*
+ * Decrement extra reference on snapshot when last name is removed.
+ * It will not be freed until the last open reference goes away.
+ */
+void
+ulfs_snapgone(struct inode *ip)
+{
+       (void)ip;
+       /* just panic */
+       panic("reached ulfs_snapgone\n");
+}



Home | Main Index | Thread Index | Old Index