From 7d945a3aa7608f68dba04083d3421e0b43052660 Mon Sep 17 00:00:00 2001
From: Al Viro <viro@zeniv.linux.org.uk>
Date: Mon, 26 Jul 2010 11:53:30 +0400
Subject: logfs get_sb, part 3

take logfs_get_sb_device() calls to logfs_get_sb() itself

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 fs/logfs/super.c | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

(limited to 'fs/logfs/super.c')

diff --git a/fs/logfs/super.c b/fs/logfs/super.c
index c80837e54bb3..f57a150b4779 100644
--- a/fs/logfs/super.c
+++ b/fs/logfs/super.c
@@ -596,26 +596,31 @@ static int logfs_get_sb(struct file_system_type *type, int flags,
 {
 	ulong mtdnr;
 	struct logfs_super *super;
+	int err;
 
 	super = kzalloc(sizeof(*super), GFP_KERNEL);
 	if (!super)
 		return -ENOMEM;
 
 	if (!devname)
-		return logfs_get_sb_bdev(super, type, flags, devname, mnt);
-	if (strncmp(devname, "mtd", 3))
-		return logfs_get_sb_bdev(super, type, flags, devname, mnt);
-
-	{
+		err = logfs_get_sb_bdev(super, type, devname);
+	else if (strncmp(devname, "mtd", 3))
+		err = logfs_get_sb_bdev(super, type, devname);
+	else {
 		char *garbage;
 		mtdnr = simple_strtoul(devname+3, &garbage, 0);
-		if (*garbage) {
-			kfree(super);
-			return -EINVAL;
-		}
+		if (*garbage)
+			err = -EINVAL;
+		else
+			err = logfs_get_sb_mtd(super, mtdnr);
+	}
+
+	if (err) {
+		kfree(super);
+		return err;
 	}
 
-	return logfs_get_sb_mtd(super, type, flags, mtdnr, mnt);
+	return logfs_get_sb_device(super, type, flags, mnt);
 }
 
 static struct file_system_type logfs_fs_type = {
-- 
cgit v1.2.3-58-ga151