summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-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