On Thu, Mar 18, 2021 at 10:14:13AM +0100, mwi...@suse.com wrote:
> From: Martin Wilck <mwi...@suse.com>
> 
> Since f131e31 ("multipath-tools: devt test: avoid failure when run in
> containers"), we check the existence of /sys/dev/block before running
> the devt test. It turns out that on recent releases of podman (3.0.1),
> this check is insufficient, because /sys/dev/block exists now in
> containers, albeit empty. So we need to check for actual entries
> in the directory.
> 
> Fixes: f131e31 ("multipath-tools: devt test: avoid failure when run in 
> containers")
Reviewed-by: Benjamin Marzinski <bmarz...@redhat.com>
> Signed-off-by: Martin Wilck <mwi...@suse.com>
> ---
>  tests/devt.c | 22 +++++++++++++++++-----
>  1 file changed, 17 insertions(+), 5 deletions(-)
> 
> diff --git a/tests/devt.c b/tests/devt.c
> index 02f2e8f..d971302 100644
> --- a/tests/devt.c
> +++ b/tests/devt.c
> @@ -13,7 +13,9 @@
>  #include <sys/sysmacros.h>
>  #include <fcntl.h>
>  #include <sys/stat.h>
> +#include <sys/types.h>
>  #include <unistd.h>
> +#include <dirent.h>
>  #include "util.h"
>  #include "debug.h"
>  
> @@ -21,12 +23,22 @@
>  
>  static bool sys_dev_block_exists(void)
>  {
> -     int fd;
> -     bool rc;
> +     DIR *dir;
> +     bool rc = false;
>  
> -     fd = open("/sys/dev/block", O_RDONLY|O_DIRECTORY);
> -     rc = (fd != -1);
> -     close(fd);
> +     dir = opendir("/sys/dev/block");
> +     if (dir != NULL) {
> +             struct dirent *de;
> +
> +             while((de = readdir(dir)) != NULL) {
> +                     if (strcmp(de->d_name, ".") &&
> +                         strcmp(de->d_name, "..")) {
> +                             rc = true;
> +                             break;
> +                     }
> +             }
> +     }
> +     closedir(dir);
>       return rc;
>  }
>  
> -- 
> 2.30.1

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel

Reply via email to