btrfs-progs/libbtrfsutil
Rosen Penev 01e35d9f53 btrfs-progs: treewide: Fix missing declarations
Found using -Wmissing-prototypes in GCC.  This should improve LTO
behavior.

Note that set_free_space_tree_thresholds is an unused function. Adding
inline seems to remove the unused function warning.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2018-11-13 13:32:41 +01:00
..
python libbtrfsutil: fix test assumptions about top-level subvolume 2018-03-30 22:57:57 +02:00
COPYING Add libbtrfsutil 2018-02-24 01:37:16 +01:00
COPYING.LESSER Add libbtrfsutil 2018-02-24 01:37:16 +01:00
README.md libbtrfsutil: add Python bindings 2018-02-24 01:37:17 +01:00
btrfs.h btrfs-progs: ioctl/libbtrfsutil: add 3 definitions of new unprivileged ioctl 2018-10-31 18:24:14 +01:00
btrfs_tree.h libbtrfsutil: copy in Btrfs UAPI headers 2018-03-06 11:28:36 +01:00
btrfsutil.h libbtrfsutil: add btrfs_util_deleted_subvolumes() 2018-03-06 11:28:37 +01:00
btrfsutil_internal.h libbtrfsutil: copy in Btrfs UAPI headers 2018-03-06 11:28:36 +01:00
errors.c Add libbtrfsutil 2018-02-24 01:37:16 +01:00
filesystem.c libbtrfsutil: copy in Btrfs UAPI headers 2018-03-06 11:28:36 +01:00
qgroup.c libbtrfsutil: copy in Btrfs UAPI headers 2018-03-06 11:28:36 +01:00
stubs.c btrfs-progs: treewide: Fix missing declarations 2018-11-13 13:32:41 +01:00
stubs.h libbtrfsutil: add stub for reallocarray 2018-03-06 11:28:37 +01:00
subvolume.c libbtrfsutil: factor out btrfs_util_subvolume_info_fd 2018-10-31 18:24:14 +01:00

README.md

libbtrfsutil

libbtrfsutil is a library for managing Btrfs filesystems. It is licensed under the LGPL. libbtrfsutil provides interfaces for a subset of the operations offered by the btrfs command line utility. It also includes official Python bindings (Python 3 only).

Development

The development process for btrfs-progs applies.

libbtrfsutil only includes operations that are done through the filesystem and ioctl interface, not operations that modify the filesystem directly (e.g., mkfs or fsck). This is by design but also a legal necessity, as the filesystem implementation is GPL but libbtrfsutil is LGPL. That is also why the libbtrfsutil code is a reimplementation of the btrfs-progs code rather than a refactoring. Be wary of this when porting functionality.

libbtrfsutil is semantically versioned separately from btrfs-progs. It is the maintainers' responsibility to bump the version as needed (at most once per release of btrfs-progs).

A few guidelines:

  • All interfaces must be documented in btrfsutil.h using the kernel-doc style
  • Error codes should be specific about what exactly failed
  • Functions should have a path and an fd variant whenever possible
  • Spell out terms in function names, etc. rather than abbreviating whenever possible
  • Don't require the Btrfs UAPI headers for any interfaces (e.g., instead of directly exposing a type from linux/btrfs_tree.h, abstract it away in a type specific to libbtrfsutil)
  • Preserve API and ABI compatability at all times (i.e., we don't want to bump the library major version if we don't have to)
  • Include Python bindings for all interfaces
  • Write tests for all interfaces