On Fri, 18 Nov 2011, Cong Wang wrote:
It seems that systemd needs tmpfs to support fallocate,
see http://lkml.org/lkml/2011/10/20/275. This patch adds
fallocate support to tmpfs.
As we already have shmem_truncate_range(), it is also easy
to add FALLOC_FL_PUNCH_HOLE support too.
Thank you, this version looks much much nicer.
I wouldn't call it bug-free (don't you need a page_cache_release
after the unlock_page?), and I won't be reviewing it and testing it
for a week or two - there's a lot about the semantics of fallocate
and punch-hole that's not obvious, and I'll have to study the mail
threads discussing them before checking your patch.
First question that springs to mind (to which I shall easily find
an answer): is it actually acceptable for fallocate() to return
-ENOSPC when it has already completed a part of the work?
But so long as the details don't end up complicating this
significantly, since we anyway want to regularize the punch-hole
situation by giving tmpfs the same interface to it as other filesystems,
I now think it would be a bit perverse to disallow the original
fallocate functionality that you implement here in-kernel.