Whamcloud - gitweb
LU-1812 ldiskfs: Add kernel patch series for SLES11SP2
[fs/lustre-release.git] / ldiskfs / kernel_patches / patches / sles11sp2 / export-ext4-3.0.patch
diff --git a/ldiskfs/kernel_patches/patches/sles11sp2/export-ext4-3.0.patch b/ldiskfs/kernel_patches/patches/sles11sp2/export-ext4-3.0.patch
new file mode 100644 (file)
index 0000000..74bf0a4
--- /dev/null
@@ -0,0 +1,200 @@
+---
+ fs/ext4/balloc.c       |    1 +
+ fs/ext4/ext4.h         |    2 ++
+ fs/ext4/ext4_extents.h |    9 +++++++++
+ fs/ext4/ext4_jbd2.c    |    2 ++
+ fs/ext4/extents.c      |   23 ++++++++++++++++-------
+ fs/ext4/ialloc.c       |    3 ++-
+ fs/ext4/inode.c        |    1 +
+ fs/ext4/mballoc.c      |    4 ++++
+ fs/ext4/super.c        |    9 +++++++++
+ 9 files changed, 46 insertions(+), 8 deletions(-)
+
+--- a/fs/ext4/balloc.c
++++ b/fs/ext4/balloc.c
+@@ -231,6 +231,7 @@ struct ext4_group_desc * ext4_get_group_
+               *bh = sbi->s_group_desc[group_desc];
+       return desc;
+ }
++EXPORT_SYMBOL(ext4_get_group_desc);
+
+ static int ext4_valid_block_bitmap(struct super_block *sb,
+                                       struct ext4_group_desc *desc,
+--- a/fs/ext4/ext4.h
++++ b/fs/ext4/ext4.h
+@@ -1783,6 +1783,8 @@ extern struct inode * ext4_orphan_get(st
+ extern unsigned long ext4_count_free_inodes(struct super_block *);
+ extern unsigned long ext4_count_dirs(struct super_block *);
+ extern void ext4_check_inodes_bitmap(struct super_block *);
++extern struct buffer_head *ext4_read_inode_bitmap(struct super_block *sb,
++                                                ext4_group_t block_group);
+ extern void ext4_mark_bitmap_end(int start_bit, int end_bit, char *bitmap);
+ extern int ext4_init_inode_table(struct super_block *sb,
+                                ext4_group_t group, int barrier);
+--- a/fs/ext4/ext4_extents.h
++++ b/fs/ext4/ext4_extents.h
+@@ -290,5 +290,14 @@ extern struct ext4_ext_path *ext4_ext_fi
+                                                       struct ext4_ext_path *);
+ extern void ext4_ext_drop_refs(struct ext4_ext_path *);
+ extern int ext4_ext_check_inode(struct inode *inode);
++extern int ext4_ext_search_right(struct inode *inode,
++                               struct ext4_ext_path *path,
++                               ext4_lblk_t *logical, ext4_fsblk_t *phys);
++extern int ext4_ext_search_left(struct inode *inode,
++                              struct ext4_ext_path *path,
++                              ext4_lblk_t *logical, ext4_fsblk_t *phys);
++extern int ext4_ext_walk_space(struct inode *inode, ext4_lblk_t block,
++                              ext4_lblk_t num, ext_prepare_callback func,
++                              void *cbdata);
+ #endif /* _EXT4_EXTENTS */
+
+--- a/fs/ext4/ext4_jbd2.c
++++ b/fs/ext4/ext4_jbd2.c
+@@ -19,6 +19,7 @@ int __ext4_journal_get_write_access(cons
+       }
+       return err;
+ }
++EXPORT_SYMBOL(__ext4_journal_get_write_access);
+
+ /*
+  * The ext4 forget function must perform a revoke if we are freeing data
+@@ -150,3 +151,4 @@ int __ext4_handle_dirty_super(const char
+               sb->s_dirt = 1;
+       return err;
+ }
++EXPORT_SYMBOL(__ext4_handle_dirty_metadata);
+--- a/fs/ext4/extents.c
++++ b/fs/ext4/extents.c
+@@ -1236,9 +1236,9 @@ out:
+  * returns 0 at @phys
+  * return value contains 0 (success) or error code
+  */
+-static int ext4_ext_search_left(struct inode *inode,
+-                              struct ext4_ext_path *path,
+-                              ext4_lblk_t *logical, ext4_fsblk_t *phys)
++int ext4_ext_search_left(struct inode *inode,
++                       struct ext4_ext_path *path,
++                       ext4_lblk_t *logical, ext4_fsblk_t *phys)
+ {
+       struct ext4_extent_idx *ix;
+       struct ext4_extent *ex;
+@@ -1301,9 +1301,9 @@ static int ext4_ext_search_left(struct i
+  * returns 0 at @phys
+  * return value contains 0 (success) or error code
+  */
+-static int ext4_ext_search_right(struct inode *inode,
+-                               struct ext4_ext_path *path,
+-                               ext4_lblk_t *logical, ext4_fsblk_t *phys)
++int ext4_ext_search_right(struct inode *inode,
++                        struct ext4_ext_path *path,
++                        ext4_lblk_t *logical, ext4_fsblk_t *phys)
+ {
+       struct buffer_head *bh = NULL;
+       struct ext4_extent_header *eh;
+@@ -1878,7 +1878,7 @@ cleanup:
+       return err;
+ }
+
+-static int ext4_ext_walk_space(struct inode *inode, ext4_lblk_t block,
++extern int ext4_ext_walk_space(struct inode *inode, ext4_lblk_t block,
+                              ext4_lblk_t num, ext_prepare_callback func,
+                              void *cbdata)
+ {
+@@ -4397,3 +4397,12 @@ int ext4_fiemap(struct inode *inode, str
+
+       return error;
+ }
++
++EXPORT_SYMBOL(ext4_ext_search_right);
++EXPORT_SYMBOL(ext4_ext_search_left);
++EXPORT_SYMBOL(ext4_ext_insert_extent);
++EXPORT_SYMBOL(ext4_mb_new_blocks);
++EXPORT_SYMBOL(ext4_mark_inode_dirty);
++EXPORT_SYMBOL(ext4_ext_walk_space);
++EXPORT_SYMBOL(ext4_ext_find_extent);
++EXPORT_SYMBOL(ext4_ext_drop_refs);
+--- a/fs/ext4/ialloc.c
++++ b/fs/ext4/ialloc.c
+@@ -98,7 +98,7 @@ static unsigned ext4_init_inode_bitmap(s
+  *
+  * Return buffer_head of bitmap on success or NULL.
+  */
+-static struct buffer_head *
++struct buffer_head *
+ ext4_read_inode_bitmap(struct super_block *sb, ext4_group_t block_group)
+ {
+       struct ext4_group_desc *desc;
+@@ -163,6 +163,7 @@ ext4_read_inode_bitmap(struct super_bloc
+       }
+       return bh;
+ }
++EXPORT_SYMBOL(ext4_read_inode_bitmap);
+
+ /*
+  * NOTE! When we get the inode, we're the only people
+--- a/fs/ext4/inode.c
++++ b/fs/ext4/inode.c
+@@ -5096,6 +5096,7 @@ bad_inode:
+       iget_failed(inode);
+       return ERR_PTR(ret);
+ }
++EXPORT_SYMBOL(ext4_iget);
+
+ static int ext4_inode_blocks_set(handle_t *handle,
+                               struct ext4_inode *raw_inode,
+--- a/fs/ext4/mballoc.c
++++ b/fs/ext4/mballoc.c
+@@ -3852,6 +3852,7 @@ repeat:
+               call_rcu(&(pa)->u.pa_rcu, ext4_mb_pa_callback);
+       }
+ }
++EXPORT_SYMBOL(ext4_discard_preallocations);
+
+ #ifdef CONFIG_EXT4_DEBUG
+ static void ext4_mb_show_ac(struct ext4_allocation_context *ac)
+@@ -4972,3 +4973,6 @@ int ext4_trim_fs(struct super_block *sb,
+
+       return ret;
+ }
++
++EXPORT_SYMBOL(ext4_free_blocks);
++
+--- a/fs/ext4/super.c
++++ b/fs/ext4/super.c
+@@ -194,6 +194,7 @@ __u32 ext4_itable_unused_count(struct su
+               (EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT ?
+                (__u32)le16_to_cpu(bg->bg_itable_unused_hi) << 16 : 0);
+ }
++EXPORT_SYMBOL(ext4_itable_unused_count);
+
+ void ext4_block_bitmap_set(struct super_block *sb,
+                          struct ext4_group_desc *bg, ext4_fsblk_t blk)
+@@ -378,6 +379,7 @@ void ext4_journal_abort_handle(const cha
+
+       jbd2_journal_abort_handle(handle);
+ }
++EXPORT_SYMBOL(ext4_journal_abort_handle);
+
+ static void __save_error_info(struct super_block *sb, const char *func,
+                           unsigned int line)
+@@ -4272,6 +4274,7 @@ int ext4_force_commit(struct super_block
+
+       return ret;
+ }
++EXPORT_SYMBOL(ext4_force_commit);
+
+ static void ext4_write_super(struct super_block *sb)
+ {
+@@ -5208,6 +5211,12 @@ static void __exit ext4_exit_fs(void)
+       ext4_exit_pageio();
+ }
+
++EXPORT_SYMBOL(ext4_xattr_get);
++EXPORT_SYMBOL(ext4_xattr_set_handle);
++EXPORT_SYMBOL(ext4_bread);
++EXPORT_SYMBOL(ext4_journal_start_sb);
++EXPORT_SYMBOL(__ext4_journal_stop);
++
+ MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
+ MODULE_DESCRIPTION("Fourth Extended Filesystem");
+ MODULE_LICENSE("GPL");