blob: 28b8df0a5d5d5e7b446917527044a94f507df6b8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <errno.h>
#include "common.h"
int disksize(int fd, unsigned long long *sectors) {
int err;
long sz;
long long b;
err = ioctl(fd, BLKGETSIZE, &sz);
if (err) {
sz = 0;
if (errno != EFBIG)
return err;
}
err = ioctl(fd, BLKGETSIZE64, &b);
if (err || b == 0 || b == sz)
*sectors = sz;
else
*sectors = (b >> 9);
return 0;
}
|