From 8cc7afa91ddc5a0980b9d2dbfdd66e1511a0d4b1 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Tue, 17 Apr 2007 09:06:43 +0200 Subject: [PATCH] Better checks for disk util init Signed-off-by: Jens Axboe --- diskutil.c | 9 ++++++--- os/os-linux.h | 9 +++++---- os/os.h | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/diskutil.c b/diskutil.c index a87435af..11d676fc 100644 --- a/diskutil.c +++ b/diskutil.c @@ -209,15 +209,18 @@ static void __init_disk_util(struct thread_data *td, struct fio_file *f) int mindev, majdev; char *p; - if (!stat(f->file_name, &st)) { + if (!lstat(f->file_name, &st)) { if (S_ISBLK(st.st_mode)) { majdev = major(st.st_rdev); mindev = minor(st.st_rdev); } else if (S_ISCHR(st.st_mode)) { majdev = major(st.st_rdev); mindev = minor(st.st_rdev); - fio_lookup_raw(st.st_rdev, &majdev, &mindev); - } else { + if (fio_lookup_raw(st.st_rdev, &majdev, &mindev)) + return; + } else if (S_ISFIFO(st.st_mode)) + return; + else { majdev = major(st.st_dev); mindev = minor(st.st_dev); } diff --git a/os/os-linux.h b/os/os-linux.h index 561b273d..90349016 100644 --- a/os/os-linux.h +++ b/os/os-linux.h @@ -171,13 +171,13 @@ static inline double os_random_double(os_random_state_t *rs) return val; } -static inline void fio_lookup_raw(dev_t dev, int *majdev, int *mindev) +static inline int fio_lookup_raw(dev_t dev, int *majdev, int *mindev) { struct raw_config_request rq; int fd; if (major(dev) != RAW_MAJOR) - return; + return 1; /* * we should be able to find /dev/rawctl or /dev/raw/rawctl @@ -186,18 +186,19 @@ static inline void fio_lookup_raw(dev_t dev, int *majdev, int *mindev) if (fd < 0) { fd = open("/dev/raw/rawctl", O_RDONLY); if (fd < 0) - return; + return 1; } rq.raw_minor = minor(dev); if (ioctl(fd, RAW_GETBIND, &rq) < 0) { close(fd); - return; + return 1; } close(fd); *majdev = rq.block_major; *mindev = rq.block_minor; + return 0; } #endif diff --git a/os/os.h b/os/os.h index 104f4a81..e630627f 100644 --- a/os/os.h +++ b/os/os.h @@ -57,7 +57,7 @@ #endif #ifndef FIO_HAVE_RAWBIND -#define fio_lookup_raw(dev, majdev, mindev) +#define fio_lookup_raw(dev, majdev, mindev) 1 #endif #endif -- 2.25.1