* [Cluster-devel] [GFS2 PATCH] gfs2: if finish_open returns error, clean up iopen glock mess
[not found] <278378907.30268888.1573833534957.JavaMail.zimbra@redhat.com>
@ 2019-11-15 15:59 ` Bob Peterson
0 siblings, 0 replies; only message in thread
From: Bob Peterson @ 2019-11-15 15:59 UTC (permalink / raw)
To: cluster-devel.redhat.com
Hi,
Before this patch, if anything went wrong in function gfs2_create_inode
it would goto fail_gunlock3 and clean up the iopen glock it had just
created and locked. However, if function finish_open returns an error
it did not. That meant subsequent attempts to create the file were
seen as glock recursion errors on the iopen glock.
This patch adds additional checking for an error from finish_open and
cleans up the iopen glock appropriately.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
---
fs/gfs2/inode.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index dcb5d363f9b9..acfc57e1cb53 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -772,6 +772,12 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry,
gfs2_glock_dq_uninit(ghs);
gfs2_glock_dq_uninit(ghs + 1);
clear_bit(GLF_INODE_CREATING, &io_gl->gl_flags);
+ if (error) {
+ glock_clear_object(io_gl, ip);
+ clear_bit(GLF_INODE_CREATING, &io_gl->gl_flags);
+ gfs2_glock_dq_uninit(&ip->i_iopen_gh);
+ gfs2_glock_put(io_gl);
+ }
return error;
fail_gunlock3:
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2019-11-15 15:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <278378907.30268888.1573833534957.JavaMail.zimbra@redhat.com>
2019-11-15 15:59 ` [Cluster-devel] [GFS2 PATCH] gfs2: if finish_open returns error, clean up iopen glock mess Bob Peterson
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).