mirror of https://gitee.com/openkylin/linux.git
GFS2: Write out dirty inode metadata in delayed deletes
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> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
a0b4df2943
commit
2216db70c9
|
@ -1545,6 +1545,11 @@ static void gfs2_evict_inode(struct inode *inode)
|
|||
|
||||
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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue