Merge branch 'next/cleanup3' of git://git.linaro.org/people/arnd/arm-soc
[pandora-kernel.git] / fs / exofs / exofs.h
index f4e442e..51f4b4c 100644 (file)
 /* u64 has problems with printk this will cast it to unsigned long long */
 #define _LLU(x) (unsigned long long)(x)
 
+struct exofs_dev {
+       struct ore_dev ored;
+       unsigned did;
+};
 /*
  * our extension to the in-memory superblock
  */
@@ -66,13 +70,9 @@ struct exofs_sb_info {
        u32             s_next_generation;      /* next gen # to use          */
        atomic_t        s_curr_pending;         /* number of pending commands */
 
-       struct pnfs_osd_data_map data_map;      /* Default raid to use
-                                                * FIXME: Needed ?
-                                                */
        struct ore_layout       layout;         /* Default files layout       */
        struct ore_comp one_comp;               /* id & cred of partition id=0*/
-       struct ore_components comps;            /* comps for the partition    */
-       struct osd_dev  *_min_one_dev[1];       /* Place holder for one dev   */
+       struct ore_components oc;               /* comps for the partition    */
 };
 
 /*
@@ -86,7 +86,7 @@ struct exofs_i_info {
        uint32_t       i_dir_start_lookup; /* which page to start lookup      */
        uint64_t       i_commit_size;      /* the object's written length     */
        struct ore_comp one_comp;          /* same component for all devices  */
-       struct ore_components comps;       /* inode view of the device table  */
+       struct ore_components oc;          /* inode view of the device table  */
 };
 
 static inline osd_id exofs_oi_objno(struct exofs_i_info *oi)
@@ -207,7 +207,7 @@ extern const struct inode_operations exofs_fast_symlink_inode_operations;
  * bigger and that the device table repeats twice.
  * See: exofs_read_lookup_dev_table()
  */
-static inline void exofs_init_comps(struct ore_components *comps,
+static inline void exofs_init_comps(struct ore_components *oc,
                                    struct ore_comp *one_comp,
                                    struct exofs_sb_info *sbi, osd_id oid)
 {
@@ -217,13 +217,15 @@ static inline void exofs_init_comps(struct ore_components *comps,
        one_comp->obj.id = oid;
        exofs_make_credential(one_comp->cred, &one_comp->obj);
 
-       comps->numdevs = sbi->comps.numdevs;
-       comps->single_comp = EC_SINGLE_COMP;
-       comps->comps = one_comp;
+       oc->first_dev = 0;
+       oc->numdevs = sbi->layout.group_width * sbi->layout.mirrors_p1 *
+                                                       sbi->layout.group_count;
+       oc->single_comp = EC_SINGLE_COMP;
+       oc->comps = one_comp;
 
        /* Round robin device view of the table */
-       first_dev = (dev_mod * sbi->layout.mirrors_p1) % sbi->comps.numdevs;
-       comps->ods = sbi->comps.ods + first_dev;
+       first_dev = (dev_mod * sbi->layout.mirrors_p1) % sbi->oc.numdevs;
+       oc->ods = &sbi->oc.ods[first_dev];
 }
 
 #endif