untangling do_lookup() - massage !dentry case towards __lookup_hash()

Reorder if-else cases for starters...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/fs/namei.c b/fs/namei.c
index 14bb00a..5414438 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1174,39 +1174,34 @@
 
 		mutex_lock(&dir->i_mutex);
 		dentry = d_lookup(parent, name);
-		if (likely(!dentry)) {
-			dentry = d_alloc_and_lookup(parent, name, nd);
-			if (IS_ERR(dentry)) {
-				mutex_unlock(&dir->i_mutex);
-				return PTR_ERR(dentry);
-			}
-			/* known good */
-			status = 1;
-		} else if (unlikely(d_need_lookup(dentry))) {
+		if (dentry && d_need_lookup(dentry)) {
 			dentry = d_inode_lookup(parent, dentry, nd);
 			if (IS_ERR(dentry)) {
 				mutex_unlock(&dir->i_mutex);
 				return PTR_ERR(dentry);
 			}
-			/* known good */
-			status = 1;
-		} else if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE))
+		} else if (dentry && (dentry->d_flags & DCACHE_OP_REVALIDATE)) {
 			status = d_revalidate(dentry, nd);
-		if (unlikely(status <= 0)) {
-			if (status < 0) {
-				mutex_unlock(&dir->i_mutex);
-				dput(dentry);
-				return status;
-			}
-			if (!d_invalidate(dentry)) {
-				dput(dentry);
-				dentry = d_alloc_and_lookup(parent, name, nd);
-				if (IS_ERR(dentry)) {
+			if (unlikely(status <= 0)) {
+				if (status < 0) {
 					mutex_unlock(&dir->i_mutex);
-					return PTR_ERR(dentry);
+					dput(dentry);
+					return status;
 				}
-				/* known good */
-				status = 1;
+				if (!d_invalidate(dentry)) {
+					dput(dentry);
+					dentry = d_alloc_and_lookup(parent, name, nd);
+					if (IS_ERR(dentry)) {
+						mutex_unlock(&dir->i_mutex);
+						return PTR_ERR(dentry);
+					}
+				}
+			}
+		} else if (!dentry) {
+			dentry = d_alloc_and_lookup(parent, name, nd);
+			if (IS_ERR(dentry)) {
+				mutex_unlock(&dir->i_mutex);
+				return PTR_ERR(dentry);
 			}
 		}
 		mutex_unlock(&dir->i_mutex);