FS#51930 - [snapper] Using btrfs-progs from testing breakds snapper (missing libbtrfs.so refereced)
Attached to Project:
Community Packages
Opened by Adrián Pérez de Castro (aperezdc) - Wednesday, 23 November 2016, 06:23 GMT
Last edited by Massimiliano Torromeo (mtorromeo) - Wednesday, 30 November 2016, 22:46 GMT
Opened by Adrián Pérez de Castro (aperezdc) - Wednesday, 23 November 2016, 06:23 GMT
Last edited by Massimiliano Torromeo (mtorromeo) - Wednesday, 30 November 2016, 22:46 GMT
|
Details
Description:
When using btrfs-progs from “testing”, the currently available version of snapper from “community” does not work. Additional info: * snapper version 0.3.3-3 (from “community”) * btrfs-progs 4.8.3-1 version (from “testing”) Steps to reproduce: 1. Enable the ”testing” repository in /etc/pacman.conf. 2. Install btrfs-progs and snapper. 3. Configure snapper todo snapshots of a btrfs subvolume (instructions: https://wiki.archlinux.org/index.php/Snapper) 4. Perform an operation using the snapper CLI tool which requires talking over D-Bus to the snapperd daemon. For example, take a snapshot (“snapper -c configname create”) and the delete it (“snapper -c configname <snapid>”). The deletion will fail. Additional information: If you run snapperd manually logging to the console, and then try deleting a snapshot from another console, you will eventually see: # snapperd -s -d [...] snapperd: symbol lookup error: /usr/lib/libbtrfs.so.0: undefined symbol: lookup_path_rootid I think this can be fixed by rebuilding snapper against the new version of libbtrfs provided by btrfs-progs. |
This task depends upon
Closed by Massimiliano Torromeo (mtorromeo)
Wednesday, 30 November 2016, 22:46 GMT
Reason for closing: Fixed
Wednesday, 30 November 2016, 22:46 GMT
Reason for closing: Fixed
---
BtrfsUtils.cc: In function ‘void snapper::BtrfsUtils::create_snapshot(int, int, const string&, bool, snapper::BtrfsUtils::qgroup_t)’:
BtrfsUtils.cc:138:24: error: ‘btrfs_qgroup_inherit’ was not declared in this scope
size_t size = sizeof(btrfs_qgroup_inherit) + sizeof(((btrfs_qgroup_inherit*) 0)->qgroups[0]);
^~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:138:78: error: expected primary-expression before ‘)’ token
size_t size = sizeof(btrfs_qgroup_inherit) + sizeof(((btrfs_qgroup_inherit*) 0)->qgroups[0]);
^
BtrfsUtils.cc:138:80: error: expected ‘)’ before numeric constant
size_t size = sizeof(btrfs_qgroup_inherit) + sizeof(((btrfs_qgroup_inherit*) 0)->qgroups[0]);
^
BtrfsUtils.cc:138:95: error: expected ‘)’ before ‘;’ token
size_t size = sizeof(btrfs_qgroup_inherit) + sizeof(((btrfs_qgroup_inherit*) 0)->qgroups[0]);
^
BtrfsUtils.cc:140:64: error: expected primary-expression before ‘)’ token
struct btrfs_qgroup_inherit* inherit = (btrfs_qgroup_inherit*) &buffer[0];
^
BtrfsUtils.cc:142:12: error: request for member ‘num_qgroups’ in ‘* inherit’, which is of non-class type ‘int’
inherit->num_qgroups = 1;
^~~~~~~~~~~
BtrfsUtils.cc:143:12: error: request for member ‘num_ref_copies’ in ‘* inherit’, which is of non-class type ‘int’
inherit->num_ref_copies = 0;
^~~~~~~~~~~~~~
BtrfsUtils.cc:144:12: error: request for member ‘num_excl_copies’ in ‘* inherit’, which is of non-class type ‘int’
inherit->num_excl_copies = 0;
^~~~~~~~~~~~~~~
BtrfsUtils.cc:145:12: error: request for member ‘qgroups’ in ‘* inherit’, which is of non-class type ‘int’
inherit->qgroups[0] = qgroup;
^~~~~~~
BtrfsUtils.cc:147:20: error: ‘BTRFS_SUBVOL_QGROUP_INHERIT’ was not declared in this scope
args_v2.flags |= BTRFS_SUBVOL_QGROUP_INHERIT;
^~~~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:148:11: error: ‘struct btrfs_ioctl_vol_args_v2’ has no member named ‘size’
args_v2.size = size;
^~~~
BtrfsUtils.cc:149:11: error: ‘struct btrfs_ioctl_vol_args_v2’ has no member named ‘qgroup_inherit’
args_v2.qgroup_inherit = inherit;
^~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘void snapper::BtrfsUtils::set_default_id(int, snapper::BtrfsUtils::subvolid_t)’:
BtrfsUtils.cc:188:20: error: ‘BTRFS_IOC_DEFAULT_SUBVOL’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_DEFAULT_SUBVOL, &id) != 0)
^~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘snapper::BtrfsUtils::subvolid_t snapper::BtrfsUtils::get_default_id(int)’:
BtrfsUtils.cc:196:37: error: aggregate ‘snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_args args’ has incomplete type and cannot be defined
struct btrfs_ioctl_search_args args;
^~~~
BtrfsUtils.cc:200:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
sk->tree_id = BTRFS_ROOT_TREE_OBJECTID;
^~
BtrfsUtils.cc:199:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:200:20: error: ‘BTRFS_ROOT_TREE_OBJECTID’ was not declared in this scope
sk->tree_id = BTRFS_ROOT_TREE_OBJECTID;
^~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:201:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
sk->nr_items = 1;
^~
BtrfsUtils.cc:199:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:202:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
sk->max_objectid = BTRFS_ROOT_TREE_DIR_OBJECTID;
^~
BtrfsUtils.cc:199:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:202:25: error: ‘BTRFS_ROOT_TREE_DIR_OBJECTID’ was not declared in this scope
sk->max_objectid = BTRFS_ROOT_TREE_DIR_OBJECTID;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:203:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
sk->min_objectid = BTRFS_ROOT_TREE_DIR_OBJECTID;
^~
BtrfsUtils.cc:199:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:204:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
sk->max_type = BTRFS_DIR_ITEM_KEY;
^~
BtrfsUtils.cc:199:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:204:21: error: ‘BTRFS_DIR_ITEM_KEY’ was not declared in this scope
sk->max_type = BTRFS_DIR_ITEM_KEY;
^~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:205:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
sk->min_type = BTRFS_DIR_ITEM_KEY;
^~
BtrfsUtils.cc:199:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:206:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
sk->max_offset = (__u64) -1;
^~
BtrfsUtils.cc:199:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:207:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
sk->max_transid = (__u64) -1;
^~
BtrfsUtils.cc:199:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:209:20: error: ‘BTRFS_IOC_TREE_SEARCH’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args) != 0)
^~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:212:12: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
if (sk->nr_items == 0)
^~
BtrfsUtils.cc:199:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:216:12: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_header’
if (sh->type != BTRFS_DIR_ITEM_KEY)
^~
BtrfsUtils.cc:215:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_header’
struct btrfs_ioctl_search_header* sh = (struct btrfs_ioctl_search_header*) args.buf;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:219:64: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_header’
struct btrfs_dir_item* di = (struct btrfs_dir_item*)(sh + 1);
^
BtrfsUtils.cc:215:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_ioctl_search_header’
struct btrfs_ioctl_search_header* sh = (struct btrfs_ioctl_search_header*) args.buf;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:220:48: error: ‘btrfs_stack_dir_name_len’ was not declared in this scope
int name_len = btrfs_stack_dir_name_len(di);
^
BtrfsUtils.cc:221:44: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_dir_item’
const char* name = (const char*)(di + 1);
^
BtrfsUtils.cc:219:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_dir_item’
struct btrfs_dir_item* di = (struct btrfs_dir_item*)(sh + 1);
^~~~~~~~~~~~~~
BtrfsUtils.cc:225:40: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_dir_item’
return btrfs_disk_key_objectid(&di->location);
^~
BtrfsUtils.cc:219:13: note: forward declaration of ‘struct snapper::BtrfsUtils::get_default_id(int)::btrfs_dir_item’
struct btrfs_dir_item* di = (struct btrfs_dir_item*)(sh + 1);
^~~~~~~~~~~~~~
BtrfsUtils.cc:225:50: error: ‘btrfs_disk_key_objectid’ was not declared in this scope
return btrfs_disk_key_objectid(&di->location);
^
BtrfsUtils.cc: In function ‘std::__cxx11::string snapper::BtrfsUtils::get_subvolume(int, snapper::BtrfsUtils::subvolid_t)’:
BtrfsUtils.cc:234:59: error: ‘btrfs_subvolid_resolve’ was not declared in this scope
if (btrfs_subvolid_resolve(fd, path, sizeof(path), id) != 0)
^
BtrfsUtils.cc: In function ‘void snapper::BtrfsUtils::quota_enable(int)’:
BtrfsUtils.cc:292:41: error: aggregate ‘snapper::BtrfsUtils::quota_enable(int)::btrfs_ioctl_quota_ctl_args args’ has incomplete type and cannot be defined
struct btrfs_ioctl_quota_ctl_args args;
^~~~
BtrfsUtils.cc:294:18: error: ‘BTRFS_QUOTA_CTL_ENABLE’ was not declared in this scope
args.cmd = BTRFS_QUOTA_CTL_ENABLE;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:296:21: error: ‘BTRFS_IOC_QUOTA_CTL’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_QUOTA_CTL, &args) != 0)
^~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘void snapper::BtrfsUtils::quota_disable(int)’:
BtrfsUtils.cc:304:41: error: aggregate ‘snapper::BtrfsUtils::quota_disable(int)::btrfs_ioctl_quota_ctl_args args’ has incomplete type and cannot be defined
struct btrfs_ioctl_quota_ctl_args args;
^~~~
BtrfsUtils.cc:306:18: error: ‘BTRFS_QUOTA_CTL_DISABLE’ was not declared in this scope
args.cmd = BTRFS_QUOTA_CTL_DISABLE;
^~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:308:21: error: ‘BTRFS_IOC_QUOTA_CTL’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_QUOTA_CTL, &args) != 0)
^~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘void snapper::BtrfsUtils::quota_rescan(int)’:
BtrfsUtils.cc:316:43: error: aggregate ‘snapper::BtrfsUtils::quota_rescan(int)::btrfs_ioctl_quota_rescan_args args’ has incomplete type and cannot be defined
struct btrfs_ioctl_quota_rescan_args args;
^~~~
BtrfsUtils.cc:319:20: error: ‘BTRFS_IOC_QUOTA_RESCAN’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_QUOTA_RESCAN, &args) != 0)
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:328:17: error: ‘BTRFS_IOC_QUOTA_RESCAN_STATUS’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_QUOTA_RESCAN_STATUS, &args) != 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘snapper::BtrfsUtils::qgroup_t snapper::BtrfsUtils::calc_qgroup(uint64_t, snapper::BtrfsUtils::subvolid_t)’:
BtrfsUtils.cc:340:23: error: ‘BTRFS_QGROUP_LEVEL_SHIFT’ was not declared in this scope
return (level << BTRFS_QGROUP_LEVEL_SHIFT) | id;
^~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘uint64_t snapper::BtrfsUtils::get_level(snapper::BtrfsUtils::qgroup_t)’:
BtrfsUtils.cc:347:23: error: ‘BTRFS_QGROUP_LEVEL_SHIFT’ was not declared in this scope
return qgroup >> BTRFS_QGROUP_LEVEL_SHIFT;
^~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘uint64_t snapper::BtrfsUtils::get_id(snapper::BtrfsUtils::qgroup_t)’:
BtrfsUtils.cc:354:32: error: ‘BTRFS_QGROUP_LEVEL_SHIFT’ was not declared in this scope
return qgroup & ((1LLU << BTRFS_QGROUP_LEVEL_SHIFT) - 1);
^~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘void snapper::BtrfsUtils::qgroup_create(int, snapper::BtrfsUtils::qgroup_t)’:
BtrfsUtils.cc:394:44: error: aggregate ‘snapper::BtrfsUtils::qgroup_create(int, snapper::BtrfsUtils::qgroup_t)::btrfs_ioctl_qgroup_create_args args’ has incomplete type and cannot be defined
struct btrfs_ioctl_qgroup_create_args args;
^~~~
BtrfsUtils.cc:399:20: error: ‘BTRFS_IOC_QGROUP_CREATE’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_QGROUP_CREATE, &args) != 0)
^~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘void snapper::BtrfsUtils::qgroup_destroy(int, snapper::BtrfsUtils::qgroup_t)’:
BtrfsUtils.cc:407:44: error: aggregate ‘snapper::BtrfsUtils::qgroup_destroy(int, snapper::BtrfsUtils::qgroup_t)::btrfs_ioctl_qgroup_create_args args’ has incomplete type and cannot be defined
struct btrfs_ioctl_qgroup_create_args args;
^~~~
BtrfsUtils.cc:412:20: error: ‘BTRFS_IOC_QGROUP_CREATE’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_QGROUP_CREATE, &args) != 0)
^~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘void snapper::BtrfsUtils::qgroup_assign(int, snapper::BtrfsUtils::qgroup_t, snapper::BtrfsUtils::qgroup_t)’:
BtrfsUtils.cc:420:44: error: aggregate ‘snapper::BtrfsUtils::qgroup_assign(int, snapper::BtrfsUtils::qgroup_t, snapper::BtrfsUtils::qgroup_t)::btrfs_ioctl_qgroup_assign_args args’ has incomplete type and cannot be defined
struct btrfs_ioctl_qgroup_assign_args args;
^~~~
BtrfsUtils.cc:426:20: error: ‘BTRFS_IOC_QGROUP_ASSIGN’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_QGROUP_ASSIGN, &args) != 0)
^~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘void snapper::BtrfsUtils::qgroup_remove(int, snapper::BtrfsUtils::qgroup_t, snapper::BtrfsUtils::qgroup_t)’:
BtrfsUtils.cc:434:44: error: aggregate ‘snapper::BtrfsUtils::qgroup_remove(int, snapper::BtrfsUtils::qgroup_t, snapper::BtrfsUtils::qgroup_t)::btrfs_ioctl_qgroup_assign_args args’ has incomplete type and cannot be defined
struct btrfs_ioctl_qgroup_assign_args args;
^~~~
BtrfsUtils.cc:440:20: error: ‘BTRFS_IOC_QGROUP_ASSIGN’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_QGROUP_ASSIGN, &args) != 0)
^~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘size_t snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)’:
BtrfsUtils.cc:470:37: error: aggregate ‘snapper::BtrfsUtils::btrfs_ioctl_search_args args’ has incomplete type and cannot be defined
struct btrfs_ioctl_search_args args;
^~~~
BtrfsUtils.cc:474:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->tree_id = BTRFS_QUOTA_TREE_OBJECTID;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:474:20: error: ‘BTRFS_QUOTA_TREE_OBJECTID’ was not declared in this scope
sk->tree_id = BTRFS_QUOTA_TREE_OBJECTID;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:475:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->min_objectid = 0;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:476:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->max_objectid = BTRFS_LAST_FREE_OBJECTID;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:476:25: error: ‘BTRFS_LAST_FREE_OBJECTID’ was not declared in this scope
sk->max_objectid = BTRFS_LAST_FREE_OBJECTID;
^~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:477:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->min_offset = tree_search_opts.min_offset;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:478:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->max_offset = tree_search_opts.max_offset;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:479:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->min_transid = 0;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:480:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->max_transid = (u64)(-1);
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:480:25: error: ‘u64’ was not declared in this scope
sk->max_transid = (u64)(-1);
^~~
BtrfsUtils.cc:481:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->min_type = tree_search_opts.min_type;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:482:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->max_type = tree_search_opts.max_type;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:483:8: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->nr_items = 4096;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:489:17: error: ‘BTRFS_IOC_TREE_SEARCH’ was not declared in this scope
if (ioctl(fd, BTRFS_IOC_TREE_SEARCH, &args) != 0)
^~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:492:9: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
if (sk->nr_items == 0)
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:495:7: error: expected ‘;’ before ‘off’
u64 off = 0;
^~~
BtrfsUtils.cc:497:34: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
for (unsigned int i = 0; i < sk->nr_items; ++i)
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:499:93: error: ‘off’ was not declared in this scope
struct btrfs_ioctl_search_header* sh = (struct btrfs_ioctl_search_header*)(args.buf + off);
^~~
BtrfsUtils.cc:501:13: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
if (sh->offset >= tree_search_opts.min_offset && sh->offset <= tree_search_opts.max_offset &&
^~
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:501:58: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
if (sh->offset >= tree_search_opts.min_offset && sh->offset <= tree_search_opts.max_offset &&
^~
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:502:6: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
sh->type >= tree_search_opts.min_type && sh->type <= tree_search_opts.max_type)
^~
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:502:47: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
sh->type >= tree_search_opts.min_type && sh->type <= tree_search_opts.max_type)
^~
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:508:24: error: invalid application of ‘sizeof’ to incomplete type ‘snapper::BtrfsUtils::btrfs_ioctl_search_header’
off += sizeof(*sh) + sh->len;
^
BtrfsUtils.cc:508:30: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
off += sizeof(*sh) + sh->len;
^~
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:510:9: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->min_type = sh->type;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:510:24: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
sk->min_type = sh->type;
^~
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:511:9: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->min_objectid = sh->objectid;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:511:28: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
sk->min_objectid = sh->objectid;
^~
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:512:9: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->min_offset = sh->offset;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:512:26: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
sk->min_offset = sh->offset;
^~
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:515:5: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->nr_items = 4096;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:517:9: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
if (sk->min_offset < (u64)(-1))
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:518:9: error: invalid use of incomplete type ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
sk->min_offset++;
^~
BtrfsUtils.cc:473:13: note: forward declaration of ‘struct snapper::BtrfsUtils::qgroups_tree_search(int, const snapper::BtrfsUtils::TreeSearchOpts&)::btrfs_ioctl_search_key’
struct btrfs_ioctl_search_key* sk = &args.key;
^~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘snapper::BtrfsUtils::qgroup_t snapper::BtrfsUtils::qgroup_find_free(int, uint64_t)’:
BtrfsUtils.cc:532:38: error: ‘BTRFS_QGROUP_INFO_KEY’ was not declared in this scope
TreeSearchOpts tree_search_opts(BTRFS_QGROUP_INFO_KEY);
^~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:534:64: error: ‘BTRFS_QGROUP_LEVEL_SHIFT’ was not declared in this scope
tree_search_opts.max_offset = calc_qgroup(level, (1LLU << BTRFS_QGROUP_LEVEL_SHIFT) - 1);
^~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In lambda function:
BtrfsUtils.cc:538:23: error: invalid use of incomplete type ‘const struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
qgroups.push_back(sh.offset);
^
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘std::vector<long unsigned int> snapper::BtrfsUtils::qgroup_query_children(int, snapper::BtrfsUtils::qgroup_t)’:
BtrfsUtils.cc:563:38: error: ‘BTRFS_QGROUP_RELATION_KEY’ was not declared in this scope
TreeSearchOpts tree_search_opts(BTRFS_QGROUP_RELATION_KEY);
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In lambda function:
BtrfsUtils.cc:568:19: error: invalid use of incomplete type ‘const struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
ret.push_back(sh.objectid);
^
BtrfsUtils.cc:456:24: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_header’
const struct btrfs_ioctl_search_header& sh)> callback;
^~~~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In function ‘snapper::BtrfsUtils::QGroupUsage snapper::BtrfsUtils::qgroup_query_usage(int, snapper::BtrfsUtils::qgroup_t)’:
BtrfsUtils.cc:582:38: error: ‘BTRFS_QGROUP_INFO_KEY’ was not declared in this scope
TreeSearchOpts tree_search_opts(BTRFS_QGROUP_INFO_KEY);
^~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc: In lambda function:
BtrfsUtils.cc:587:33: error: aggregate ‘snapper::BtrfsUtils::qgroup_query_usage(int, snapper::BtrfsUtils::qgroup_t)::<lambda(const snapper::BtrfsUtils::btrfs_ioctl_search_args&, const snapper::BtrfsUtils::btrfs_ioctl_search_header&)>::btrfs_qgroup_info_item info’ has incomplete type and cannot be defined
struct btrfs_qgroup_info_item info;
^~~~
BtrfsUtils.cc:588:54: error: invalid use of incomplete type ‘const struct snapper::BtrfsUtils::btrfs_ioctl_search_args’
memcpy(&info, (struct btrfs_qgroup_info_item*)(args.buf + sizeof(sh)), sizeof(info));
^
BtrfsUtils.cc:455:38: note: forward declaration of ‘struct snapper::BtrfsUtils::btrfs_ioctl_search_args’
std::function<void(const struct btrfs_ioctl_search_args& args,
^~~~~~~~~~~~~~~~~~~~~~~
BtrfsUtils.cc:588:70: error: invalid application of ‘sizeof’ to incomplete type ‘const snapper::BtrfsUtils::btrfs_ioctl_search_header’
memcpy(&info, (struct btrfs_qgroup_info_item*)(args.buf + sizeof(sh)), sizeof(info));
^
BtrfsUtils.cc:590:56: error: ‘le64_to_cpu’ was not declared in this scope
qgroup_usage.referenced = le64_to_cpu(info.referenced);
^
make[2]: *** [Makefile:560: BtrfsUtils.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
mv -f .deps/Hooks.Tpo .deps/Hooks.Plo
Btrfs.cc: In member function ‘virtual void snapper::Btrfs::deleteSnapshot(unsigned int) const’:
Btrfs.cc:411:53: error: ‘subvolid’ was not declared in this scope
qgroup_destroy(subvolume_dir.fd(), calc_qgroup(0, subvolid));
^~~~~~~~
Btrfs.cc: In member function ‘virtual void snapper::Btrfs::sync() const’:
Btrfs.cc:1527:22: warning: unused variable ‘subvolid’ [-Wunused-variable]
for (subvolid_t subvolid : deleted_subvolids)
^~~~~~~~
make[2]: *** [Makefile:560: Btrfs.lo] Error 1
make[2]: Leaving directory '/tmp/snapper/src/snapper-0.3.3/snapper'
make[1]: *** [Makefile:480: all-recursive] Error 1
make[1]: Leaving directory '/tmp/snapper/src/snapper-0.3.3'
make: *** [Makefile:389: all] Error 2
Probably this issue can be closed.