Whamcloud - gitweb
LU-11943 llog: Reset current log on ENOSPC 59/34459/4
authorPatrick Farrell <pfarrell@whamcloud.com>
Thu, 28 Feb 2019 18:02:13 +0000 (13:02 -0500)
committerOleg Drokin <green@whamcloud.com>
Mon, 8 Apr 2019 06:27:58 +0000 (06:27 +0000)
The original LU-10527 patch:
"LU-10527 obdclass: don't recycle loghandle upon ENOSPC"
https://review.whamcloud.com/#/c/30897/

Kept the current log on ENOSPC.

This appears to cause llog corruption on failover, and the
other part of the original patch (removing an incorrect
assert) should be sufficient to fix the original issue.

Fixes: 5761b9576d39 ("LU-10527 obdclass: don't recycle loghandle upon ENOSPC")

Lustre-change: https://review.whamcloud.com/34347
Lustre-commit: 7f4a1dd92a900a55cbb980bac3d20c32968334ec

Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com>
Change-Id: Ie5c0ab77940c1be0ec1f166e4d38080b254bed5c
Reviewed-by: Faccini Bruno <bruno.faccini@intel.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Signed-off-by: Minh Diep <mdiep@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/34459
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/obdclass/llog_cat.c

index 43a842a..1f723ec 100644 (file)
@@ -578,12 +578,7 @@ retry:
                        up_write(&loghandle->lgh_lock);
                        /* nobody should be trying to use this llog */
                        down_write(&cathandle->lgh_lock);
-                       /* only reset current log if still room in catalog, to
-                        * avoid unnecessarily and racy creation of new and
-                        * partially initialized llog_handle
-                        */
-                       if ((cathandle->u.chd.chd_current_log == loghandle) &&
-                           rc != -ENOSPC)
+                       if (cathandle->u.chd.chd_current_log == loghandle)
                                cathandle->u.chd.chd_current_log = NULL;
                        up_write(&cathandle->lgh_lock);
                        RETURN(rc);