Whamcloud - gitweb
Fix mis-patch in lov_connect/lov_disconnect.
[fs/lustre-release.git] / lustre / lov / lov_pack.c
index 91692ca..2594559 100644 (file)
@@ -22,7 +22,9 @@
  * (Un)packing of OST/MDS requests
  *
  */
-
+#ifndef EXPORT_SYMTAB
+# define EXPORT_SYMTAB
+#endif
 #define DEBUG_SUBSYSTEM S_LOV
 #ifndef __KERNEL__
 #include <liblustre.h>
@@ -186,7 +188,7 @@ static int lov_verify_lmm_v0(struct lov_mds_md_v0 *lmm, int lmm_bytes,
 
         if (lmm_bytes < lov_mds_md_v0_size(*stripe_count)) {
                 CERROR("LOV EA too small: %d, need %d\n",
-                       lmm_bytes, lov_mds_md_size(*stripe_count));
+                       lmm_bytes, lov_mds_md_v0_size(*stripe_count));
                 lov_dump_lmm_v0(D_WARNING, lmm);
                 return -EINVAL;
         }
@@ -238,9 +240,9 @@ static int lov_verify_lmm_v1(struct lov_mds_md_v1 *lmm, int lmm_bytes,
                 return -EINVAL;
         }
 
-        if (lmm_bytes < lov_mds_md_size(*stripe_count)) {
+        if (lmm_bytes < lov_mds_md_v1_size(*stripe_count)) {
                 CERROR("LOV EA too small: %d, need %d\n",
-                       lmm_bytes, lov_mds_md_size(*stripe_count));
+                       lmm_bytes, lov_mds_md_v1_size(*stripe_count));
                 lov_dump_lmm_v1(D_WARNING, lmm);
                 return -EINVAL;
         }
@@ -295,7 +297,7 @@ int lov_alloc_memmd(struct lov_stripe_md **lsmp, int stripe_count, int pattern)
         (*lsmp)->lsm_magic = LOV_MAGIC;
         (*lsmp)->lsm_stripe_count = stripe_count;
         (*lsmp)->lsm_maxbytes = LUSTRE_STRIPE_MAXBYTES * stripe_count;
-        (*lsmp)->lsm_xfersize = PTLRPC_MTU * stripe_count;
+        (*lsmp)->lsm_xfersize = PTLRPC_MAX_BRW_SIZE * stripe_count;
         (*lsmp)->lsm_pattern = pattern;
         (*lsmp)->lsm_oinfo[0].loi_ost_idx = ~0;
 
@@ -304,13 +306,13 @@ int lov_alloc_memmd(struct lov_stripe_md **lsmp, int stripe_count, int pattern)
 
         return lsm_size;
 }
-
+EXPORT_SYMBOL(lov_alloc_memmd);
 void lov_free_memmd(struct lov_stripe_md **lsmp)
 {
         OBD_FREE(*lsmp, lov_stripe_md_size((*lsmp)->lsm_stripe_count));
         *lsmp = NULL;
 }
-
+EXPORT_SYMBOL(lov_free_memmd);
 int lov_unpackmd_v0(struct lov_obd *lov, struct lov_stripe_md *lsm,
                     struct lov_mds_md_v0 *lmm)
 {
@@ -366,7 +368,7 @@ int lov_unpackmd_v1(struct lov_obd *lov, struct lov_stripe_md *lsm,
                 loi->loi_gr = le64_to_cpu(lmm->lmm_objects[i].l_object_gr);
                 loi->loi_ost_idx = le32_to_cpu(lmm->lmm_objects[i].l_ost_idx);
                 loi->loi_ost_gen = le32_to_cpu(lmm->lmm_objects[i].l_ost_gen);
-                if (loi->loi_ost_idx > lov->desc.ld_tgt_count) {
+                if (loi->loi_ost_idx >= lov->desc.ld_tgt_count) {
                         CERROR("OST index %d more than OST count %d\n",
                                loi->loi_ost_idx, lov->desc.ld_tgt_count);
                         lov_dump_lmm_v1(D_WARNING, lmm);
@@ -505,7 +507,7 @@ int lov_setstripe(struct obd_export *exp, struct lov_stripe_md **lsmp,
 }
 
 int lov_setea(struct obd_export *exp, struct lov_stripe_md **lsmp,
-                  struct lov_user_md *lump)
+              struct lov_user_md *lump)
 {
         int i;
         int rc;
@@ -516,25 +518,26 @@ int lov_setea(struct obd_export *exp, struct lov_stripe_md **lsmp,
         for (i = 0; i < lump->lmm_stripe_count; i++) {
                 __u32 len = sizeof(last_id);
                 oexp = lov->tgts[lump->lmm_objects[i].l_ost_idx].ltd_exp;
-                rc = obd_get_info(oexp, strlen("last_id"), "last_id", 
-                                  &len, &last_id); 
+                rc = obd_get_info(oexp, strlen("last_id"), "last_id",
+                                  &len, &last_id);
                 if (rc)
                         RETURN(rc);
-                if (last_id < lump->lmm_objects[i].l_object_id) {
+                if (lump->lmm_objects[i].l_object_id > last_id) {
                         CERROR("Setting EA for object > than last id on "
-                          "ost idx %d "LPD64" > "LPD64" \n", 
-                          lump->lmm_objects[i].l_ost_idx,
-                          lump->lmm_objects[i].l_object_id, last_id);
+                               "ost idx %d "LPD64" > "LPD64" \n",
+                               lump->lmm_objects[i].l_ost_idx,
+                               lump->lmm_objects[i].l_object_id, last_id);
                         RETURN(-EINVAL);
                 }
         }
 
         rc = lov_setstripe(exp, lsmp, lump);
-        if (rc) 
+        if (rc)
                 RETURN(rc);
+
         for (i = 0; i < lump->lmm_stripe_count; i++) {
-                (*lsmp)->lsm_oinfo[i].loi_ost_idx = 
-                                                 lump->lmm_objects[i].l_ost_idx;
+                (*lsmp)->lsm_oinfo[i].loi_ost_idx =
+                        lump->lmm_objects[i].l_ost_idx;
                 (*lsmp)->lsm_oinfo[i].loi_id = lump->lmm_objects[i].l_object_id;
                 (*lsmp)->lsm_oinfo[i].loi_gr = lump->lmm_objects[i].l_object_gr;
         }