On Wed, Feb 21, 2018 at 12:43:07PM +0100, David Sterba wrote:
> On Thu, Feb 15, 2018 at 11:04:49AM -0800, Omar Sandoval wrote:
> > --- /dev/null
> > +++ b/libbtrfsutil/subvolume.c
> > @@ -0,0 +1,127 @@
> > +/*
> > + * Copyright (C) 2018 Facebook
> > + *
> > + * This file is part of libbtrfsutil.
> > + *
> > + * libbtrfsutil is free software: you can redistribute it and/or modify
> > + * it under the terms of the GNU Lesser General Public License as 
> > published by
> > + * the Free Software Foundation, either version 3 of the License, or
> > + * (at your option) any later version.
> > + *
> > + * libbtrfsutil is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU Lesser General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU Lesser General Public License
> > + * along with libbtrfsutil.  If not, see <http://www.gnu.org/licenses/>.
> > + */
> > +
> > +#include <errno.h>
> > +#include <fcntl.h>
> > +#include <unistd.h>
> > +#include <sys/ioctl.h>
> > +#include <sys/stat.h>
> > +#include <sys/types.h>
> > +#include <sys/vfs.h>
> > +#include <linux/btrfs.h>
> > +#include <linux/btrfs_tree.h>
> 
> How is this supposed to work? This pulls the system-wide includes, the
> travis-ci environment has an old kernel and btrfs_tree.h does not exist
> there. The missing defines are provided by libbtrfs' btrfs/ctree.h.
> 
> We can add a configure-time check to detect the availability of the
> headers, but I'm not sure if this is right. As libbtrfsutil/subvolume.c
> is built internally it should use the includes from the btrfs-progs git
> itself, no?

Oh yeah, the fun has begun.  This will need to be sorted first. ctree.h
unconditionally pulls kerncompat.h, so it cannot be used instead of the
linux/btrfs*.h headers, there are warnings about redefined endianity
conversion macros.

We can split the headers by type, so ctree.h does not contain
everything, or copy defines and types to libbtrfsutil header so it is
completely independent of the git or system headers. Or something else.

I can now make it compile without including btrfs_tree.h and copying
parts of ctree.h until it compiles. The type u8 also has to be __u8.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to