diff --git a/lustre/kernel_patches/patches/ext3_snapfs_exports-2.4.24.patch b/lustre/kernel_patches/patches/ext3_snapfs_exports-2.4.24.patch
new file mode 100644
index 0000000000000000000000000000000000000000..fbe62a75b6d5e18611a40a54e2f356504a97d5af
--- /dev/null
+++ b/lustre/kernel_patches/patches/ext3_snapfs_exports-2.4.24.patch
@@ -0,0 +1,75 @@
+Index: linux-2.4.24/include/linux/ext3_fs.h
+===================================================================
+--- linux-2.4.24.orig/include/linux/ext3_fs.h	2004-07-04 20:23:10.000000000 +0800
++++ linux-2.4.24/include/linux/ext3_fs.h	2004-07-04 20:23:15.000000000 +0800
+@@ -446,7 +446,8 @@
+ 	__u8	s_reserved_char_pad;
+ 	__u16	s_reserved_word_pad;
+ 	__u32	s_mdsnum;
+-	__u32	s_reserved[191];	/* Padding to the end of the block */
++	__u32	s_snaptable_ino;	/*snaptable ino*/
++	__u32	s_reserved[190];	/* Padding to the end of the block */
+ };
+ 
+ #ifdef __KERNEL__
+@@ -799,7 +800,8 @@
+ extern void ext3_ext_init(struct super_block *);
+ extern void ext3_ext_release(struct super_block *);
+ extern void ext3_extents_initialize_blockmap(handle_t *, struct inode *);
+-
++extern int ext3_bmap(struct address_space *mapping, long block);
++extern int ext3_load_inode_bitmap (struct super_block * sb, unsigned int block_group);
+ #endif	/* __KERNEL__ */
+ 
+ #define EXT3_IOC_CREATE_INUM			_IOW('f', 5, long)
+Index: linux-2.4.24/fs/ext3/inode.c
+===================================================================
+--- linux-2.4.24.orig/fs/ext3/inode.c	2004-07-04 20:23:09.000000000 +0800
++++ linux-2.4.24/fs/ext3/inode.c	2004-07-04 20:23:15.000000000 +0800
+@@ -1200,7 +1200,7 @@
+  * So, if we see any bmap calls here on a modified, data-journaled file,
+  * take extra steps to flush any blocks which might be in the cache. 
+  */
+-static int ext3_bmap(struct address_space *mapping, long block)
++int ext3_bmap(struct address_space *mapping, long block)
+ {
+ 	struct inode *inode = mapping->host;
+ 	journal_t *journal;
+Index: linux-2.4.24/fs/ext3/ext3-exports.c
+===================================================================
+--- linux-2.4.24.orig/fs/ext3/ext3-exports.c	2004-07-04 20:23:10.000000000 +0800
++++ linux-2.4.24/fs/ext3/ext3-exports.c	2004-07-04 21:11:42.000000000 +0800
+@@ -26,6 +26,15 @@
+ EXPORT_SYMBOL(ext3_decode_error);
+ EXPORT_SYMBOL(__ext3_std_error);
+ 
++EXPORT_SYMBOL(ext3_bmap);
++EXPORT_SYMBOL(ext3_new_inode);
++EXPORT_SYMBOL(ext3_load_inode_bitmap);
++EXPORT_SYMBOL(ext3_orphan_add);
++EXPORT_SYMBOL(ext3_orphan_del);
++EXPORT_SYMBOL(ext3_discard_prealloc);
++EXPORT_SYMBOL(ext3_get_group_desc);
++EXPORT_SYMBOL(ext3_getblk);
++
+ int ext3_add_dir_entry (struct dentry *dentry);
+ EXPORT_SYMBOL(ext3_add_dir_entry);
+ int ext3_del_dir_entry(struct dentry *dentry);
+Index: linux-2.4.24/fs/ext3/ialloc.c
+===================================================================
+--- linux-2.4.24.orig/fs/ext3/ialloc.c	2004-07-04 20:23:09.000000000 +0800
++++ linux-2.4.24/fs/ext3/ialloc.c	2004-07-04 20:23:15.000000000 +0800
+@@ -79,6 +79,13 @@
+ 	return retval;
+ }
+ 
++/* Export load_inode_bitmap*/
++int ext3_load_inode_bitmap (struct super_block * sb,
++                           unsigned int block_group)
++{
++       return load_inode_bitmap(sb, block_group);
++}
++
+ /*
+  * load_inode_bitmap loads the inode bitmap for a blocks group
+  *