Re: [Lsf-pc] [LSF/MM TOPIC] fs-verity: file system-level integrity protection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 31, 2018 at 07:03:16PM -0500, Theodore Ts'o wrote:
> On Wed, Jan 31, 2018 at 12:41:13PM -0800, James Bottomley wrote:
> > > Like fscrypto, where most of the code is in fs/crypto, most of the
> > > fs-verity will be in fs/verity.  There will be minimal hooks in a
> > > particular file system, so if another file system wants to play, then
> > > can do so relatively easily.
> > 
> > OK, sounds good ... I notice, now I look, that fscrypt uses xattrs
> > (albeit hidden under the covers of get/set_context), will dm-verity use
> > the same trick or do people really need space in the inode?
> 
> I assume you mean fs-verity above, and no, we aren't going to use
> xattrs because the Merkle tree won't fit in the xattr.  So the plan
> was to put the fs-verity header, the PKCS7 signature, and the Merkle
> tree after i_size (rounded to a blocksize boundary).  Remember, the
> fs-verity case we only worry about the read-ony case.

I think putting valid data beyond EOF is going to be problematic for
many filesystems. Getting things like truncate right are hard enough
without having to special case a bunch of new functionality that
specifically allows IO access beyond EOF. Indeed, how does "truncate
isize but leave special data behind" work and what's the userspace
API to drive it? And how does it interact with all the page cache
code that checks for page->index beyond EOF to detect a truncated
page that should not be accessed?

There's also further complications for filesystems like XFS e.g. how
do we tell the difference between valid data beyond EOF and
speculative allocation (done by delalloc) beyond EOF that contains
no data and can be removed if it is not written to in a short while?

This just seems like a horrible can of worms to me and is not
something we should be building generic infrastructure around.

Just how big do these merkle trees get, anyway?

> As I stated above, we need to put the Merkle tree after i_size anyway,
> so the current plan doesn't use xattrs at all.  Xattr storage space is
> also precious (especially if you are trying to keep all of the xattrs

No it's not. xattr space is specifically designed for uses like
this, and if you have to take an extra IO to read it then that's the
cost of storing large chunks of non-userdata data on a file. You;ve
got to take extra IOs to read the merkle tree if it's stored beyond
EOF anyway, so it doesn't matter if we take extra IOs to read it
from an xattr....

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux