From e764a4b5d3c6612c3a63a22a6d9b347b35fd0833 Mon Sep 17 00:00:00 2001 From: dzogin Date: Sat, 12 Sep 2009 01:17:46 +0000 Subject: [PATCH] Branch HEAD 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 | 10 ++++++++++ lustre/lov/lov_request.c | 7 +++++++ lustre/osc/osc_request.c | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 83a251e..971701b 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -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. diff --git a/lustre/lov/lov_request.c b/lustre/lov/lov_request.c index 3fa33a3..2b888f4 100644 --- a/lustre/lov/lov_request.c +++ b/lustre/lov/lov_request.c @@ -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); diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index 0c115f5..b9174c8 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -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); -- 1.8.3.1