Commit 4ec3c19d authored by Andreas Gruenbacher's avatar Andreas Gruenbacher
Browse files

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: default avatarAndreas Gruenbacher <agruenba@redhat.com>
parent 38552ff6
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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);