Whamcloud - gitweb
file xnu_types.h was initially added on branch b_port_step.
[fs/lustre-release.git] / lustre / kernel_patches / patches / ext3-extents-in-ea-exports-symbol-2.6.7.patch
1 Index: linux-2.6.7/fs/ext3/extents-in-ea.c
2 ===================================================================
3 --- linux-2.6.7.orig/fs/ext3/extents-in-ea.c    2004-08-13 08:58:28.000000000 +0800
4 +++ linux-2.6.7/fs/ext3/extents-in-ea.c 2004-08-13 08:58:34.000000000 +0800
5 @@ -115,7 +115,7 @@
6         kfree(root);
7         return err;
8  }
9 -
10 +EXPORT_SYMBOL(ext3_init_tree_in_ea);
11  static int
12  ext3_ext_in_ea_new_extent(struct ext3_extents_tree *tree,
13                         struct ext3_ext_path *path,
14 @@ -173,7 +173,7 @@
15         }
16         return err;
17  }
18 -
19 +EXPORT_SYMBOL(ext3_ext_in_ea_alloc_space);
20  int ext3_ext_in_ea_remove_space(struct inode *inode, int name_index,
21                                 const char *eaname, unsigned long from,
22                                 unsigned long num)
23 @@ -188,7 +188,7 @@
24         }
25         return err;
26  }
27 -
28 +EXPORT_SYMBOL(ext3_ext_in_ea_remove_space);
29  int ext3_ext_in_ea_presence(struct inode *inode, int name_index,
30                                 const char *eaname, unsigned long block)
31  {
32 @@ -331,3 +331,49 @@
33         return err;
34  }
35  
36 +EXPORT_SYMBOL(ext3_ext_in_ea_ioctl);
37 +int ext3_ext_in_ea_get_extents(struct inode *inode, int name_index,
38 +                              const char *eaname, char **buf, int *size)
39 +{
40 +       /*allocate the buffer and put the extents there*/
41 +       struct ext3_extents_tree tree;
42 +       struct ext3_extent_buf ex_buf;
43 +       int    err;
44 +       err = ext3_init_tree_in_ea_desc(&tree, inode, name_index, eaname);
45 +       if (err)
46 +               goto out;
47 +       ex_buf.cur = *buf;
48 +       ex_buf.err = 0;
49 +       tree.private = &ex_buf;
50 +       ex_buf.start = 0;
51 +       
52 +       err = ext3_ext_walk_space(&tree, ex_buf.start, EXT_MAX_BLOCK,
53 +                                               ext3_ext_store_extent_cb);
54 +       if (err == 0)
55 +               err = ex_buf.err;
56 +       ext3_release_tree_in_ea_desc(&tree);
57 +out:
58 +       return err;
59 +}
60 +EXPORT_SYMBOL(ext3_ext_in_ea_get_extents);
61 +int ext3_ext_in_ea_get_extents_num(struct inode *inode, int name_index,
62 +                                  const char *eaname, int *size)
63 +{
64 +       struct ext3_extents_tree tree;
65 +       struct ext3_extent_tree_stats stats_buf;
66 +       int    err = 0, ext_num;
67 +       /*get extents number*/
68 +       err = ext3_init_tree_in_ea_desc(&tree, inode, name_index, eaname);
69 +       if (err)
70 +               return err;
71 +       tree.private = &stats_buf;
72 +       err = ext3_ext_walk_space(&tree, 0, EXT_MAX_BLOCK,
73 +                                 ext3_ext_collect_stats_cb);
74 +       ext_num = stats_buf.extents_num;
75 +       ext3_release_tree_in_ea_desc(&tree);
76 +
77 +       *size = ext_num * sizeof(struct ext3_extent);   
78 +
79 +       return err;     
80 +}
81 +EXPORT_SYMBOL(ext3_ext_in_ea_get_extents_num);
82 Index: linux-2.6.7/fs/ext3/ioctl.c
83 ===================================================================
84 --- linux-2.6.7.orig/fs/ext3/ioctl.c    2004-08-13 08:58:28.000000000 +0800
85 +++ linux-2.6.7/fs/ext3/ioctl.c 2004-08-13 08:58:34.000000000 +0800
86 @@ -11,6 +11,7 @@
87  #include <linux/jbd.h>
88  #include <linux/ext3_fs.h>
89  #include <linux/ext3_jbd.h>
90 +#include <linux/ext3_extents.h>
91  #include <linux/time.h>
92  #include <asm/uaccess.h>
93