Whamcloud - gitweb
LU-9753 ofd: 64-bits diff variable to avoid overflow
[fs/lustre-release.git] / lustre / ofd / ofd_obd.c
index cd9f673..cc04521 100644 (file)
@@ -46,7 +46,7 @@
 #include <lustre/lustre_idl.h>
 #include "ofd_internal.h"
 #include <obd_cksum.h>
-#include <lustre_ioctl.h>
+#include <uapi/linux/lustre_ioctl.h>
 #include <lustre_quota.h>
 #include <lustre_lfsck.h>
 #include <lustre_nodemap.h>
@@ -891,7 +891,7 @@ out:
  *
  * Supplemental function to destroy object by FID, it is used by request
  * handler and by ofd_echo_destroy() below to find object by FID, lock it
- * and call ofd_object_destroy() finally.
+ * and call ofd_destroy() finally.
  *
  * \param[in] env      execution environment
  * \param[in] ofd      OFD device
@@ -931,7 +931,7 @@ int ofd_destroy_by_fid(const struct lu_env *env, struct ofd_device *ofd,
 
        LASSERT(fo != NULL);
 
-       rc = ofd_object_destroy(env, fo, orphan);
+       rc = ofd_destroy(env, fo, orphan);
        EXIT;
 
        ofd_object_put(env, fo);
@@ -1011,9 +1011,10 @@ static int ofd_echo_create(const struct lu_env *env, struct obd_export *exp,
        struct ofd_device       *ofd = ofd_exp(exp);
        u64                      seq = ostid_seq(&oa->o_oi);
        struct ofd_seq          *oseq;
-       int                      rc = 0, diff = 1;
        long                     granted;
        u64                      next_id;
+       s64 diff = 1;
+       int rc = 0;
        int                      count;
 
        ENTRY;
@@ -1049,22 +1050,27 @@ static int ofd_echo_create(const struct lu_env *env, struct obd_export *exp,
                rc = granted;
                granted = 0;
                CDEBUG(D_HA, "%s: failed to acquire grant space for "
-                      "precreate (%d): rc = %d\n", ofd_name(ofd), diff, rc);
+                      "precreate (%lld): rc = %d\n", ofd_name(ofd), diff, rc);
                diff = 0;
                GOTO(out, rc);
        }
 
        next_id = ofd_seq_last_oid(oseq) + 1;
-       count = ofd_precreate_batch(ofd, diff);
+       count = ofd_precreate_batch(ofd, (int)diff);
 
        rc = ofd_precreate_objects(env, ofd, next_id, oseq, count, 0);
        if (rc < 0) {
                CERROR("%s: unable to precreate: rc = %d\n",
                       ofd_name(ofd), rc);
        } else {
-               ostid_set_id(&oa->o_oi, ofd_seq_last_oid(oseq));
+               rc = ostid_set_id(&oa->o_oi, ofd_seq_last_oid(oseq));
+               if (rc) {
+                       CERROR("%s: Bad %llu to set " DOSTID " : rc %d\n",
+                              ofd_name(ofd),
+                              (unsigned long long)ofd_seq_last_oid(oseq),
+                              POSTID(&oa->o_oi), rc);
+               }
                oa->o_valid |= OBD_MD_FLID | OBD_MD_FLGROUP;
-               rc = 0;
        }
 
        tgt_grant_commit(ofd_obd(ofd)->obd_self_export, granted, rc);
@@ -1167,7 +1173,9 @@ static int ofd_ioc_get_obj_version(const struct lu_env *env,
                struct ost_id ostid;
 
                ostid_set_seq(&ostid, *(__u64 *)data->ioc_inlbuf4);
-               ostid_set_id(&ostid, *(__u64 *)data->ioc_inlbuf3);
+               rc = ostid_set_id(&ostid, *(__u64 *)data->ioc_inlbuf3);
+               if (rc)
+                       GOTO(out, rc);
                rc = ostid_to_fid(&fid, &ostid,
                                  ofd->ofd_lut.lut_lsd.lsd_osd_index);
                if (rc != 0)