Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm:
  dlm: <linux/dlm_plock.h> should be "unifdef"ed.
  dlm: fix plock dev_write return value
  dlm: tcp_connect_to_sock should check for -EINVAL, not EINVAL
  dlm: section mismatch warning fix
  dlm: convert connections_lock in a mutex
This commit is contained in:
Linus Torvalds 2008-05-19 14:04:47 -07:00
commit 8c4bab3a1a
4 changed files with 17 additions and 16 deletions

View file

@ -50,6 +50,7 @@
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/idr.h> #include <linux/idr.h>
#include <linux/file.h> #include <linux/file.h>
#include <linux/mutex.h>
#include <linux/sctp.h> #include <linux/sctp.h>
#include <net/sctp/user.h> #include <net/sctp/user.h>
@ -138,7 +139,7 @@ static struct workqueue_struct *recv_workqueue;
static struct workqueue_struct *send_workqueue; static struct workqueue_struct *send_workqueue;
static DEFINE_IDR(connections_idr); static DEFINE_IDR(connections_idr);
static DECLARE_MUTEX(connections_lock); static DEFINE_MUTEX(connections_lock);
static int max_nodeid; static int max_nodeid;
static struct kmem_cache *con_cache; static struct kmem_cache *con_cache;
@ -205,9 +206,9 @@ static struct connection *nodeid2con(int nodeid, gfp_t allocation)
{ {
struct connection *con; struct connection *con;
down(&connections_lock); mutex_lock(&connections_lock);
con = __nodeid2con(nodeid, allocation); con = __nodeid2con(nodeid, allocation);
up(&connections_lock); mutex_unlock(&connections_lock);
return con; return con;
} }
@ -218,15 +219,15 @@ static struct connection *assoc2con(int assoc_id)
int i; int i;
struct connection *con; struct connection *con;
down(&connections_lock); mutex_lock(&connections_lock);
for (i=0; i<=max_nodeid; i++) { for (i=0; i<=max_nodeid; i++) {
con = __nodeid2con(i, 0); con = __nodeid2con(i, 0);
if (con && con->sctp_assoc == assoc_id) { if (con && con->sctp_assoc == assoc_id) {
up(&connections_lock); mutex_unlock(&connections_lock);
return con; return con;
} }
} }
up(&connections_lock); mutex_unlock(&connections_lock);
return NULL; return NULL;
} }
@ -381,7 +382,7 @@ static void sctp_init_failed(void)
int i; int i;
struct connection *con; struct connection *con;
down(&connections_lock); mutex_lock(&connections_lock);
for (i=1; i<=max_nodeid; i++) { for (i=1; i<=max_nodeid; i++) {
con = __nodeid2con(i, 0); con = __nodeid2con(i, 0);
if (!con) if (!con)
@ -393,7 +394,7 @@ static void sctp_init_failed(void)
} }
} }
} }
up(&connections_lock); mutex_unlock(&connections_lock);
} }
/* Something happened to an association */ /* Something happened to an association */
@ -930,7 +931,7 @@ static void tcp_connect_to_sock(struct connection *con)
* errors we try again until the max number of retries is reached. * errors we try again until the max number of retries is reached.
*/ */
if (result != -EHOSTUNREACH && result != -ENETUNREACH && if (result != -EHOSTUNREACH && result != -ENETUNREACH &&
result != -ENETDOWN && result != EINVAL result != -ENETDOWN && result != -EINVAL
&& result != -EPROTONOSUPPORT) { && result != -EPROTONOSUPPORT) {
lowcomms_connect_sock(con); lowcomms_connect_sock(con);
result = 0; result = 0;
@ -1417,7 +1418,7 @@ void dlm_lowcomms_stop(void)
/* Set all the flags to prevent any /* Set all the flags to prevent any
socket activity. socket activity.
*/ */
down(&connections_lock); mutex_lock(&connections_lock);
for (i = 0; i <= max_nodeid; i++) { for (i = 0; i <= max_nodeid; i++) {
con = __nodeid2con(i, 0); con = __nodeid2con(i, 0);
if (con) { if (con) {
@ -1426,11 +1427,11 @@ void dlm_lowcomms_stop(void)
con->sock->sk->sk_user_data = NULL; con->sock->sk->sk_user_data = NULL;
} }
} }
up(&connections_lock); mutex_unlock(&connections_lock);
work_stop(); work_stop();
down(&connections_lock); mutex_lock(&connections_lock);
clean_writequeues(); clean_writequeues();
for (i = 0; i <= max_nodeid; i++) { for (i = 0; i <= max_nodeid; i++) {
@ -1443,7 +1444,7 @@ void dlm_lowcomms_stop(void)
} }
} }
max_nodeid = 0; max_nodeid = 0;
up(&connections_lock); mutex_unlock(&connections_lock);
kmem_cache_destroy(con_cache); kmem_cache_destroy(con_cache);
idr_init(&connections_idr); idr_init(&connections_idr);
} }

View file

@ -95,7 +95,7 @@ int __init dlm_netlink_init(void)
return rv; return rv;
} }
void __exit dlm_netlink_exit(void) void dlm_netlink_exit(void)
{ {
genl_unregister_ops(&family, &dlm_nl_ops); genl_unregister_ops(&family, &dlm_nl_ops);
genl_unregister_family(&family); genl_unregister_family(&family);

View file

@ -379,7 +379,7 @@ static ssize_t dev_write(struct file *file, const char __user *u, size_t count,
struct plock_xop *xop; struct plock_xop *xop;
xop = (struct plock_xop *)op; xop = (struct plock_xop *)op;
if (xop->callback) if (xop->callback)
count = dlm_plock_callback(op); dlm_plock_callback(op);
else else
wake_up(&recv_wq); wake_up(&recv_wq);
} else } else

View file

@ -105,7 +105,6 @@ header-y += ixjuser.h
header-y += jffs2.h header-y += jffs2.h
header-y += keyctl.h header-y += keyctl.h
header-y += limits.h header-y += limits.h
header-y += dlm_plock.h
header-y += magic.h header-y += magic.h
header-y += major.h header-y += major.h
header-y += matroxfb.h header-y += matroxfb.h
@ -190,6 +189,7 @@ unifdef-y += cyclades.h
unifdef-y += dccp.h unifdef-y += dccp.h
unifdef-y += dirent.h unifdef-y += dirent.h
unifdef-y += dlm.h unifdef-y += dlm.h
unifdef-y += dlm_plock.h
unifdef-y += edd.h unifdef-y += edd.h
unifdef-y += elf.h unifdef-y += elf.h
unifdef-y += elfcore.h unifdef-y += elfcore.h