From beae1dfe2e5a3f11e6e52a93fbf617d644708415 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Thu, 14 Dec 2006 17:32:57 +1100 Subject: Central calls to ioctl BLKGETSIZE Instead of opencoding the same thing everywhere. --- Build.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'Build.c') diff --git a/Build.c b/Build.c index ea31463..df9f4f2 100644 --- a/Build.c +++ b/Build.c @@ -148,7 +148,7 @@ int Build(char *mddev, int mdfd, int chunk, int level, int layout, } /* now add the devices */ for ((i=0), (dv = devlist) ; dv ; i++, dv=dv->next) { - unsigned long dsize; + unsigned long long dsize; int fd; if (strcmp("missing", dv->devname) == 0) continue; @@ -168,12 +168,9 @@ int Build(char *mddev, int mdfd, int chunk, int level, int layout, dv->devname, strerror(errno)); goto abort; } - if (ioctl(fd, BLKGETSIZE, &dsize) == 0 && dsize > 0) { - unsigned long long ldsize = dsize; - ldsize <<= 9; - if (size== 0 || ldsize < size) - size = ldsize; - } + if (get_dev_size(fd, NULL, &dsize) && + (size == 0 || dsize < size)) + size = dsize; close(fd); if (vers>= 9000) { mdu_disk_info_t disk; -- cgit