* [Cluster-devel] [PATCH] GFS2: Write out dirty inode metadata in delayed deletes
@ 2012-09-20 14:52 Benjamin Marzinski
2012-09-21 10:56 ` Steven Whitehouse
0 siblings, 1 reply; 2+ messages in thread
From: Benjamin Marzinski @ 2012-09-20 14:52 UTC (permalink / raw)
To: cluster-devel.redhat.com
If a dirty GFS2 inode was being deleted but was in use by another node, its
metadata was not getting written out before GFS2 checked for dirty buffers in
gfs2_ail_flush(). GFS2 was relying on inode_go_sync() to write out the
metadata when the other node tried to free the file, but it failed the error
check before it got that far. This patch writes out the metadata before calling
gfs2_ail_flush()
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
fs/gfs2/super.c | 5 +++++
1 file changed, 5 insertions(+)
Index: gfs2-3.0-nmw/fs/gfs2/super.c
===================================================================
--- gfs2-3.0-nmw.orig/fs/gfs2/super.c
+++ gfs2-3.0-nmw/fs/gfs2/super.c
@@ -1545,6 +1545,11 @@ static void gfs2_evict_inode(struct inod
out_truncate:
gfs2_log_flush(sdp, ip->i_gl);
+ if (test_bit(GLF_DIRTY, &ip->i_gl->gl_flags)) {
+ struct address_space *metamapping = gfs2_glock2aspace(ip->i_gl);
+ filemap_fdatawrite(metamapping);
+ filemap_fdatawait(metamapping);
+ }
write_inode_now(inode, 1);
gfs2_ail_flush(ip->i_gl, 0);
^ permalink raw reply [flat|nested] 2+ messages in thread
* [Cluster-devel] [PATCH] GFS2: Write out dirty inode metadata in delayed deletes
2012-09-20 14:52 [Cluster-devel] [PATCH] GFS2: Write out dirty inode metadata in delayed deletes Benjamin Marzinski
@ 2012-09-21 10:56 ` Steven Whitehouse
0 siblings, 0 replies; 2+ messages in thread
From: Steven Whitehouse @ 2012-09-21 10:56 UTC (permalink / raw)
To: cluster-devel.redhat.com
Hi,
Thanks for the patch, I'll push it into the -nmw tree shortly,
Steve.
On Thu, 2012-09-20 at 09:52 -0500, Benjamin Marzinski wrote:
> If a dirty GFS2 inode was being deleted but was in use by another node, its
> metadata was not getting written out before GFS2 checked for dirty buffers in
> gfs2_ail_flush(). GFS2 was relying on inode_go_sync() to write out the
> metadata when the other node tried to free the file, but it failed the error
> check before it got that far. This patch writes out the metadata before calling
> gfs2_ail_flush()
>
> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
> ---
> fs/gfs2/super.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> Index: gfs2-3.0-nmw/fs/gfs2/super.c
> ===================================================================
> --- gfs2-3.0-nmw.orig/fs/gfs2/super.c
> +++ gfs2-3.0-nmw/fs/gfs2/super.c
> @@ -1545,6 +1545,11 @@ static void gfs2_evict_inode(struct inod
>
> out_truncate:
> gfs2_log_flush(sdp, ip->i_gl);
> + if (test_bit(GLF_DIRTY, &ip->i_gl->gl_flags)) {
> + struct address_space *metamapping = gfs2_glock2aspace(ip->i_gl);
> + filemap_fdatawrite(metamapping);
> + filemap_fdatawait(metamapping);
> + }
> write_inode_now(inode, 1);
> gfs2_ail_flush(ip->i_gl, 0);
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-09-21 10:56 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-20 14:52 [Cluster-devel] [PATCH] GFS2: Write out dirty inode metadata in delayed deletes Benjamin Marzinski
2012-09-21 10:56 ` Steven Whitehouse
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).