summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXiao Ni <xni@redhat.com>2021-10-27 20:23:13 +0800
committerJes Sorensen <jsorensen@fb.com>2021-11-02 12:09:17 -0400
commita35aa68fef246a3eb6bc995cd7af75af420418cc (patch)
tree63b9a2675d4df1f033cde8da25ced2fab509eefe
parent1c66260df6664a5751644cbfc6ab9dcadf1d90c1 (diff)
downloadmdadm-a35aa68fef246a3eb6bc995cd7af75af420418cc.tar.gz
mdadm/lib: Define a new helper function is_dev_alived
The function is used to check if one member disk is alive. Signed-off-by: Xiao Ni <xni@redhat.com> Acked-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
-rw-r--r--lib.c11
-rw-r--r--mdadm.h2
2 files changed, 13 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 76d1fbb9..7e3e3d47 100644
--- a/lib.c
+++ b/lib.c
@@ -27,6 +27,17 @@
#include <ctype.h>
#include <limits.h>
+bool is_dev_alive(char *path)
+{
+ if (!path)
+ return false;
+
+ if (access(path, R_OK) == 0)
+ return true;
+
+ return false;
+}
+
/* This fill contains various 'library' style function. They
* have no dependency on anything outside this file.
*/
diff --git a/mdadm.h b/mdadm.h
index 53ea0de6..4e483bfc 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -45,6 +45,7 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
#include <errno.h>
#include <string.h>
#include <syslog.h>
+#include <stdbool.h>
/* Newer glibc requires sys/sysmacros.h directly for makedev() */
#include <sys/sysmacros.h>
#ifdef __dietlibc__
@@ -1499,6 +1500,7 @@ extern int check_partitions(int fd, char *dname,
extern int fstat_is_blkdev(int fd, char *devname, dev_t *rdev);
extern int stat_is_blkdev(char *devname, dev_t *rdev);
+extern bool is_dev_alive(char *path);
extern int get_mdp_major(void);
extern int get_maj_min(char *dev, int *major, int *minor);
extern int dev_open(char *dev, int flags);