public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Pekka Enberg <penberg@cs.helsinki.fi>
To: sfrench@samba.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH 5/6] cifs: reduce deep nesting
Date: Sat, 15 Jan 2005 15:30:18 +0200	[thread overview]
Message-ID: <1105795818.9555.9.camel@localhost> (raw)
In-Reply-To: <1105795751.9555.7.camel@localhost>

This patch converts deep if statement nesting to use gotos in few places.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---

 cifsfs.c  |   51 +++++++++++++++++++++++++++++++--------------------
 connect.c |   44 ++++++++++++++++++++------------------------
 2 files changed, 51 insertions(+), 44 deletions(-)

Index: linux/fs/cifs/cifsfs.c
===================================================================
--- linux.orig/fs/cifs/cifsfs.c	2005-01-11 08:04:55.007622032 +0200
+++ linux/fs/cifs/cifsfs.c	2005-01-11 08:04:57.454250088 +0200
@@ -839,26 +839,37 @@
 	}
 
 	rc = cifs_init_inodecache();
-	if (!rc) {
-		rc = cifs_init_mids();
-		if (!rc) {
-			rc = cifs_init_request_bufs();
-			if (!rc) {
-				rc = register_filesystem(&cifs_fs_type);
-				if (!rc) {                
-					rc = (int)kernel_thread(cifs_oplock_thread, NULL, 
-						CLONE_FS | CLONE_FILES | CLONE_VM);
-					if(rc > 0)
-						return 0;
-					else 
-						cERROR(1,("error %d create oplock thread",rc));
-				}
-				cifs_destroy_request_bufs();
-			}
-			cifs_destroy_mids();
-		}
-		cifs_destroy_inodecache();
-	}
+	if (rc)
+		goto failed_init_inodecache;
+
+	rc = cifs_init_mids();
+	if (rc)
+		goto failed_init_mids;
+
+	rc = cifs_init_request_bufs();
+	if (rc)
+		goto failed_init_request_bufs;
+
+	rc = register_filesystem(&cifs_fs_type);
+	if (rc)
+		goto failed_register_filesystem;
+
+	rc = kernel_thread(cifs_oplock_thread, NULL,
+			   CLONE_FS | CLONE_FILES | CLONE_VM);
+	if (rc <= 0)
+		goto failed_kernel_thread;
+
+	return 0;
+
+ failed_kernel_thread:
+	cERROR(1,("error %d create oplock thread",rc));
+ failed_register_filesystem:
+	cifs_destroy_request_bufs();
+ failed_init_request_bufs:
+	cifs_destroy_mids();
+ failed_init_mids:
+	cifs_destroy_inodecache();
+ failed_init_inodecache:
 #ifdef CONFIG_PROC_FS
 	cifs_proc_clean();
 #endif
Index: linux/fs/cifs/connect.c
===================================================================
--- linux.orig/fs/cifs/connect.c	2005-01-11 08:04:50.326333696 +0200
+++ linux/fs/cifs/connect.c	2005-01-11 08:04:57.457249632 +0200
@@ -122,11 +122,9 @@
 	read_lock(&GlobalSMBSeslock);
 	list_for_each(tmp, &GlobalSMBSessionList) {
 		ses = list_entry(tmp, struct cifsSesInfo, cifsSessionList);
-		if (ses->server) {
-			if (ses->server == server) {
-				ses->status = CifsNeedReconnect;
-				ses->ipc_tid = 0;
-			}
+		if (ses->server && ses->server == server) {
+			ses->status = CifsNeedReconnect;
+			ses->ipc_tid = 0;
 		}
 		/* else tcp and smb sessions need reconnection */
 	}
@@ -857,33 +855,31 @@
 		 char *userName, struct TCP_Server_Info **psrvTcp)
 {
 	struct list_head *tmp;
-	struct cifsSesInfo *ses;
+	struct cifsSesInfo *ret = NULL;
 	*psrvTcp = NULL;
 	read_lock(&GlobalSMBSeslock);
 
 	list_for_each(tmp, &GlobalSMBSessionList) {
-		ses = list_entry(tmp, struct cifsSesInfo, cifsSessionList);
-		if (ses->server) {
-			if((target_ip_addr && 
-				(ses->server->addr.sockAddr.sin_addr.s_addr
-				  == target_ip_addr->s_addr)) || (target_ip6_addr
-				&& memcmp(&ses->server->addr.sockAddr6.sin6_addr,
-					target_ip6_addr,sizeof(*target_ip6_addr)))){
-				/* BB lock server and tcp session and increment use count here?? */
-				*psrvTcp = ses->server;	/* found a match on the TCP session */
-				/* BB check if reconnection needed */
-				if (strncmp
-				    (ses->userName, userName,
-				     MAX_USERNAME_SIZE) == 0){
-					read_unlock(&GlobalSMBSeslock);
-					return ses;	/* found exact match on both tcp and SMB sessions */
-				}
+		struct cifsSesInfo * ses = list_entry(tmp, struct cifsSesInfo, cifsSessionList);
+		if (!ses->server)
+			continue;
+		if((target_ip_addr && 
+			(ses->server->addr.sockAddr.sin_addr.s_addr
+			  == target_ip_addr->s_addr)) || (target_ip6_addr
+			&& memcmp(&ses->server->addr.sockAddr6.sin6_addr,
+				target_ip6_addr,sizeof(*target_ip6_addr)))){
+			/* BB lock server and tcp session and increment use count here?? */
+			*psrvTcp = ses->server;	/* found a match on the TCP session */
+			/* BB check if reconnection needed */
+			if (strncmp(ses->userName, userName, MAX_USERNAME_SIZE) == 0) {
+				ret = ses;
+				goto out;
 			}
 		}
-		/* else tcp and smb sessions need reconnection */
 	}
+ out:
 	read_unlock(&GlobalSMBSeslock);
-	return NULL;
+	return ret;
 }
 
 static struct cifsTconInfo *



  reply	other threads:[~2005-01-15 13:42 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-15 13:25 [PATCH 1/6] cifs: copy_to_user and copy_from_user fixes Pekka Enberg
2005-01-15 13:26 ` [PATCH 2/6] cifs: remove dead code Pekka Enberg
2005-01-15 13:28   ` [PATCH 3/6] cifs: enum conversion Pekka Enberg
2005-01-15 13:29     ` [PATCH 4/6] cifs: remove spurious casts Pekka Enberg
2005-01-15 13:30       ` Pekka Enberg [this message]
2005-01-15 13:31         ` [PATCH 6/6] cifs: convert schedule_timeout to msleep and ssleep Pekka Enberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1105795818.9555.9.camel@localhost \
    --to=penberg@cs.helsinki.fi \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sfrench@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox