goto bail;
        }
 
-       /* If we're coming from downconvert_thread we can't go into our own
-        * voting [hello, deadlock city!], so unforuntately we just
-        * have to skip deleting this guy. That's OK though because
-        * the node who's doing the actual deleting should handle it
-        * anyway. */
+       /*
+        * If we're coming from downconvert_thread we can't go into our own
+        * voting [hello, deadlock city!] so we cannot delete the inode. But
+        * since we dropped last inode ref when downconverting dentry lock,
+        * we cannot have the file open and thus the node doing unlink will
+        * take care of deleting the inode.
+        */
        if (current == osb->dc_task)
                goto bail;
 
        if (is_bad_inode(inode) || !OCFS2_I(inode)->ip_blkno)
                goto bail;
 
-       dquot_initialize(inode);
-
        if (!ocfs2_inode_is_valid_to_delete(inode)) {
                /* It's probably not necessary to truncate_inode_pages
                 * here but we do it for safety anyway (it will most
                goto bail;
        }
 
+       dquot_initialize(inode);
+
        /* We want to block signals in delete_inode as the lock and
         * messaging paths may return us -ERESTARTSYS. Which would
         * cause us to exit early, resulting in inodes being orphaned