You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Zpool can start allocating from metaslab before TRIMs have completed
When doing a manual TRIM on a zpool, the metaslab being TRIMmed is
potentially re-enabled before all queued TRIM zios for that metaslab
have completed. Since TRIM zios have the lowest priority, it is possible
to get into a situation where allocations occur from the just re-enabled
metaslab and cut ahead of queued TRIMs to the same metaslab.
If the ranges overlap, this will cause corruption.
We were able to trigger this pretty consistently with a small single top-level
vdev zpool (i.e. small number of metaslabs) with heavy parallel
write activity while performing a manual TRIM against a somewhat 'slow'
device (so TRIMs took a bit of time to complete). With the patch, we've
not been able to recreate it since. It was on illumos, but inspection of
the OpenZFS trim code looks like the relevant pieces are largely
unchanged and so it appears it would be vulnerable to the same issue.
The illumos bug for this is illumos#15939.
Signed-off-by: Jason King <[email protected]>
0 commit comments