diff --git a/lustre/include/linux/lustre_lib.h b/lustre/include/linux/lustre_lib.h
index 968a3108039010b58b41f9d52d939a69ee079bf5..f354ecb6d583337ed4a95e3d802d2bb686e1f03b 100644
--- a/lustre/include/linux/lustre_lib.h
+++ b/lustre/include/linux/lustre_lib.h
@@ -471,6 +471,9 @@ static inline void obd_ioctl_freedata(char *buf, int len)
 #define OBD_IOC_COBD_CON               _IOWR('f', 220, long)
 #define OBD_IOC_COBD_COFF              _IOWR('f', 221, long)
 #define OBD_IOC_COBD_CFLUSH            _IOWR('f', 222, long)
+
+#define OBD_IOC_SNAP_ADD               _IOWR('f', 230, long)
+
 /* XXX _IOWR('f', 250, long) has been defined in
  * portals/include/linux/kp30.h for debug, don't use it
  */
diff --git a/lustre/include/linux/lustre_smfs.h b/lustre/include/linux/lustre_smfs.h
index 68cf9e2133e937ef980135a31483022abfb5d6d0..77949c7616e8ae69361d63a881b60c71914810da 100644
--- a/lustre/include/linux/lustre_smfs.h
+++ b/lustre/include/linux/lustre_smfs.h
@@ -339,6 +339,7 @@ static inline void duplicate_sb(struct super_block *dst_sb,
         dst_sb->s_magic = src_sb->s_magic;
         dst_sb->s_blocksize_bits = src_sb->s_blocksize_bits;
         dst_sb->s_maxbytes = src_sb->s_maxbytes;
+        dst_sb->s_flags = src_sb->s_flags;
 }
 
 static inline void d_unalloc(struct dentry *dentry)
diff --git a/lustre/lvfs/fsfilt_smfs.c b/lustre/lvfs/fsfilt_smfs.c
index f3f46752c8add070b65263dbaacc9a6e3fedc464..98f138321e621123d31cfe54e3a99b27ccf607ff 100644
--- a/lustre/lvfs/fsfilt_smfs.c
+++ b/lustre/lvfs/fsfilt_smfs.c
@@ -675,6 +675,9 @@ static int fsfilt_smfs_setup(struct obd_device *obd, struct super_block *sb)
         csb = S2CSB(sb);
         if (cache_fsfilt->fs_setup) 
                 rc = cache_fsfilt->fs_setup(obd, csb);
+        
+        duplicate_sb(sb, csb);
+        
         RETURN(rc);
 }
 
diff --git a/lustre/utils/obdctl.h b/lustre/utils/obdctl.h
index 31ed6d8682b3758a2bdf1f5b8fa5041971e5f412..300465109361cfe463d1caf1927f042cf9e3e6dc 100644
--- a/lustre/utils/obdctl.h
+++ b/lustre/utils/obdctl.h
@@ -90,6 +90,7 @@ int jt_llog_check(int argc, char **argv);
 int jt_obd_reint_sync(int argc, char **argv);
 int jt_obd_cache_on(int argc, char **argv);
 int jt_obd_cache_off(int argc, char **argv);
+int jt_obd_snap_add(int argc, char **argv);
 
 int lcfg_ioctl(char * func, int dev_id, struct lustre_cfg *lcfg);
 int parse_devname(char *func, char *name);