]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
diff -ru mdadm-2.6.4-orig/Query.c mdadm-2.6.4/Query.c
authorNeil Brown <neilb@suse.de>
Tue, 29 Apr 2008 07:13:55 +0000 (17:13 +1000)
committerNeil Brown <neilb@suse.de>
Tue, 29 Apr 2008 07:13:55 +0000 (17:13 +1000)
mdadm.h
util.c

diff --git a/mdadm.h b/mdadm.h
index 1a7db812241edbaa7cc056c59baabaf501680d1e..2a5e1c8c425a4902ca46570b278e380c17d2f97b 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -28,6 +28,7 @@
  */
 
 #define        _GNU_SOURCE
+#define _FILE_OFFSET_BITS 64
 #include       <unistd.h>
 #if !defined(__dietlibc__) && !defined(__KLIBC__)
 extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
diff --git a/util.c b/util.c
index 1ba236b781c1ad4dc86563e54edea9133aeffcdb..bd4699955ac40cba46144f7b537c625a0b697607 100644 (file)
--- a/util.c
+++ b/util.c
@@ -830,6 +830,11 @@ struct supertype *guess_super(int fd)
 int get_dev_size(int fd, char *dname, unsigned long long *sizep)
 {
        unsigned long long ldsize;
+       struct stat st;
+
+       if (fstat(fd, &st) != -1 && S_ISREG(st.st_mode))
+               ldsize = (unsigned long long)st.st_size;
+       else
 #ifdef BLKGETSIZE64
        if (ioctl(fd, BLKGETSIZE64, &ldsize) != 0)
 #endif