diff --git a/lustre/obdclass/obd_mount.c b/lustre/obdclass/obd_mount.c
index ced0769cba266842079b4fbeb2c0d98609121cfc..5c24bf1665a8281c6bfb9eadb35b26c950bd2a63 100644
--- a/lustre/obdclass/obd_mount.c
+++ b/lustre/obdclass/obd_mount.c
@@ -770,11 +770,9 @@ static int lustre_stop_mgc(struct super_block *sb)
                 GOTO(out, rc = -EBUSY);
         }
 
-        /* MGC must always stop */
-        obd->obd_force = 1;
-        /* client_disconnect_export uses the no_recov flag to decide whether it
-           should disconnect or just invalidate.  (The MGC has no
-           recoverable data in any case.) */
+        /* MGC should disconnect nicely so MGS won't print eviction messages */
+        obd->obd_force = (lsi->lsi_flags & LSI_UMOUNT_FORCE) != 0;
+        /* The MGC has no recoverable data in any case. */
         obd->obd_no_recov = 1;
 
         if (obd->u.cli.cl_mgc_mgsexp)