Browse Source

RDS: Add rds_conn_path_error()

rds_conn_path_error() is the MP-aware analog of rds_conn_error,
to be used by multipath-capable callers.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Sowmini Varadhan 9 years ago
parent
commit
fb1b3dc43d
3 changed files with 18 additions and 1 deletions
  1. 12 0
      net/rds/connection.c
  2. 4 0
      net/rds/rds.h
  3. 2 1
      net/rds/threads.c

+ 12 - 0
net/rds/connection.c

@@ -655,3 +655,15 @@ __rds_conn_error(struct rds_connection *conn, const char *fmt, ...)
 
 
 	rds_conn_drop(conn);
 	rds_conn_drop(conn);
 }
 }
+
+void
+__rds_conn_path_error(struct rds_conn_path *cp, const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	vprintk(fmt, ap);
+	va_end(ap);
+
+	rds_conn_path_drop(cp);
+}

+ 4 - 0
net/rds/rds.h

@@ -669,6 +669,10 @@ void __rds_conn_error(struct rds_connection *conn, const char *, ...);
 #define rds_conn_error(conn, fmt...) \
 #define rds_conn_error(conn, fmt...) \
 	__rds_conn_error(conn, KERN_WARNING "RDS: " fmt)
 	__rds_conn_error(conn, KERN_WARNING "RDS: " fmt)
 
 
+void __rds_conn_path_error(struct rds_conn_path *cp, const char *, ...);
+#define rds_conn_path_error(cp, fmt...) \
+	__rds_conn_path_error(cp, KERN_WARNING "RDS: " fmt)
+
 static inline int
 static inline int
 rds_conn_path_transition(struct rds_conn_path *cp, int old, int new)
 rds_conn_path_transition(struct rds_conn_path *cp, int old, int new)
 {
 {

+ 2 - 1
net/rds/threads.c

@@ -163,7 +163,8 @@ void rds_connect_worker(struct work_struct *work)
 						     RDS_CONN_DOWN))
 						     RDS_CONN_DOWN))
 				rds_queue_reconnect(cp);
 				rds_queue_reconnect(cp);
 			else
 			else
-				rds_conn_error(conn, "RDS: connect failed\n");
+				rds_conn_path_error(cp,
+						    "RDS: connect failed\n");
 		}
 		}
 	}
 	}
 }
 }