Index: src/drbd/drbd_nl.c =================================================================== --- src/drbd/drbd_nl.c (revision 15638) +++ src/drbd/drbd_nl.c (working copy) @@ -164,7 +164,7 @@ int drbd_khelper(drbd_dev *mdev, char* cmd) { char mb[12]; - char *argv[] = {"/sbin/drbdadm", cmd, mb, NULL }; + char *argv[] = {usermode_helper, cmd, mb, NULL }; static char *envp[] = { "HOME=/", "TERM=linux", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", @@ -172,8 +172,10 @@ snprintf(mb,12,"minor-%d",mdev_to_minor(mdev)); + INFO("helper command: %s %s\n",usermode_helper,cmd); + drbd_bcast_ev_helper(mdev,cmd); - return call_usermodehelper("/sbin/drbdadm",argv,envp,1); + return call_usermodehelper(usermode_helper,argv,envp,1); } drbd_disks_t drbd_try_outdate_peer(drbd_dev *mdev) Index: src/drbd/drbd_main.c =================================================================== --- src/drbd/drbd_main.c (revision 15638) +++ src/drbd/drbd_main.c (working copy) @@ -119,6 +119,14 @@ module_param(trace_devs,int,0644); #endif + +// Module parameter for setting the user mode helper program +// to run. Default is /sbin/drbdadm + +char usermode_helper[80] = "/sbin/drbdadm"; + +module_param_string(usermode_helper, usermode_helper, sizeof(usermode_helper), 0644); + // global panic flag volatile int drbd_did_panic = 0; Index: src/drbd/drbd_int.h =================================================================== --- src/drbd/drbd_int.h (revision 15638) +++ src/drbd/drbd_int.h (working copy) @@ -51,6 +51,8 @@ extern int fault_devs; #endif +extern char usermode_helper[]; + #include #ifdef DRBD_MAJOR # warning "FIXME. DRBD_MAJOR is now officially defined in major.h"