Fix incorrect rounding in vitastor-disk trim when --discard_granularity option is passed
This commit is contained in:
@@ -541,17 +541,21 @@ int blockstore_disk_t::trim_data(std::function<bool(uint64_t)> is_used)
|
|||||||
if (range[0] % discard_granularity)
|
if (range[0] % discard_granularity)
|
||||||
range[0] = range[0] + discard_granularity - (range[0] % discard_granularity);
|
range[0] = range[0] + discard_granularity - (range[0] % discard_granularity);
|
||||||
if (range[0] >= range[1])
|
if (range[0] >= range[1])
|
||||||
continue;
|
range[1] = 0;
|
||||||
range[1] -= range[0];
|
else
|
||||||
|
range[1] -= range[0];
|
||||||
}
|
}
|
||||||
r = ioctl(data_fd, BLKDISCARD, &range);
|
if (range[1] > 0)
|
||||||
if (r != 0)
|
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Failed to execute BLKDISCARD %ju+%ju on %s: %s (code %d)\n",
|
r = ioctl(data_fd, BLKDISCARD, &range);
|
||||||
range[0], range[1], data_device.c_str(), strerror(-r), r);
|
if (r != 0)
|
||||||
return -errno;
|
{
|
||||||
|
fprintf(stderr, "Failed to execute BLKDISCARD %ju+%ju on %s: %s (code %d)\n",
|
||||||
|
range[0], range[1], data_device.c_str(), strerror(-r), r);
|
||||||
|
return -errno;
|
||||||
|
}
|
||||||
|
discarded += range[1];
|
||||||
}
|
}
|
||||||
discarded += range[1];
|
|
||||||
}
|
}
|
||||||
j = i+1;
|
j = i+1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user