Re: [PATCH 2/9] vfs: export do_splice_direct() to modules

From: Miklos Szeredi
Date: Tue Mar 19 2013 - 06:29:49 EST


On Tue, Mar 19, 2013 at 2:38 AM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
> On Mon, Mar 18, 2013 at 11:01:03PM +0000, Al Viro wrote:
>
>> I'm looking at the existing callers and I really wonder if we ought to
>> push sb_start_write() from ->splice_write()/->aio_write()/etc. into the
>> callers.
>>
>> Something like file_start_write()/file_end_write(), with check for file
>> being regular one might be a good starting point. As it is, copyup is
>> really fucked both in unionmount and overlayfs...
>
> BTW, I wonder what's the right locking for that sucker; overlayfs is probably
> too heavy - we are talking about copying a file from one fs to another, which
> can obviously take quite a while, so holding ->i_mutex on _parent_ all along
> is asking for very serious contention.

Copy up is a once-in-a-lifetime event for an object. Optimizing it is
way down in the list of things to do. I'd drop splice in a jiffy if
it's in the way.

Much more interesting question: what happens if we crash during a
rename? Whiteout implemented in the filesystem won't save us. And
the results are interesting: old versions of files become visible and
similar fun. Far from likely to happen, but ...

Add a rename-with-whiteout primitive on filesystems? That one is not
going to be as simple as plain whiteout. Or?

Thanks,
Miklos
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/