]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - util.c
mdadm/util: unify fstat checking blkdev into function
[thirdparty/mdadm.git] / util.c
diff --git a/util.c b/util.c
index c7585aca3e4a76e98cda5d288fc39e3323c30bca..a92faf833bba58128f31b41a08b6ab3ac5bf5181 100644 (file)
--- a/util.c
+++ b/util.c
@@ -730,6 +730,23 @@ int check_raid(int fd, char *name)
        return 1;
 }
 
+int fstat_is_blkdev(int fd, char *devname, dev_t *rdev)
+{
+       struct stat stb;
+
+       if (fstat(fd, &stb) != 0) {
+               pr_err("fstat failed for %s: %s\n", devname, strerror(errno));
+               return 0;
+       }
+       if ((S_IFMT & stb.st_mode) != S_IFBLK) {
+               pr_err("%s is not a block device.\n", devname);
+               return 0;
+       }
+       if (rdev)
+               *rdev = stb.st_rdev;
+       return 1;
+}
+
 int ask(char *mesg)
 {
        char *add = "";