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");
+}