| btrfs-snap.py: source target newname |
| creates a exactly named snapshots and bails out if they exist |
| #define BTRFS_IOC_SNAP_CREATE_V2 ... |
| struct btrfs_ioctl_vol_args_v2 { |
| ffi.set_source("_btrfs_cffi", "#include <btrfs/ioctl.h>") |
| # ____________________________________________________________ |
| from _btrfs_cffi import ffi, lib |
| parser = argparse.ArgumentParser(usage=__doc__.strip()) |
| parser.add_argument('source', help='source subvolume') |
| parser.add_argument('target', help='target directory') |
| parser.add_argument('newname', help='name of the new snapshot') |
| opts = parser.parse_args() |
| source = os.open(opts.source, os.O_DIRECTORY) |
| target = os.open(opts.target, os.O_DIRECTORY) |
| args = ffi.new('struct btrfs_ioctl_vol_args_v2 *') |
| args_buffer = ffi.buffer(args) |
| fcntl.ioctl(target, lib.BTRFS_IOC_SNAP_CREATE_V2, args_buffer) |