Fix for uevent devpath handling
Benjamin Marzinski
maintainerPATCH 1/6 Fix for uevent devpath handling
This is necessary to make uevents work on fedora, since devpath appears as something like:
'/devices/pci0000:00/0000:00:0a.0/0000:06:00.0/host11/rport-11:0-1/target11:0:1/11:0:1:0/block/sdi'
It simply strips off the everything up to the /block.
Signed-off-by Benjamin Marzinski <[email protected]>
--- multipathd/main.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
multipathd/main.c +9 -3
@@ -603,14 +603,20 @@ uxsock_trigger (char * str, char ** replstatic int uev_discard (char * devpath) { +char *tmp;char a[10 ], b[10 ];/* * keep only block devices, discard partitions */ -if (sscanf (devpath,"/block/%10s" , a) !=1 || -sscanf (devpath,"/block/%10[^/]/%10s" , a, b) ==2 ) { -condlog (4 ,"discard event on %s" , devpath); + tmp =strstr (devpath,"/block/" ); +if (tmp ==NULL ){ +condlog (0 ,"no /block/ in '%s'" , devpath); +return 1 ; + } +if (sscanf (tmp,"/block/%10s" , a) !=1 || +sscanf (tmp,"/block/%10[^/]/%10s" , a, b) ==2 ) { +condlog (0 ,"discard event on %s" , devpath);return 1 ; }return 0 ;