Whamcloud - gitweb
Branch HEAD
authordzogin <dzogin>
Sat, 12 Sep 2009 01:17:46 +0000 (01:17 +0000)
committerdzogin <dzogin>
Sat, 12 Sep 2009 01:17:46 +0000 (01:17 +0000)
 b=20482
 i=adilger
 i=robert.read
----------------------------------------------------------------------
 Modified Files:
  lustre/ChangeLog lustre/lov/lov_request.c
  lustre/osc/osc_request.c
----------------------------------------------------------------------
Description: Error handling in osc_statfs_interpret() has been improved.
Details    : Check in osc_statfs_interpret() for EBADR.

Description: Do not send statfs() requests to OSTs disabled by administrator.
Details    : Check in lov_prep_statfs_set() for non-NULL ltd_exp.

lustre/ChangeLog
lustre/lov/lov_request.c
lustre/osc/osc_request.c

index 83a251e..971701b 100644 (file)
@@ -13,6 +13,16 @@ tbd  Sun Microsystems, Inc.
         removed cwd "./" (refer to Bugzilla 14399).
        * File join has been disabled in this release, refer to Bugzilla 16929.
 
+Severity   : normal
+Bugzilla   : 20482
+Description: Error handling in osc_statfs_interpret() has been improved.
+Details    : Check in osc_statfs_interpret() for EBADR.
+
+Severity   : normal
+Bugzilla   : 20482
+Description: Do not send statfs() requests to OSTs disabled by administrator.
+Details    : Check in lov_prep_statfs_set() for non-NULL ltd_exp.
+
 Severity   : enhancement
 Bugzilla   : 20200
 Description: Added sanity-quota test to for lfs(1) to work with numeric uid/gid.
index 3fa33a3..2b888f4 100644 (file)
@@ -1655,6 +1655,13 @@ int lov_prep_statfs_set(struct obd_device *obd, struct obd_info *oinfo,
                         continue;
                 }
 
+                /* skip targets that have been explicitely disabled by the
+                 * administrator */
+                if (!lov->lov_tgts[i]->ltd_exp) {
+                        CDEBUG(D_HA, "lov idx %d administratively disabled\n", i);
+                        continue;
+                }
+
                 OBD_ALLOC(req, sizeof(*req));
                 if (req == NULL)
                         GOTO(out_set, rc = -ENOMEM);
index 0c115f5..b9174c8 100644 (file)
@@ -3449,6 +3449,14 @@ static int osc_statfs_interpret(const struct lu_env *env,
         struct obd_statfs *msfs;
         ENTRY;
 
+        if (rc == -EBADR)
+                /* The request has in fact never been sent
+                 * due to issues at a higher level (LOV).
+                 * Exit immediately since the caller is
+                 * aware of the problem and takes care
+                 * of the clean up */
+                 RETURN(rc);
+
         if ((rc == -ENOTCONN || rc == -EAGAIN) &&
             (aa->aa_oi->oi_flags & OBD_STATFS_NODELAY))
                 GOTO(out, rc = 0);