* [Cluster-devel] [GFS2 PATCH] gfs2: Don't write log headers after file system withdraw
[not found] <501115369.35690105.1574257982295.JavaMail.zimbra@redhat.com>
@ 2019-11-20 13:53 ` Bob Peterson
2019-11-21 10:46 ` Andreas Gruenbacher
0 siblings, 1 reply; 2+ messages in thread
From: Bob Peterson @ 2019-11-20 13:53 UTC (permalink / raw)
To: cluster-devel.redhat.com
Hi,
Before this patch, when a node withdrew a gfs2 file system, it
wrote a (clean) unmount log header. That's wrong. You don't want
to write anything to the journal once you're withdrawn because
that's acknowledging that the transaction is complete and the
journal is in good shape, neither of which may be a valid
assumption when the file system is withdrawn. This is especially
true if the withdraw was caused due to io errors writing to the
journal in the first place. The best course of action is to leave
the journal "as is" until it may be safely replayed during
journal recovery, regardless of whether it's done by this node or
another.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
---
fs/gfs2/log.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c
index 72c8f30b1822..eb3f2e7b8085 100644
--- a/fs/gfs2/log.c
+++ b/fs/gfs2/log.c
@@ -693,12 +693,16 @@ void gfs2_write_log_header(struct gfs2_sbd *sdp, struct gfs2_jdesc *jd,
{
struct gfs2_log_header *lh;
u32 hash, crc;
- struct page *page = mempool_alloc(gfs2_page_pool, GFP_NOIO);
+ struct page *page;
struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
struct timespec64 tv;
struct super_block *sb = sdp->sd_vfs;
u64 dblock;
+ if (gfs2_withdrawn(sdp))
+ goto out;
+
+ page = mempool_alloc(gfs2_page_pool, GFP_NOIO);
lh = page_address(page);
clear_page(lh);
@@ -751,6 +755,7 @@ void gfs2_write_log_header(struct gfs2_sbd *sdp, struct gfs2_jdesc *jd,
gfs2_log_write(sdp, page, sb->s_blocksize, 0, dblock);
gfs2_log_submit_bio(&sdp->sd_log_bio, REQ_OP_WRITE | op_flags);
+out:
log_flush_wait(sdp);
}
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [Cluster-devel] [GFS2 PATCH] gfs2: Don't write log headers after file system withdraw
2019-11-20 13:53 ` [Cluster-devel] [GFS2 PATCH] gfs2: Don't write log headers after file system withdraw Bob Peterson
@ 2019-11-21 10:46 ` Andreas Gruenbacher
0 siblings, 0 replies; 2+ messages in thread
From: Andreas Gruenbacher @ 2019-11-21 10:46 UTC (permalink / raw)
To: cluster-devel.redhat.com
Hi Bob,
On Wed, Nov 20, 2019 at 2:53 PM Bob Peterson <rpeterso@redhat.com> wrote:
> Before this patch, when a node withdrew a gfs2 file system, it
> wrote a (clean) unmount log header. That's wrong. You don't want
> to write anything to the journal once you're withdrawn because
> that's acknowledging that the transaction is complete and the
> journal is in good shape, neither of which may be a valid
> assumption when the file system is withdrawn. This is especially
> true if the withdraw was caused due to io errors writing to the
> journal in the first place. The best course of action is to leave
> the journal "as is" until it may be safely replayed during
> journal recovery, regardless of whether it's done by this node or
> another.
>
> Signed-off-by: Bob Peterson <rpeterso@redhat.com>
ok, pushed.
Thanks,
Andreas
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-11-21 10:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <501115369.35690105.1574257982295.JavaMail.zimbra@redhat.com>
2019-11-20 13:53 ` [Cluster-devel] [GFS2 PATCH] gfs2: Don't write log headers after file system withdraw Bob Peterson
2019-11-21 10:46 ` Andreas Gruenbacher
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).