int main(int argc, char *argv[])
{
- char *name = "/dev/xvda";
+ char *name = "/dev/xvda1";
int disk;
unsigned long range[2];
+ unsigned long start = 0, end = 4096;
int rc;
- if (argc >= 1)
+ if (argc >= 1) {
name = argv[1];
-
+ if (argc >= 2) {
+ start = atoi(argv[2]);
+ end = atoi(argv[3]);
+ }
+ }
disk = open(name, O_RDWR | O_EXCL | O_LARGEFILE);
if (disk == -1) {
fprintf(stderr,"Cannot open %s [%s]\n", name, strerror(errno));
return errno;
}
- range[0] = 0;
- range[1] = (-1ULL);
+ range[0] = start;
+ range[1] = end;
+ fprintf(stderr, "%s[%d->%d]\n", name, start, end);
rc = ioctl(disk, BLKDISCARD, &range);
+ if (rc) {
+ fprintf(stderr, "%s[%d->%d]: %d, %s\n", name, range[0], range[1], rc, strerror(errno));
+ }
+
close(disk);
return rc;
}