* [Cluster-devel] GFS2: Don't try to end a non-existent transaction in unlink [not found] <381737769.4752688.1517245618092.JavaMail.zimbra@redhat.com> @ 2018-01-29 17:07 ` Bob Peterson 2018-01-29 17:11 ` Andreas Gruenbacher 0 siblings, 1 reply; 2+ messages in thread From: Bob Peterson @ 2018-01-29 17:07 UTC (permalink / raw) To: cluster-devel.redhat.com Hi, Before this patch, if function gfs2_unlink failed to get a valid transaction (for example, not enough journal blocks) it would go to label out_end_trans which did gfs2_trans_end. But if the trans_begin failed, there's no transaction to end, and trying to do so results in: kernel BUG at fs/gfs2/trans.c:117! This patch changes the goto so that it does not try to end a non-existent transaction. Signed-off-by: Bob Peterson <rpeterso@redhat.com> --- fs/gfs2/inode.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index 20281992d456..59e0560180ec 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c @@ -1152,12 +1152,11 @@ static int gfs2_unlink(struct inode *dir, struct dentry *dentry) error = gfs2_trans_begin(sdp, 2*RES_DINODE + 3*RES_LEAF + RES_RG_BIT, 0); if (error) - goto out_end_trans; + goto out_gunlock; error = gfs2_unlink_inode(dip, dentry); - -out_end_trans: gfs2_trans_end(sdp); + out_gunlock: gfs2_glock_dq(ghs + 2); out_rgrp: ^ permalink raw reply related [flat|nested] 2+ messages in thread
* [Cluster-devel] GFS2: Don't try to end a non-existent transaction in unlink 2018-01-29 17:07 ` [Cluster-devel] GFS2: Don't try to end a non-existent transaction in unlink Bob Peterson @ 2018-01-29 17:11 ` Andreas Gruenbacher 0 siblings, 0 replies; 2+ messages in thread From: Andreas Gruenbacher @ 2018-01-29 17:11 UTC (permalink / raw) To: cluster-devel.redhat.com On 29 January 2018 at 18:07, Bob Peterson <rpeterso@redhat.com> wrote: > Hi, > > Before this patch, if function gfs2_unlink failed to get a valid > transaction (for example, not enough journal blocks) it would go > to label out_end_trans which did gfs2_trans_end. But if the > trans_begin failed, there's no transaction to end, and trying to > do so results in: kernel BUG at fs/gfs2/trans.c:117! > > This patch changes the goto so that it does not try to end a > non-existent transaction. > > Signed-off-by: Bob Peterson <rpeterso@redhat.com> > --- > fs/gfs2/inode.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c > index 20281992d456..59e0560180ec 100644 > --- a/fs/gfs2/inode.c > +++ b/fs/gfs2/inode.c > @@ -1152,12 +1152,11 @@ static int gfs2_unlink(struct inode *dir, struct dentry *dentry) > > error = gfs2_trans_begin(sdp, 2*RES_DINODE + 3*RES_LEAF + RES_RG_BIT, 0); > if (error) > - goto out_end_trans; > + goto out_gunlock; > > error = gfs2_unlink_inode(dip, dentry); > - > -out_end_trans: > gfs2_trans_end(sdp); > + > out_gunlock: > gfs2_glock_dq(ghs + 2); > out_rgrp: Confirmed. Thanks, Andrea ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-01-29 17:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <381737769.4752688.1517245618092.JavaMail.zimbra@redhat.com>
2018-01-29 17:07 ` [Cluster-devel] GFS2: Don't try to end a non-existent transaction in unlink Bob Peterson
2018-01-29 17:11 ` Andreas Gruenbacher
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.