summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2006-01-06 04:44:09 +0000
committerimp <imp@FreeBSD.org>2006-01-06 04:44:09 +0000
commit4492beecb898ee22642d0faa3dad545c75b6ea59 (patch)
treefde5c8dadfbd46767567c81325d7f7f3e6af76b6
parent6d056f7e81646d633af5284304365fe626e950d8 (diff)
downloadFreeBSD-src-4492beecb898ee22642d0faa3dad545c75b6ea59.zip
FreeBSD-src-4492beecb898ee22642d0faa3dad545c75b6ea59.tar.gz
New option: NO_FFS_SNAPSHOT. I did this in p4 about the same time
that NetBSD implemented it independently of them (don't know which one was actually first). This saves about 24k for those times you don't need snapshot support (like when running off a ram disk, or in an embedded environment where size matters).
-rw-r--r--sys/conf/options5
-rw-r--r--sys/ufs/ffs/ffs_snapshot.c58
2 files changed, 63 insertions, 0 deletions
diff --git a/sys/conf/options b/sys/conf/options
index 81844ce..3ed3901 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -213,6 +213,11 @@ UDF_ICONV opt_dontuse.h
# otherwise a STUB module will be compiled in.
SOFTUPDATES opt_ffs.h
+# On small, embedded systems, it can be useful to turn off support for
+# snapshots. It saves about 30-40k for a feature that would be lightly
+# used, if it is used at all.
+NO_FFS_SNAPSHOT opt_ffs.h
+
# Enabling this option turns on support for Access Control Lists in UFS,
# which can be used to support high security configurations. Depends on
# UFS_EXTATTR.
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c
index 98a1f23..c64a1e3 100644
--- a/sys/ufs/ffs/ffs_snapshot.c
+++ b/sys/ufs/ffs/ffs_snapshot.c
@@ -66,6 +66,62 @@ __FBSDID("$FreeBSD$");
#define KERNCRED thread0.td_ucred
#define DEBUG 1
+#include "opt_ffs.h"
+
+#ifdef NO_FFS_SNAPSHOT
+int
+ffs_snapshot(mp, snapfile)
+ struct mount *mp;
+ char *snapfile;
+{
+ return (EINVAL);
+}
+
+int
+ffs_snapblkfree(fs, devvp, bno, size, inum)
+ struct fs *fs;
+ struct vnode *devvp;
+ ufs2_daddr_t bno;
+ long size;
+ ino_t inum;
+{
+ return (EINVAL);
+}
+
+void
+ffs_snapremove(vp)
+ struct vnode *vp;
+{
+}
+
+void
+ffs_snapshot_mount(mp)
+ struct mount *mp;
+{
+}
+
+void
+ffs_snapshot_unmount(mp)
+ struct mount *mp;
+{
+}
+
+void
+ffs_snapgone(ip)
+ struct inode *ip;
+{
+}
+
+int
+ffs_copyonwrite(devvp, bp)
+ struct vnode *devvp;
+ struct buf *bp;
+{
+ return (EINVAL);
+}
+
+#else
+
TAILQ_HEAD(snaphead, inode);
struct snapdata {
@@ -2171,3 +2227,5 @@ readblock(vp, bp, lbn)
g_destroy_bio(bip);
return (bp->b_error);
}
+
+#endif
OpenPOWER on IntegriCloud