diff options
author | Neil Brown <neilb@suse.de> | 2006-12-14 17:32:57 +1100 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2006-12-14 17:32:57 +1100 |
commit | beae1dfe2e5a3f11e6e52a93fbf617d644708415 (patch) | |
tree | ca12b130f76d63e7156e43ac89d76c11b2c140b8 /Build.c | |
parent | ab5303d695eb7249b9462f9ad4e973711622a9c5 (diff) | |
download | mdadm-beae1dfe2e5a3f11e6e52a93fbf617d644708415.tar.gz mdadm-beae1dfe2e5a3f11e6e52a93fbf617d644708415.tar.xz mdadm-beae1dfe2e5a3f11e6e52a93fbf617d644708415.zip |
Central calls to ioctl BLKGETSIZE
Instead of opencoding the same thing everywhere.
Diffstat (limited to 'Build.c')
-rw-r--r-- | Build.c | 11 |
1 files changed, 4 insertions, 7 deletions
@@ -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; |