summaryrefslogtreecommitdiff
path: root/Build.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2006-12-14 17:32:57 +1100
committerNeil Brown <neilb@suse.de>2006-12-14 17:32:57 +1100
commitbeae1dfe2e5a3f11e6e52a93fbf617d644708415 (patch)
treeca12b130f76d63e7156e43ac89d76c11b2c140b8 /Build.c
parentab5303d695eb7249b9462f9ad4e973711622a9c5 (diff)
Central calls to ioctl BLKGETSIZE
Instead of opencoding the same thing everywhere.
Diffstat (limited to 'Build.c')
-rw-r--r--Build.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/Build.c b/Build.c
index ea314638..df9f4f2f 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;