diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2007-04-17 09:06:43 +0200 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2007-04-17 09:06:43 +0200 |
commit | 8cc7afa91ddc5a0980b9d2dbfdd66e1511a0d4b1 (patch) | |
tree | 389ad700f173f402c10c1f5552ef8cd1e2fa3256 | |
parent | d424d4dd657eaf4aeb8ffb07a550a5f64940f41a (diff) | |
download | fio-8cc7afa91ddc5a0980b9d2dbfdd66e1511a0d4b1.tar.gz |
Better checks for disk util init
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r-- | diskutil.c | 9 | ||||
-rw-r--r-- | os/os-linux.h | 9 | ||||
-rw-r--r-- | os/os.h | 2 |
3 files changed, 12 insertions, 8 deletions
@@ -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 @@ -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 |