Whamcloud - gitweb
LU-6825 ofd: statfs needs NOT check layout LFSCK status
[fs/lustre-release.git] / lustre / ofd / ofd_obd.c
index 2d98434..cb7a2e9 100644 (file)
@@ -638,7 +638,7 @@ static int ofd_get_info(const struct lu_env *env, struct obd_export *exp,
        struct ofd_thread_info          *info;
        struct ofd_device               *ofd;
        struct ll_fiemap_info_key       *fm_key = key;
-       struct ll_user_fiemap           *fiemap = val;
+       struct fiemap                   *fiemap = val;
        int                              rc = 0;
 
        ENTRY;
@@ -653,7 +653,7 @@ static int ofd_get_info(const struct lu_env *env, struct obd_export *exp,
        if (KEY_IS(KEY_FIEMAP)) {
                info = ofd_info_init(env, exp);
 
-               rc = ostid_to_fid(&info->fti_fid, &fm_key->oa.o_oi,
+               rc = ostid_to_fid(&info->fti_fid, &fm_key->lfik_oa.o_oi,
                                  ofd->ofd_lut.lut_lsd.lsd_osd_index);
                if (rc != 0)
                        RETURN(rc);
@@ -688,13 +688,6 @@ int ofd_statfs_internal(const struct lu_env *env, struct ofd_device *ofd,
        int rc = 0;
        ENTRY;
 
-       down_read(&ofd->ofd_lastid_rwsem);
-       /* Currently, for safe, we do not distinguish which LAST_ID is broken,
-        * we may do that in the future.
-        * Return -ENOSPC until the LAST_ID rebuilt. */
-       if (unlikely(ofd->ofd_lastid_rebuilding))
-               GOTO(out, rc = -ENOSPC);
-
        spin_lock(&ofd->ofd_osfs_lock);
        if (cfs_time_before_64(ofd->ofd_osfs_age, max_age) || max_age == 0) {
                u64 unstable;
@@ -767,12 +760,9 @@ int ofd_statfs_internal(const struct lu_env *env, struct ofd_device *ofd,
                if (from_cache)
                        *from_cache = 1;
        }
-
        GOTO(out, rc);
 
 out:
-       up_read(&ofd->ofd_lastid_rwsem);
-
        return rc;
 }
 
@@ -877,21 +867,19 @@ out:
 
  * \param[in] env      execution environment
  * \param[in] exp      OBD export of OFD device
- * \param[in] oinfo    obd_info with setattr parameters
- * \param[in] oti      not used in OFD
+ * \param[in] oa       setattr parameters
  *
  * \retval             0 if successful
  * \retval             negative value on error
  */
 static int ofd_echo_setattr(const struct lu_env *env, struct obd_export *exp,
-                           struct obd_info *oinfo, struct obd_trans_info *oti)
+                           struct obdo *oa)
 {
        struct ofd_thread_info  *info;
        struct ofd_device       *ofd = ofd_exp(exp);
        struct ldlm_namespace   *ns = ofd->ofd_namespace;
        struct ldlm_resource    *res;
        struct ofd_object       *fo;
-       struct obdo             *oa = oinfo->oi_oa;
        struct lu_fid           *fid = &oa->o_oi.oi_fid;
        struct filter_fid       *ff = NULL;
        int                      rc = 0;
@@ -904,8 +892,7 @@ static int ofd_echo_setattr(const struct lu_env *env, struct obd_export *exp,
 
        /* This would be very bad - accidentally truncating a file when
         * changing the time or similar - bug 12203. */
-       if (oa->o_valid & OBD_MD_FLSIZE &&
-           oinfo->oi_policy.l_extent.end != OBD_OBJECT_EOF) {
+       if (oa->o_valid & OBD_MD_FLSIZE) {
                static char mdsinum[48];
 
                if (oa->o_valid & OBD_MD_FLFID)
@@ -1025,7 +1012,6 @@ int ofd_destroy_by_fid(const struct lu_env *env, struct ofd_device *ofd,
  * \param[in] env      execution environment
  * \param[in] exp      OBD export of OFD device
  * \param[in] oa       obdo structure with FID
- * \param[in] oti      not used in OFD
  *
  * Note: this is OBD API method which is common API for server OBDs and
  * client OBDs. Thus some parameters used in client OBDs may not be used
@@ -1035,7 +1021,7 @@ int ofd_destroy_by_fid(const struct lu_env *env, struct ofd_device *ofd,
  * \retval             negative value on error
  */
 static int ofd_echo_destroy(const struct lu_env *env, struct obd_export *exp,
-                           struct obdo *oa, struct obd_trans_info *oti)
+                           struct obdo *oa)
 {
        struct ofd_device       *ofd = ofd_exp(exp);
        struct lu_fid           *fid = &oa->o_oi.oi_fid;
@@ -1072,8 +1058,6 @@ out:
  * \param[in]  env     execution environment
  * \param[in]  exp     OBD export of OFD device
  * \param[in]  oa      obdo structure with FID sequence to use
- * \param[out] ea      contains object ID/SEQ to return
- * \param[in]  oti     not used in OFD
  *
  * Note: this is OBD API method which is common API for server OBDs and
  * client OBDs. Thus some parameters used in client OBDs may not be used
@@ -1083,7 +1067,7 @@ out:
  * \retval             negative value on error
  */
 static int ofd_echo_create(const struct lu_env *env, struct obd_export *exp,
-                          struct obdo *oa, struct obd_trans_info *oti)
+                          struct obdo *oa)
 {
        struct ofd_device       *ofd = ofd_exp(exp);
        struct ofd_thread_info  *info;
@@ -1157,18 +1141,18 @@ out_sem:
  *
  * \param[in]    env   execution environment
  * \param[in]    exp   OBD export of OFD device
- * \param[in,out] oinfo        contains FID of object to get attributes from and
+ * \param[in,out] oa   contains FID of object to get attributes from and
  *                     is used to return attributes back
  *
  * \retval             0 if successful
  * \retval             negative value on error
  */
 static int ofd_echo_getattr(const struct lu_env *env, struct obd_export *exp,
-                           struct obd_info *oinfo)
+                           struct obdo *oa)
 {
        struct ofd_device       *ofd = ofd_exp(exp);
        struct ofd_thread_info  *info;
-       struct lu_fid           *fid = &oinfo->oi_oa->o_oi.oi_fid;
+       struct lu_fid           *fid = &oa->o_oi.oi_fid;
        struct ofd_object       *fo;
        int                      rc = 0;
 
@@ -1182,18 +1166,18 @@ static int ofd_echo_getattr(const struct lu_env *env, struct obd_export *exp,
 
        LASSERT(fo != NULL);
        rc = ofd_attr_get(env, fo, &info->fti_attr);
-       oinfo->oi_oa->o_valid = OBD_MD_FLID;
+       oa->o_valid = OBD_MD_FLID;
        if (rc == 0) {
                __u64 curr_version;
 
-               obdo_from_la(oinfo->oi_oa, &info->fti_attr,
+               obdo_from_la(oa, &info->fti_attr,
                             OFD_VALID_FLAGS | LA_UID | LA_GID);
 
                /* Store object version in reply */
                curr_version = dt_version_get(env, ofd_object_child(fo));
                if ((__s64)curr_version != -EOPNOTSUPP) {
-                       oinfo->oi_oa->o_valid |= OBD_MD_FLDATAVERSION;
-                       oinfo->oi_oa->o_data_version = curr_version;
+                       oa->o_valid |= OBD_MD_FLDATAVERSION;
+                       oa->o_data_version = curr_version;
                }
        }
 
@@ -1306,6 +1290,7 @@ static int ofd_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
        switch (cmd) {
        case OBD_IOC_ABORT_RECOVERY:
                CERROR("%s: aborting recovery\n", obd->obd_name);
+               obd->obd_force_abort_recovery = 1;
                target_stop_recovery_thread(obd);
                break;
        case OBD_IOC_SYNC: