Fix incorrect rounding in vitastor-disk trim when --discard_granularity option is passed

This commit is contained in:
Vitaliy Filippov
2026-06-10 00:38:34 +03:00
parent 6d82a3daa3
commit 0e300f4c50
+5 -1
View File
@@ -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;
} }
} }