From: Andreas Gruenbacher Date: Sat, 5 Nov 2022 16:12:34 +0000 (+0100) Subject: gfs2: Handle -EBUSY result of insert_inode_locked4 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=4ec3c19d058f7391ec631b8a1b0a690422b246a9;p=linux.git gfs2: Handle -EBUSY result of insert_inode_locked4 When creating a new inode, there is a small chance that an inode lookup for a previous version of the same inode is still in progress. In that case, that previous lookup will eventually fail, but we may still need to retry here. Signed-off-by: Andreas Gruenbacher --- diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index c057f3bd475fb..9fbbc365a404c 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c @@ -734,8 +734,12 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry, goto fail_free_inode; gfs2_cancel_delete_work(io_gl); +retry: error = insert_inode_locked4(inode, ip->i_no_addr, iget_test, &ip->i_no_addr); - BUG_ON(error); + if (error == -EBUSY) + goto retry; + if (error) + goto fail_gunlock2; error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, GL_EXACT | GL_NOPID, &ip->i_iopen_gh);