[lustre-devel] [PATCH 132/622] lustre: mgc: don't proccess cld during stopping

James Simmons jsimmons at infradead.org
Thu Feb 27 13:10:00 PST 2020


From: Alexander Boyko <c17825 at cray.com>

The patch fixes the log processing during stopping. It was general
protection fault at mgc_process_cfg_log() at lsi access. Lsi pointer
was wrong 38323172756f6663, and all cld->cld_cfg.cfg_sb had invalid
data.

WC-bug-id: https://jira.whamcloud.com/browse/LU-10595
Lustre-commit: bda43cbe369a ("LU-10595 mgc: don't proccess cld during stopping")
Signed-off-by: Alexander Boyko <c17825 at cray.com>
Cray-bug-id: LUS-6199
Reviewed-on: https://review.whamcloud.com/33190
Reviewed-by: Andreas Dilger <adilger at whamcloud.com>
Reviewed-by: James Simmons <uja.ornl at yahoo.com>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
---
 fs/lustre/mgc/mgc_request.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/fs/lustre/mgc/mgc_request.c b/fs/lustre/mgc/mgc_request.c
index c114aa8..785461b 100644
--- a/fs/lustre/mgc/mgc_request.c
+++ b/fs/lustre/mgc/mgc_request.c
@@ -1651,6 +1651,11 @@ int mgc_process_log(struct obd_device *mgc, struct config_llog_data *cld)
 				goto restart;
 			} else {
 				mutex_lock(&cld->cld_lock);
+				/* unlock/lock mutex, so check stopping again */
+				if (cld->cld_stopping) {
+					mutex_unlock(&cld->cld_lock);
+					return 0;
+				}
 				spin_lock(&config_list_lock);
 				cld->cld_lostlock = 1;
 				spin_unlock(&config_list_lock);
-- 
1.8.3.1



More information about the lustre-devel mailing list