diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 1264aa72eacaa621d1b94ce4692b22ed19745ebb..2bb4fd2d3a6e19ec6b4bc313c4c3f322683b6c76 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -19,6 +19,7 @@ tbd Cluster File Systems, Inc. <info@clusterfs.com> - fix a rare lock re-ordering bug, which caused deadlock (2322) - fix i_sem/journal inversion in fsfilt_ext3_write_record (2306) - protect MDS inode fsdata with stronger locking (2313) + - better error messages when a client is rejected during recovery (1505) * miscellania - allow configurable automake binary, for testing new versions - small update to the lfs documentation diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index deaa355a7c24b6378e903520c509ede6e3a63793..d093a9316973c7692bd45bd0fd974e3e5522cde2 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -103,7 +103,12 @@ int lustre_common_fill_super(struct super_block *sb, char *mdc, char *osc) mdc_init_ea_size(obd, osc); err = obd_connect(&mdc_conn, obd, &sbi->ll_sb_uuid); - if (err) { + if (err == -EBUSY) { + CERROR("An MDS (mdc %s) is performing recovery, of which this" + " client is not a part. Please wait for recovery to " + "complete, abort, or time out.\n", mdc); + GOTO(out, err); + } else if (err) { CERROR("cannot connect to %s: rc = %d\n", mdc, err); GOTO(out, err); } @@ -130,7 +135,12 @@ int lustre_common_fill_super(struct super_block *sb, char *mdc, char *osc) } err = obd_connect(&osc_conn, obd, &sbi->ll_sb_uuid); - if (err) { + if (err == -EBUSY) { + CERROR("An OST (osc %s) is performing recovery, of which this" + " client is not a part. Please wait for recovery to " + "complete, abort, or time out.\n", osc); + GOTO(out, err); + } else if (err) { CERROR("cannot connect to %s: rc = %d\n", osc, err); GOTO(out_mdc, err); }