diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 97076d3f562f90dfec3a40f06abb5fdb165a2fee..9e91c9d92bd659f0732aa8050b011ac0cff841ff 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -162,8 +162,10 @@ int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
 	int error;
 
 	error = init_threads(sdp);
-	if (error)
+	if (error) {
+		gfs2_withdraw_delayed(sdp);
 		return error;
+	}
 
 	j_gl->gl_ops->go_inval(j_gl, DIO_METADATA);
 	if (gfs2_withdrawn(sdp)) {