Whamcloud - gitweb
LU-2903 tests: calculation of available space
[fs/lustre-release.git] / lustre / ofd / ofd_obd.c
index 1f4c108..99de9eb 100644 (file)
@@ -237,7 +237,17 @@ static int ofd_parse_connect_data(const struct lu_env *env,
        if (data->ocd_connect_flags & OBD_CONNECT_MAXBYTES)
                data->ocd_maxbytes = ofd->ofd_dt_conf.ddp_maxbytes;
 
-        RETURN(0);
+       if (data->ocd_connect_flags & OBD_CONNECT_PINGLESS) {
+               if (suppress_pings) {
+                       spin_lock(&exp->exp_obd->obd_dev_lock);
+                       list_del_init(&exp->exp_obd_chain_timed);
+                       spin_unlock(&exp->exp_obd->obd_dev_lock);
+               } else {
+                       data->ocd_connect_flags &= ~OBD_CONNECT_PINGLESS;
+               }
+       }
+
+       RETURN(0);
 }
 
 static int ofd_obd_reconnect(const struct lu_env *env, struct obd_export *exp,
@@ -567,7 +577,7 @@ static int ofd_get_info(const struct lu_env *env, struct obd_export *exp,
                ofd_info_init(env, exp);
                oseq = ofd_seq_load(env, ofd,
                                    (obd_seq)exp->exp_filter_data.fed_group);
-               LASSERT(oseq != NULL);
+               LASSERT(!IS_ERR(oseq));
                if (last_id) {
                        if (*vallen < sizeof(*last_id)) {
                                ofd_seq_put(env, oseq);
@@ -620,36 +630,39 @@ static int ofd_get_info(const struct lu_env *env, struct obd_export *exp,
                *((__u32 *) val) = ofd->ofd_sync_lock_cancel;
                *vallen = sizeof(__u32);
        } else if (KEY_IS(KEY_LAST_FID)) {
-               struct lu_env      env;
-               struct ofd_device *ofd = ofd_exp(exp);
-               struct ofd_seq    *oseq;
-               struct lu_fid     *last_fid = val;
-               int             rc;
-
-               if (last_fid == NULL) {
-                       *vallen = sizeof(struct lu_fid);
+               struct lu_env           env;
+               struct ofd_device       *ofd = ofd_exp(exp);
+               struct ofd_seq          *oseq;
+               struct ost_id           *oid = val;
+               int                     rc;
+
+               if (oid == NULL) {
+                       *vallen = sizeof(struct ost_id);
                        RETURN(0);
                }
 
-               if (*vallen < sizeof(*last_fid))
+               if (*vallen < sizeof(*oid))
                        RETURN(-EOVERFLOW);
 
                rc = lu_env_init(&env, LCT_DT_THREAD);
                if (rc != 0)
                        RETURN(rc);
                ofd_info_init(&env, exp);
-               fid_le_to_cpu(last_fid, last_fid);
-               oseq = ofd_seq_load(&env, ofd, fid_seq(last_fid));
+
+               ostid_le_to_cpu(oid, oid);
+               CDEBUG(D_HA, "Get LAST FID for seq "LPX64"\n", oid->oi_seq);
+
+               oseq = ofd_seq_load(&env, ofd, oid->oi_seq);
                if (IS_ERR(oseq))
-                       GOTO(out_fid, rc = PTR_ERR(oseq));
+                       GOTO(out_fini, rc = PTR_ERR(oseq));
 
-               last_fid->f_seq = oseq->os_seq;
-               last_fid->f_oid = oseq->os_last_oid;
-               fid_cpu_to_le(last_fid, last_fid);
+               CDEBUG(D_HA, "LAST FID is "POSTID"\n", oseq->os_last_oid,
+                      oseq->os_seq);
 
-               *vallen = sizeof(*last_fid);
+               *oid = oseq->os_oi;
+               *vallen = sizeof(*oid);
                ofd_seq_put(&env, oseq);
-out_fid:
+out_fini:
                lu_env_fini(&env);
        } else {
                CERROR("Not supported key %s\n", (char*)key);
@@ -1173,8 +1186,9 @@ int ofd_create(const struct lu_env *env, struct obd_export *exp,
               seq, oa->o_id);
 
        oseq = ofd_seq_load(env, ofd, seq);
-       if (oseq == NULL) {
-               CERROR("%s: Can't find oseq "LPX64"\n", ofd_name(ofd), seq);
+       if (IS_ERR(oseq)) {
+               CERROR("%s: Can't find FID Sequence "LPX64": rc = %ld\n",
+                      ofd_name(ofd), seq, PTR_ERR(oseq));
                RETURN(-EINVAL);
        }
 
@@ -1263,9 +1277,9 @@ int ofd_create(const struct lu_env *env, struct obd_export *exp,
                                              ofd_obd(ofd)->obd_self_export,
                                              &diff);
                        if (rc) {
-                               CDEBUG(D_HA, "%s: failed to acquire grant space"
-                                      "for precreate (%d)\n",
-                                      ofd_name(ofd), diff);
+                               CDEBUG(D_HA, "%s: failed to acquire grant "
+                                      "space for precreate (%d): rc = %d\n",
+                                      ofd_name(ofd), diff, rc);
                                diff = 0;
                        }
                }
@@ -1301,7 +1315,8 @@ int ofd_create(const struct lu_env *env, struct obd_export *exp,
                         * them, even if last creation failed */
                        rc = 0;
                else
-                       CERROR("unable to precreate: %d\n", rc);
+                       CERROR("%s: unable to precreate: rc = %d\n",
+                              ofd_name(ofd), rc);
 
                oa->o_id = ofd_seq_last_oid(oseq);
                oa->o_valid |= OBD_MD_FLID | OBD_MD_FLGROUP;