diff options
-rw-r--r-- | sys/conf/options | 5 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_snapshot.c | 58 |
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 |