[lvm-devel] dm-thinp feature request: skip allocation on writes of all zeroes
Eric Wheeler
lvm-dev at lists.ewheeler.net
Tue Sep 30 22:38:13 UTC 2014
>> I have always wondered, does LVM ignore writes with blocks of all
>> zeroes when the destination address is unallocated? From experience,
>> it does not appear that this is so (or I cannot find the config
>> option). This would reduce IOs, particularily when importing VM disk
>> images from other sources. Currently, we must import, allocate lots
>> of zeroes, then fstrim after the fact.
>
> And in your example fstrim wouldn't do anything for you. [...]
> fstrim is only useful to reclaim blocks that are no longer used.
For this particular example, unused data is mostly zeroes and thus fstrim
frees those unused chunks when dm-thinp receives the discard. I realize
that fstrim, strictly speaking, is not the solution---it was only meant to
highlight my example.
> The zeroed data in the image is still valid isn't it?
Yes, and it would continue to be valid because dm-thinp returns zeroes in
read requests to unallocated chunks. A quick check for all zeroes in the
bio before writing to an unallocated chunk would save a good amount of
overhead in our application, and probably others' as well. (Of course if
the chunk is allocated, the write must proceed like normal.)
> We don't inspect the data being written to infer WRITE SAME-like action.
I would like to implement data inspection in this way and make it
available as an option to the dmsetup table string.
Can you recommend where I should look in the dm-thinp code to check the
bio for all zeroes and branch accordingly?
(You are correct, deduplication would be an even better solution, but for
the moment I believe that WRITE SAME-like action could be implemented with
a relatively small patch if I can learn where to insert the code.)
-Eric
More information about the lvm-devel
mailing list