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"
|
|
|
|
#include "version.h"
|
|
|
|
#include "send-stream.h"
|
2016-11-23 09:39:05 +00:00
|
|
|
#include "btrfs-list.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"
|
|
|
|
#include "btrfs/send-stream.h"
|
|
|
|
#include "btrfs/btrfs-list.h"
|
|
|
|
#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;
|
|
|
|
}
|
|
|
|
|
2016-11-23 09:39:05 +00:00
|
|
|
static int test_list_rootid() {
|
|
|
|
u64 treeid;
|
|
|
|
|
|
|
|
return btrfs_list_get_path_rootid(-1, &treeid);
|
|
|
|
}
|
|
|
|
|
2014-10-30 17:59:47 +00:00
|
|
|
int main() {
|
|
|
|
test_send_stream_api();
|
2016-11-23 09:39:05 +00:00
|
|
|
test_list_rootid();
|
2014-10-30 17:59:47 +00:00
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|