# Re: \[PATCH 2/2\] block: create ioctl to discard-or-zeroout a range of blocks

- From: Christoph Hellwig \<hidden\>
- Date: 2016-03-03 18:09:26 
- List: linux-api
- Page: https://ratatoskr.run/linux-api/2016/03/105940
- Thread: https://ratatoskr.run/linux-api/2016/03/105941/t.md

```text
On Thu, Mar 03, 2016 at 01:01:11PM -0500, Martin K. Petersen wrote:
> That's not entirely true. Writing the blocks may cause them to be
> allocated on the storage device (depending on which flags we feed it in
> WRITE SAME).
> 
> The filesystems people were wanted the following semantics:
> 
>  - deallocate, don't care about contents for future reads (discard)
>  - deallocate, guarantee zeroes on future reads (zeroout)
>  - (re)allocate, guarantee zeroes on future reads (zeroout)
> 
> Maybe we just need a better naming scheme...

In filesystem terms we have two and three:

 - FALLOC_FL_PUNCH_HOLE assures zeroes are returned, but space is
   deallocated as much as possible
 - FALLOC_FL_ZERO_RANGE assures zeroes are returned, AND blocks are
   actually allocated

Returning stale blocks in a file system is a nasty security risk, so
we don't do that, and so shouldn't storage that offers any kind
of multi tenancy, and if it's just VMs using multiple partitions on it.
```
