2014-10-30 17:59:47 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2014 SUSE. All rights reserved.
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public
|
|
|
|
* License v2 as published by the Free Software Foundation.
|
|
|
|
*
|
|
|
|
* This program 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
|
|
|
|
* General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public
|
|
|
|
* License along with this program; if not, write to the
|
|
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
* Boston, MA 021110-1307, USA.
|
|
|
|
*/
|
|
|
|
|
2017-03-13 15:52:34 +00:00
|
|
|
#if BTRFS_FLAT_INCLUDES
|
2014-10-30 17:59:47 +00:00
|
|
|
#include "kerncompat.h"
|
2023-01-05 13:18:07 +00:00
|
|
|
#include "libbtrfs/version.h"
|
2019-06-20 13:30:57 +00:00
|
|
|
#include "kernel-lib/rbtree.h"
|
|
|
|
#include "kernel-lib/list.h"
|
2020-08-18 13:56:04 +00:00
|
|
|
#include "kernel-shared/ctree.h"
|
2017-03-27 11:55:01 +00:00
|
|
|
#include "ioctl.h"
|
2021-09-07 17:26:46 +00:00
|
|
|
#include "kernel-shared/send.h"
|
2020-08-18 13:56:04 +00:00
|
|
|
#include "common/send-stream.h"
|
2020-08-18 13:56:04 +00:00
|
|
|
#include "common/send-utils.h"
|
2017-03-13 15:52:34 +00:00
|
|
|
#else
|
|
|
|
/*
|
|
|
|
* This needs to include headers the same way as an external program but must
|
|
|
|
* not use the existing system headers, so we use "...".
|
|
|
|
*/
|
|
|
|
#include "btrfs/kerncompat.h"
|
|
|
|
#include "btrfs/version.h"
|
2017-03-27 11:55:01 +00:00
|
|
|
#include "btrfs/rbtree.h"
|
|
|
|
#include "btrfs/list.h"
|
|
|
|
#include "btrfs/ctree.h"
|
|
|
|
#include "btrfs/ioctl.h"
|
|
|
|
#include "btrfs/send.h"
|
|
|
|
#include "btrfs/send-stream.h"
|
|
|
|
#include "btrfs/send-utils.h"
|
2017-03-13 15:52:34 +00:00
|
|
|
#endif
|
2014-10-30 17:59:47 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Reduced code snippet from snapper.git/snapper/Btrfs.cc
|
|
|
|
*/
|
|
|
|
struct btrfs_send_ops send_ops = {
|
|
|
|
.subvol = NULL,
|
|
|
|
.snapshot = NULL,
|
|
|
|
.mkfile = NULL,
|
|
|
|
.mkdir = NULL,
|
|
|
|
.mknod = NULL,
|
|
|
|
.mkfifo = NULL,
|
|
|
|
.mksock = NULL,
|
|
|
|
.symlink = NULL,
|
|
|
|
.rename = NULL,
|
|
|
|
.link = NULL,
|
|
|
|
.unlink = NULL,
|
|
|
|
.rmdir = NULL,
|
|
|
|
.write = NULL,
|
|
|
|
.clone = NULL,
|
|
|
|
.set_xattr = NULL,
|
|
|
|
.remove_xattr = NULL,
|
|
|
|
.truncate = NULL,
|
|
|
|
.chmod = NULL,
|
|
|
|
.chown = NULL,
|
|
|
|
.utimes = NULL,
|
|
|
|
.update_extent = NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Link test only, not intended to be executed.
|
|
|
|
*/
|
|
|
|
static int test_send_stream_api() {
|
|
|
|
int ret;
|
|
|
|
int fd = -1;
|
|
|
|
|
|
|
|
#if BTRFS_LIB_VERSION < 101
|
|
|
|
ret = btrfs_read_and_process_send_stream(fd, &send_ops, NULL, 0);
|
|
|
|
#else
|
|
|
|
ret = btrfs_read_and_process_send_stream(fd, &send_ops, NULL, 0, 1);
|
|
|
|
#endif
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2021-09-08 14:59:18 +00:00
|
|
|
static int test_uuid_search() {
|
|
|
|
struct subvol_uuid_search sus = {};
|
|
|
|
u8 uuid[BTRFS_FSID_SIZE] = {};
|
2016-11-23 09:39:05 +00:00
|
|
|
|
2021-09-08 14:59:18 +00:00
|
|
|
subvol_uuid_search_init(-1, &sus);
|
|
|
|
subvol_uuid_search(&sus, 0, uuid, -1, "/", subvol_search_by_path);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int test_subvolid_resolve() {
|
|
|
|
char path[4096] = "/";
|
|
|
|
|
|
|
|
btrfs_subvolid_resolve(-1, path, strlen(path), 0);
|
|
|
|
return 0;
|
2016-11-23 09:39:05 +00:00
|
|
|
}
|
|
|
|
|
2014-10-30 17:59:47 +00:00
|
|
|
int main() {
|
|
|
|
test_send_stream_api();
|
2021-09-08 14:59:18 +00:00
|
|
|
test_uuid_search();
|
|
|
|
test_subvolid_resolve();
|
2014-10-30 17:59:47 +00:00
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|