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

Josef Bacik
2010-11-09T12:52:45Z

On Tue, Nov 09, 2010 at 10:05:34AM +0000, Will Newton wrote:
> 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?

Yeah I'm missing a !, I copy and pasted the wrong bit when I went around adding
this check to everybody, I'll be fixing it up for the next go around. Thanks,

Josef