}
                        if (gh->gh_list.prev == &gl->gl_holders &&
                            glops->go_lock) {
-                               spin_unlock(&gl->gl_lockref.lock);
-                               /* FIXME: eliminate this eventually */
-                               ret = glops->go_lock(gh);
-                               spin_lock(&gl->gl_lockref.lock);
-                               if (ret) {
-                                       if (ret == 1)
-                                               return 2;
-                                       gh->gh_error = ret;
-                                       list_del_init(&gh->gh_list);
-                                       trace_gfs2_glock_queue(gh, 0);
-                                       gfs2_holder_wake(gh);
-                                       goto restart;
+                               if (!(gh->gh_flags & GL_SKIP)) {
+                                       spin_unlock(&gl->gl_lockref.lock);
+                                       /* FIXME: eliminate this eventually */
+                                       ret = glops->go_lock(gh);
+                                       spin_lock(&gl->gl_lockref.lock);
+                                       if (ret) {
+                                               if (ret == 1)
+                                                       return 2;
+                                               gh->gh_error = ret;
+                                               list_del_init(&gh->gh_list);
+                                               trace_gfs2_glock_queue(gh, 0);
+                                               gfs2_holder_wake(gh);
+                                               goto restart;
+                                       }
                                }
                                set_bit(HIF_HOLDER, &gh->gh_iflags);
                                trace_gfs2_promote(gh, 1);
 
        struct gfs2_inode *ip = gl->gl_object;
        int error = 0;
 
-       if (!ip || (gh->gh_flags & GL_SKIP))
+       if (!ip)
                return 0;
 
        if (test_bit(GIF_INVALID, &ip->i_flags)) {