- struct som_attrs *attrs = (struct som_attrs *)buf;
- ENTRY;
-
- if (rc == 0 || rc == -ENODATA)
- /* no SOM attributes */
- RETURN(-ENODATA);
-
- if (rc < 0)
- /* error hit while fetching xattr */
- RETURN(rc);
-
- /* check SOM compatibility */
- if (attrs->som_incompat & ~cpu_to_le32(SOM_INCOMPAT_SUPP))
- RETURN(-ENODATA);
-
- /* unpack SOM attributes */
- lustre_som_swab(attrs);
-
- /* fill in-memory msd structure */
- msd->msd_compat = attrs->som_compat;
- msd->msd_incompat = attrs->som_incompat;
- msd->msd_ioepoch = attrs->som_ioepoch;
- msd->msd_size = attrs->som_size;
- msd->msd_blocks = attrs->som_blocks;
- msd->msd_mountid = attrs->som_mountid;
-
- RETURN(0);
+ struct lustre_mdt_attrs *lma = &loa->loa_lma;
+#ifdef __BIG_ENDIAN
+ __u32 compat = lma->lma_compat;
+#endif
+
+ lustre_lma_swab(lma);
+#ifdef __BIG_ENDIAN
+ if (to_cpu)
+ compat = lma->lma_compat;
+
+ if (compat & LMAC_STRIPE_INFO) {
+ lustre_swab_lu_fid(&loa->loa_parent_fid);
+ __swab32s(&loa->loa_stripe_size);
+ }
+ if (compat & LMAC_COMP_INFO) {
+ __swab32s(&loa->loa_comp_id);
+ __swab64s(&loa->loa_comp_start);
+ __swab64s(&loa->loa_comp_end);
+ }
+#endif