Fix incorrect rounding in vitastor-disk trim when --discard_granularity option is passed
This commit is contained in:
@@ -541,9 +541,12 @@ 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;
|
||||||
|
else
|
||||||
range[1] -= range[0];
|
range[1] -= range[0];
|
||||||
}
|
}
|
||||||
|
if (range[1] > 0)
|
||||||
|
{
|
||||||
r = ioctl(data_fd, BLKDISCARD, &range);
|
r = ioctl(data_fd, BLKDISCARD, &range);
|
||||||
if (r != 0)
|
if (r != 0)
|
||||||
{
|
{
|
||||||
@@ -553,6 +556,7 @@ int blockstore_disk_t::trim_data(std::function<bool(uint64_t)> is_used)
|
|||||||
}
|
}
|
||||||
discarded += range[1];
|
discarded += range[1];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
j = i+1;
|
j = i+1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user