* [e2fsprogs PATCH] tune2fs: don't recover journal if device is busy.
@ 2018-02-12 1:20 NeilBrown
2018-02-12 2:16 ` Darrick J. Wong
0 siblings, 1 reply; 3+ messages in thread
From: NeilBrown @ 2018-02-12 1:20 UTC (permalink / raw)
To: tytso-3s7WtUTddSA; +Cc: linux-ext4-u79uwXL29TY76Z2rM5mHXA, lustre
[-- Attachment #1.1: Type: text/plain, Size: 1754 bytes --]
tune2fs currently replays the journal if it needs
recovery and the filesystem isn't mounted.
The test for "is the filesystem mounted" isn't completely robust.
Lustre makes use of ext4 filesystems in a way that they are mounted
without being visible in /proc/mounts or similar.
This usage can easily be detected by attempting to open the device
with O_EXCL. tune2fs already does this and the EXT2_MF_BUSY flag
is set if open(O_EXCL) fails.
Several uses other than lustre mounts could cause O_EXCL to fail,
but in any case it seems unwise to recover the journal when something
else is keeping the device busy.
So add an extra test to avoid journal recovery when the device
is busy. This fixes some problems with lustre usage.
Signed-off-by: NeilBrown <neilb-IBi9RG/b67k@public.gmane.org>
--
Note: it seems wrong to recover the journal *after* making
changes to the superblock - there is a good chance that
recovering the journal will over-write those changes.
This is what was happening that lead me to this problem.
Shouldn't journal recovery happen *first*??
Thanks,
NeilBrown
---
misc/tune2fs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index c33fb9d80b10..703e55b6b972 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -3337,7 +3337,7 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
}
#else
/* Recover the journal if possible. */
- if ((open_flag & EXT2_FLAG_RW) && !(mount_flags & EXT2_MF_MOUNTED) &&
+ if ((open_flag & EXT2_FLAG_RW) && !(mount_flags & (EXT2_MF_BUSY | EXT2_MF_MOUNTED)) &&
ext2fs_has_feature_journal_needs_recovery(fs->super)) {
errcode_t err;
--
2.14.0.rc0.dirty
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
[-- Attachment #2: Type: text/plain, Size: 188 bytes --]
_______________________________________________
lustre-devel mailing list
lustre-devel-aLEFhgZF4x6X6Mz3xDxJMA@public.gmane.org
http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [e2fsprogs PATCH] tune2fs: don't recover journal if device is busy.
2018-02-12 1:20 [e2fsprogs PATCH] tune2fs: don't recover journal if device is busy NeilBrown
@ 2018-02-12 2:16 ` Darrick J. Wong
[not found] ` <20180224222352.GC14111@thunk.org>
0 siblings, 1 reply; 3+ messages in thread
From: Darrick J. Wong @ 2018-02-12 2:16 UTC (permalink / raw)
To: NeilBrown; +Cc: tytso, linux-ext4, lustre
On Mon, Feb 12, 2018 at 12:20:43PM +1100, NeilBrown wrote:
>
> tune2fs currently replays the journal if it needs
> recovery and the filesystem isn't mounted.
>
> The test for "is the filesystem mounted" isn't completely robust.
> Lustre makes use of ext4 filesystems in a way that they are mounted
> without being visible in /proc/mounts or similar.
> This usage can easily be detected by attempting to open the device
> with O_EXCL. tune2fs already does this and the EXT2_MF_BUSY flag
> is set if open(O_EXCL) fails.
> Several uses other than lustre mounts could cause O_EXCL to fail,
> but in any case it seems unwise to recover the journal when something
> else is keeping the device busy.
>
> So add an extra test to avoid journal recovery when the device
> is busy. This fixes some problems with lustre usage.
>
> Signed-off-by: NeilBrown <neilb@suse.com>
>
> --
> Note: it seems wrong to recover the journal *after* making
> changes to the superblock - there is a good chance that
> recovering the journal will over-write those changes.
> This is what was happening that lead me to this problem.
> Shouldn't journal recovery happen *first*??
Yes. Oops. :/
This whole hunk ought to move up to be right after
ext2fs_check_if_mounted, I think.
As for this patch itself,
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
--D
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-02-26 18:08 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-12 1:20 [e2fsprogs PATCH] tune2fs: don't recover journal if device is busy NeilBrown
2018-02-12 2:16 ` Darrick J. Wong
[not found] ` <20180224222352.GC14111@thunk.org>
[not found] ` <20180224222352.GC14111-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2018-02-26 18:08 ` Darrick J. Wong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).