[DRBD-cvs] DRBD CVS: drbd by phil from
drbd-cvs@linbit.com
drbd-cvs@linbit.com
Mon, 12 Jan 2004 16:03:08 +0100 (CET)
DRBD CVS committal
Author : phil
Host :
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_actlog.c drbd_receiver.c
Log Message:
[Two patches by Lars]
* A very important fix to drbd_al_begin_io() [Heck. This would have been
a very hard to find bug.]
* Removed the BKL
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_actlog.c,v
retrieving revision 1.1.2.46
retrieving revision 1.1.2.47
diff -u -3 -r1.1.2.46 -r1.1.2.47
--- drbd_actlog.c 12 Jan 2004 14:33:31 -0000 1.1.2.46
+++ drbd_actlog.c 12 Jan 2004 15:03:08 -0000 1.1.2.47
@@ -68,6 +68,10 @@
}
al_ext = lc_get(mdev->act_log,enr);
al_flags = mdev->act_log->flags;
+ if (al_ext->lc_number != enr) {
+ if (!lc_try_lock(mdev->resync))
+ BUG(); // has to be successfull, we have the spinlock!
+ }
spin_unlock_irq(&mdev->al_lock);
if (!al_ext) {
@@ -103,6 +107,7 @@
spin_lock_irq(&mdev->al_lock);
lc_changed(mdev->act_log,al_ext);
spin_unlock_irq(&mdev->al_lock);
+ lc_unlock(mdev->resync);
wake_up(&mdev->al_wait);
}
}
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_receiver.c,v
retrieving revision 1.97.2.74
retrieving revision 1.97.2.75
diff -u -3 -r1.97.2.74 -r1.97.2.75
--- drbd_receiver.c 8 Jan 2004 15:59:15 -0000 1.97.2.74
+++ drbd_receiver.c 12 Jan 2004 15:03:08 -0000 1.97.2.75
@@ -494,8 +494,6 @@
struct socket *newsock;
int err = 0;
- //lock_kernel(); tcp stack has per socket locks now
-
err = sock->ops->listen(sock, 5);
if (err)
goto out;
@@ -510,13 +508,11 @@
if (err < 0)
goto out_release;
- // unlock_kernel();
return newsock;
out_release:
sock_release(newsock);
out:
- unlock_kernel();
if(err != -EAGAIN && err != -EINTR)
ERR("accept failed! %d\n", err);
return 0;
@@ -541,7 +537,6 @@
msg.msg_namelen = 0;
msg.msg_flags = MSG_WAITALL | MSG_NOSIGNAL;
- // lock_kernel(); // SMP only. Do we need still need this ?
oldfs = get_fs();
set_fs(KERNEL_DS);
@@ -607,7 +602,6 @@
};
set_fs(oldfs);
- // unlock_kernel();
return rv;
}
@@ -626,11 +620,9 @@
sock->sk->rcvtimeo =
sock->sk->sndtimeo = mdev->conf.try_connect_int*HZ;
- //lock_kernel(); no No NO! connect may sleep!
err = sock->ops->connect(sock,
(struct sockaddr *) mdev->conf.other_addr,
mdev->conf.other_addr_len, 0);
- //unlock_kernel();
if (err) {
sock_release(sock);
@@ -654,11 +646,9 @@
sock2->sk->rcvtimeo =
sock2->sk->sndtimeo = mdev->conf.try_connect_int*HZ;
- //lock_kernel(); tcp stack has per socket locks now
err = sock2->ops->bind(sock2,
(struct sockaddr *) mdev->conf.my_addr,
mdev->conf.my_addr_len);
- //unlock_kernel();
if (err) {
ERR("Unable to bind (%d)\n", err);
sock_release(sock2);