Module Name:    src
Committed By:   dholland
Date:           Thu Jun  6 00:50:52 UTC 2013

Modified Files:
        src/sys/ufs: files.ufs
        src/sys/ufs/lfs: ulfs_extern.h ulfs_lookup.c
Added Files:
        src/sys/ufs/lfs: ulfs_snapshot.c

Log Message:
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.


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/sys/ufs/files.ufs
cvs rdiff -u -r1.3 -r1.4 src/sys/ufs/lfs/ulfs_extern.h
cvs rdiff -u -r1.5 -r1.6 src/sys/ufs/lfs/ulfs_lookup.c
cvs rdiff -u -r0 -r1.1 src/sys/ufs/lfs/ulfs_snapshot.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/ufs/files.ufs
diff -u src/sys/ufs/files.ufs:1.30 src/sys/ufs/files.ufs:1.31
--- src/sys/ufs/files.ufs:1.30	Thu Jun  6 00:46:40 2013
+++ src/sys/ufs/files.ufs	Thu Jun  6 00:50:51 2013
@@ -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_quota2.c		lfs & lfs_qu
 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

Index: src/sys/ufs/lfs/ulfs_extern.h
diff -u src/sys/ufs/lfs/ulfs_extern.h:1.3 src/sys/ufs/lfs/ulfs_extern.h:1.4
--- src/sys/ufs/lfs/ulfs_extern.h:1.3	Thu Jun  6 00:49:28 2013
+++ src/sys/ufs/lfs/ulfs_extern.h	Thu Jun  6 00:50:51 2013
@@ -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 @@ void	ulfs_gop_markupdate(struct vnode *,
  * Snapshot function prototypes.
  */
 
-void	lfs_snapgone(struct inode *);
+void	ulfs_snapgone(struct inode *);
 
 __END_DECLS
 

Index: src/sys/ufs/lfs/ulfs_lookup.c
diff -u src/sys/ufs/lfs/ulfs_lookup.c:1.5 src/sys/ufs/lfs/ulfs_lookup.c:1.6
--- src/sys/ufs/lfs/ulfs_lookup.c:1.5	Thu Jun  6 00:49:28 2013
+++ src/sys/ufs/lfs/ulfs_lookup.c	Thu Jun  6 00:50:51 2013
@@ -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 @@ out:
 	 */
 	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 @@ ulfs_dirrewrite(struct inode *dp, off_t 
 	 * 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);
 }

Added files:

Index: src/sys/ufs/lfs/ulfs_snapshot.c
diff -u /dev/null src/sys/ufs/lfs/ulfs_snapshot.c:1.1
--- /dev/null	Thu Jun  6 00:50:52 2013
+++ src/sys/ufs/lfs/ulfs_snapshot.c	Thu Jun  6 00:50:51 2013
@@ -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		[email protected]
+ *	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");
+}

Reply via email to