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

From: Ric Wheeler
Date: Thu Mar 10 2016 - 09:58:58 EST

On 03/10/2016 04:38 AM, Theodore Ts'o wrote:
On Wed, Mar 09, 2016 at 02:20:31PM -0800, Gregory Farnum wrote:
I really am sensitive to the security concerns, just know that if it's
a permanent blocker you're essentially blocking out a growing category
of disk users (who run on an awfully large number of disks!).
Or they just have to use kernels with out-of-tree patches installed. :-P

If you want to consider how many disks Google has that are using this
patch, I probably could have appealed to Linus and asked him to accept
the patch if I forced the issue. The only reason why I didn't was
that people like Ric Wheeler threatened to have distro-specific
patches to disable the feature, and at the end of the day, I didn't
care that much. After all, if it makes it harder for large scale
cloud companies besides Google to create more efficient userspace
cluster file systems, it's not like I was keeping the patch a secret.

So ultimately, if the Ceph developers want to make a case to Red Hat
management that this is important, great. If not, it's not that hard
for those people who need the patch and who are running large cloud
infrastructures to simply apply the out-of-tree patch if they need it.


- Ted

What was objectionable at the time this patch was raised years back (not just to me, but to pretty much every fs developer at LSF/MM that year) centered on the concern that this would be viewed as a "performance" mode and we get pressure to support this for non-priveleged users. It gives any user effectively the ability to read the block device content for previously allocated data without restriction.

At the time, I also don't recall seeing the patch posted on upstream lists for debate or justification.

As we discussed a few weeks back, I don't object to having support for doing this in carefully controlled ways for things like user space file systems. In effect, the problem of preventing other people's data being handed over to the end user is taken on by that layer of code. I suspect that fits the use case at google and Ceph both.