Whamcloud - gitweb
LU-5162 mdc: Add exception entry check for radix_tree
[fs/lustre-release.git] / lustre / lclient / lcommon_misc.c
index 2ba559e..39df79a 100644 (file)
  * calculate this (via a call into the LOV + OSCs) each time we make an RPC. */
 int cl_init_ea_size(struct obd_export *md_exp, struct obd_export *dt_exp)
 {
-        struct lov_stripe_md lsm = { .lsm_magic = LOV_MAGIC_V3 };
-        __u32 valsize = sizeof(struct lov_desc);
-        int rc, easize, def_easize, cookiesize;
-        struct lov_desc desc;
-        __u16 stripes;
-        ENTRY;
+       struct lov_stripe_md lsm = { .lsm_magic = LOV_MAGIC_V3 };
+       __u32 valsize = sizeof(struct lov_desc);
+       int rc, easize, def_easize, cookiesize;
+       struct lov_desc desc;
+       __u16 stripes, def_stripes;
+       ENTRY;
 
         rc = obd_get_info(NULL, dt_exp, sizeof(KEY_LOVDESC), KEY_LOVDESC,
                           &valsize, &desc, NULL);
@@ -68,16 +68,21 @@ int cl_init_ea_size(struct obd_export *md_exp, struct obd_export *dt_exp)
         lsm.lsm_stripe_count = stripes;
         easize = obd_size_diskmd(dt_exp, &lsm);
 
-        lsm.lsm_stripe_count = desc.ld_default_stripe_count;
-        def_easize = obd_size_diskmd(dt_exp, &lsm);
+       def_stripes = min_t(__u32, desc.ld_default_stripe_count,
+                           LOV_MAX_STRIPE_COUNT);
+       lsm.lsm_stripe_count = def_stripes;
+       def_easize = obd_size_diskmd(dt_exp, &lsm);
 
-        cookiesize = stripes * sizeof(struct llog_cookie);
+       cookiesize = stripes * sizeof(struct llog_cookie);
 
-        CDEBUG(D_HA, "updating max_mdsize/max_cookiesize: %d/%d\n",
-               easize, cookiesize);
+       /* default cookiesize is 0 because from 2.4 server doesn't send
+        * llog cookies to client. */
+       CDEBUG(D_HA,
+              "updating def/max_easize: %d/%d def/max_cookiesize: 0/%d\n",
+              def_easize, easize, cookiesize);
 
-        rc = md_init_ea_size(md_exp, easize, def_easize, cookiesize);
-        RETURN(rc);
+       rc = md_init_ea_size(md_exp, easize, def_easize, cookiesize, 0);
+       RETURN(rc);
 }
 
 /**