Re: [PATCH 5/6] Btrfs: fail if we try to use hole punch

Will Newton
2010-11-09T10:04:11Z

On Mon, Nov 8, 2010 at 8:32 PM, Josef Bacik <josef@redhat.com> wrote:

Hi Josef,

> Btrfs doesn't have the ability to punch holes yet, so make sure we return
> EOPNOTSUPP if we try to use hole punching through fallocate.  This support can
> be added later.  Thanks,
>
> Signed-off-by: Josef Bacik <josef@redhat.com>
> ---
>  fs/btrfs/inode.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 78877d7..c590add 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -6936,6 +6936,10 @@ static long btrfs_fallocate(struct inode *inode, int mode,
>        alloc_start = offset & ~mask;
>        alloc_end =  (offset + len + mask) & ~mask;
>
> +       /* We only support the FALLOC_FL_KEEP_SIZE mode */
> +       if (mode && (mode & FALLOC_FL_KEEP_SIZE))
> +               return -EOPNOTSUPP;
> +

This test looks rather odd. Why do we need to test that mode is
non-zero AND that mode has a specific bit set? Is there a missing !
here?