diff -up sblim-cmpi-fsvol-1.5.1/OSBase_CommonFsvol.c.orig sblim-cmpi-fsvol-1.5.1/OSBase_CommonFsvol.c --- sblim-cmpi-fsvol-1.5.1/OSBase_CommonFsvol.c.orig 2017-03-09 10:38:54.850273549 +0100 +++ sblim-cmpi-fsvol-1.5.1/OSBase_CommonFsvol.c 2017-03-09 10:38:54.853273555 +0100 @@ -293,6 +293,11 @@ unsigned char fs_mount_status( char * fs char pathname_label[255] = "/dev/disk/by-label/"; char * findname = NULL; char * realname = NULL; + char * dmname = NULL; + char * dmsetup_cmd = "dmsetup info -c -o name --noheadings "; + char * cmd = NULL; + char ** hdout = NULL; + int rc = 0; _OSBASE_TRACE(3,("--- fs_mount_status() called for %s",fsname)); @@ -319,7 +324,25 @@ unsigned char fs_mount_status( char * fs if (realname != NULL) { _OSBASE_TRACE(4,("--- fs_mount_status() %s is really %s",findname, realname)); - vrc = fs_mount_status_internal(realname); + if (strstr(realname,"/dev/dm-")) { + cmd = calloc (1, (strlen(dmsetup_cmd)+strlen(realname))); + strcpy( cmd, dmsetup_cmd ); + strcat( cmd, realname ); + rc = runcommand( cmd , NULL , &hdout , NULL ); + if( rc == 0 ) { + if( strlen(hdout[0])!=0 ) { + dmname = strdup(hdout[0]); + *(dmname+strlen(dmname)-1) = 0; + _OSBASE_TRACE(4,("--- fs_mount_status() %s is %s",realname,dmname)); + vrc = fs_mount_status_internal(dmname); + free(dmname); + } + } + if(cmd) free(cmd); + freeresultbuf(hdout); + } else { + vrc = fs_mount_status_internal(realname); + } free(realname); } else {