[DRBD-cvs] drbd by phil; [patch by LGE] * Use flush_signals() * B...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Sun, 7 Mar 2004 12:49:28 +0100 (CET)
DRBD CVS committal
Author : phil
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_compat_wrappers.h drbd_dsender.c drbd_int.h
drbd_receiver.c
Log Message:
[patch by LGE]
* Use flush_signals()
* Be more verbous if something strange happens in drbdd_init()
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_compat_wrappers.h,v
retrieving revision 1.1.2.32
retrieving revision 1.1.2.33
diff -u -3 -r1.1.2.32 -r1.1.2.33
--- drbd_compat_wrappers.h 7 Mar 2004 08:46:37 -0000 1.1.2.32
+++ drbd_compat_wrappers.h 7 Mar 2004 11:49:23 -0000 1.1.2.33
@@ -17,7 +17,7 @@
*/
/* Returns the number of 512 byte sectors of the device */
-static inline sector_t long drbd_get_capacity(kdev_t dev)
+static inline sector_t drbd_get_capacity(kdev_t dev)
{
return dev ? blk_size[MAJOR(dev)][MINOR(dev)]<<1 : 0;
}
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_dsender.c,v
retrieving revision 1.1.2.80
retrieving revision 1.1.2.81
diff -u -3 -r1.1.2.80 -r1.1.2.81
--- drbd_dsender.c 6 Mar 2004 08:45:28 -0000 1.1.2.80
+++ drbd_dsender.c 7 Mar 2004 11:49:23 -0000 1.1.2.81
@@ -722,7 +722,6 @@
{
drbd_dev *mdev = thi->mdev;
struct drbd_work *w;
- unsigned long flags;
int intr;
sprintf(current->comm, "drbd%d_worker", (int)(mdev-drbd_conf));
@@ -735,10 +734,7 @@
if (intr) {
D_ASSERT(intr == -EINTR);
- LOCK_SIGMASK(current,flags);
- sigemptyset(¤t->pending.signal);
- RECALC_SIGPENDING(current);
- UNLOCK_SIGMASK(current,flags);
+ drbd_flush_signals(current);
if (thi->t_state != Running )
break;
continue;
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_int.h,v
retrieving revision 1.58.2.133
retrieving revision 1.58.2.134
diff -u -3 -r1.58.2.133 -r1.58.2.134
--- drbd_int.h 7 Mar 2004 08:46:37 -0000 1.58.2.133
+++ drbd_int.h 7 Mar 2004 11:49:23 -0000 1.58.2.134
@@ -938,6 +938,18 @@
#include "drbd_compat_wrappers.h"
+static inline void
+drbd_flush_signals(struct task_struct *t)
+{
+ NOT_IN_26(
+ unsigned long flags;
+ LOCK_SIGMASK(t,flags);
+ )
+
+ flush_signals(t);
+ NOT_IN_26(UNLOCK_SIGMASK(t,flags));
+}
+
static inline void set_cstate(drbd_dev* mdev,Drbd_CState ns)
{
unsigned long flags;
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_receiver.c,v
retrieving revision 1.97.2.119
retrieving revision 1.97.2.120
diff -u -3 -r1.97.2.119 -r1.97.2.120
--- drbd_receiver.c 6 Mar 2004 18:25:07 -0000 1.97.2.119
+++ drbd_receiver.c 7 Mar 2004 11:49:23 -0000 1.97.2.120
@@ -598,12 +598,7 @@
}
if(mdev->cstate==Unconnected) return 0;
if(signal_pending(current)) {
- unsigned long flags;
- LOCK_SIGMASK(current,flags);
- sigemptyset(¤t->pending.signal);
- RECALC_SIGPENDING(current);
- UNLOCK_SIGMASK(current,flags);
-
+ drbd_flush_signals(current);
smp_mb();
if ((volatile int)mdev->receiver.t_state != Running)
return 0;
@@ -1601,14 +1596,14 @@
drbdd(mdev);
drbd_disconnect(mdev);
if (thi->t_state == Exiting) break;
- if (thi->t_state == Restarting) {
- unsigned long flags;
+ else {
+ if (signal_pending(current)) {
+ drbd_flush_signals(current);
+ if (thi->t_state != Restarting)
+ ERR("unexpected thread state: %d\n",
+ thi->t_state);
+ }
thi->t_state = Running;
-
- LOCK_SIGMASK(current,flags);
- sigemptyset(¤t->pending.signal);
- RECALC_SIGPENDING(current);
- UNLOCK_SIGMASK(current,flags);
}
}
@@ -1744,7 +1739,6 @@
drbd_dev *mdev = thi->mdev;
Drbd_Header *h = &mdev->meta.rbuf.head;
- unsigned long flags = 0;
int rv,len;
void *buf = h;
int received = 0;
@@ -1808,10 +1802,7 @@
set_bit(SEND_PING,&mdev->flags);
continue;
} else if (rv == -EINTR) {
- LOCK_SIGMASK(current,flags);
- sigemptyset(¤t->pending.signal);
- RECALC_SIGPENDING(current);
- UNLOCK_SIGMASK(current,flags);
+ drbd_flush_signals(current);
// Do something on signal ??
continue;
} else {