[DRBD-cvs] drbd by phil; * Linux-2.6's daemonize() blocks all sig...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Sat, 31 Jan 2004 17:54:26 +0100 (CET)
DRBD CVS committal
Author : phil
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_compat_wrappers.h drbd_main.c
Log Message:
* Linux-2.6's daemonize() blocks all signals. Now we unblock our
signals ater daemonize. -> Now it is possible to unload the
module after a thread was started (e.g. drbdadm connect resouce)
* Ported my gdb helper functions to Linux-2.6
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_compat_wrappers.h,v
retrieving revision 1.1.2.15
retrieving revision 1.1.2.16
diff -u -3 -r1.1.2.15 -r1.1.2.16
--- drbd_compat_wrappers.h 30 Jan 2004 20:12:34 -0000 1.1.2.15
+++ drbd_compat_wrappers.h 31 Jan 2004 16:54:21 -0000 1.1.2.16
@@ -277,7 +277,6 @@
}
#else
-#warning "FIXME these are still untested!"
#include <linux/buffer_head.h> // for fsync_bdev
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.117
retrieving revision 1.73.2.118
diff -u -3 -r1.73.2.117 -r1.73.2.118
--- drbd_main.c 30 Jan 2004 20:12:34 -0000 1.73.2.117
+++ drbd_main.c 31 Jan 2004 16:54:21 -0000 1.73.2.118
@@ -51,6 +51,7 @@
#include <linux/proc_fs.h>
#include <linux/init.h>
#include <linux/slab.h>
+#include <linux/devfs_fs_kernel.h>
#if defined(CONFIG_PPC64) || defined(CONFIG_SPARC64) || defined(CONFIG_X86_64)
extern int register_ioctl32_conversion(unsigned int cmd,
@@ -70,7 +71,6 @@
#include "drbd_int.h"
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) && defined (CONFIG_DEVFS_FS)
-#include <linux/devfs_fs_kernel.h>
static devfs_handle_t devfs_handle;
#endif
@@ -288,9 +288,8 @@
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,14)
-// Check when daemonize was introduced.
-/* NOTE: seems like all 2.4.X have it, so it should be 2,4,0 above.
- * in 2.4.6 is is prototyped as
+// daemonize was no global symbol before 2.4.14
+/* in 2.4.6 is is prototyped as
* void daemonize(const char *name, ...)
* though, so maybe we want to do this for 2.4.x already, too.
*/
@@ -316,7 +315,15 @@
void drbd_daemonize(void) {
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
+ sigset_t enable;
+
daemonize("drbd_thread");
+ // Linux 2.6.x's daemonize blocks all signals. Unblock "our" signals.
+
+ sigemptyset(&enable);
+ sigaddset(&enable,DRBD_SIG);
+ sigaddset(&enable,SIGTERM);
+ sigprocmask(SIG_UNBLOCK, &enable, NULL);
#else
daemonize();
#endif
@@ -1257,9 +1264,7 @@
goto Enomem;
#else
-#ifdef CONFIG_DEVFS_FS
devfs_mk_dir(DEVFS_NAME);
-#endif
for (i = 0; i < minor_count; i++) {
drbd_dev *mdev = drbd_conf + i;
@@ -1343,7 +1348,7 @@
blk_size[MAJOR_NR] = drbd_sizes;
)
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) && defined (CONFIG_DEVFS_FS)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
devfs_handle = devfs_mk_dir (NULL, "nbd", NULL);
devfs_register_series(devfs_handle, "%u", minor_count,
DEVFS_FL_DEFAULT, MAJOR_NR, 0,
@@ -1448,12 +1453,10 @@
drbd_cleanup();
-#ifdef CONFIG_DEVFS_FS
-# if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
devfs_unregister(devfs_handle);
-# else
+#else
devfs_remove(DEVFS_NAME);
-# endif
#endif
}
@@ -1466,7 +1469,6 @@
mdev->lo_device = 0;
mdev->md_device = 0;
)
-#warning "FIXME unset L26 members"
ONLY_IN_26(
bd_release(mdev->backing_bdev);
bd_release(mdev->md_bdev);