Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Starting build of type regular ...
- Skipping setjmp_test2.S test on non-x86
- ...patience...
- ...found 941 target(s)...
- ...updating 13 target(s)...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Attribute.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp:12:
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:100:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 100 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:103:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 103 | uuid_t chunk_tree_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:169:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 169 | uuid_t device_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:215:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 215 | uuid_t uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:216:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 216 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:222:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 222 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/Attribute.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Attribute.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Attribute.o ...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/AttributeIterator.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:8:
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:100:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 100 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:103:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 103 | uuid_t chunk_tree_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:169:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 169 | uuid_t device_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:215:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 215 | uuid_t uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:216:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 216 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:222:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 222 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp: In member function ‘fssh_status_t AttributeIterator::GetNext(char*, fssh_size_t*)’:
- ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:13:30: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘uint32_t’ {aka ‘unsigned int’} [-Wformat=]
- 13 | # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ^~~~~~~~~~~~~~~~~~~~~~~~~
- 14 | #else
- | ~~~~~
- 15 | # define TRACE(x...) ;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 16 | #endif
- | ~~~~~~
- 17 | # define ERROR(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 18 |
- |
- 19 |
- |
- 20 | AttributeIterator::AttributeIterator(Inode* inode)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 21 | :
- | ~
- 22 | fOffset(-1ULL),
- | ~~~~~~~~~~~~~~~
- 23 | fInode(inode),
- | ~~~~~~~~~~~~~~
- 24 | fIterator(NULL)
- | ~~~~~~~~~~~~~~~
- 25 | {
- | ~
- 26 | btrfs_key key;
- | ~~~~~~~~~~~~~~
- 27 | key.SetType(BTRFS_KEY_TYPE_XATTR_ITEM);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 28 | key.SetObjectID(inode->ID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 29 | key.SetOffset(BTREE_BEGIN);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 30 | fIterator = new(std::nothrow) TreeIterator(inode->GetVolume()->FSTree(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 31 | key);
- | ~~~~~
- 32 | }
- | ~
- 33 |
- |
- 34 |
- |
- 35 | AttributeIterator::~AttributeIterator()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 36 | {
- | ~
- 37 | delete fIterator;
- | ~~~~~~~~~~~~~~~~~
- 38 | fIterator = NULL;
- | ~~~~~~~~~~~~~~~~~
- 39 | }
- | ~
- 40 |
- |
- 41 |
- |
- 42 | status_t
- | ~~~~~~~~
- 43 | AttributeIterator::InitCheck()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 44 | {
- | ~
- 45 | return fIterator != NULL ? B_OK : B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 46 | }
- | ~
- 47 |
- |
- 48 |
- |
- 49 | status_t
- | ~~~~~~~~
- 50 | AttributeIterator::GetNext(char* name, size_t* _nameLength)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 51 | {
- | ~
- 52 | btrfs_dir_entry* entries;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 53 | uint32 entries_length;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 54 | status_t status = fIterator->GetPreviousEntry((void**)&entries,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 55 | &entries_length);
- | ~~~~~~~~~~~~~~~~~
- 56 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 57 | return status;
- | ~~~~~~~~~~~~~~
- 58 |
- |
- 59 | btrfs_dir_entry* entry = entries;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 60 | uint16 current = 0;
- | ~~~~~~~~~~~~~~~~~~~
- 61 | while (current < entries_length) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 62 | current += entry->Length();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 63 | break;
- | ~~~~~~
- 64 | // TODO there could be several entries with the same name hash
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 65 | entry = (btrfs_dir_entry*)((uint8*)entry + entry->Length());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 66 | }
- | ~
- 67 |
- |
- 68 | TRACE("DirectoryIterator::GetNext() entries_length %ld name_length %d\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 69 | entries_length, entry->NameLength());
- | ~~~~~~~~~~~~~~
- | |
- | uint32_t {aka unsigned int}
- ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:68:2: note: in expansion of macro ‘TRACE’
- 68 | TRACE("DirectoryIterator::GetNext() entries_length %ld name_length %d\n",
- | ^~~~~
- ../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp:68:55: note: format string is defined here
- 68 | TRACE("DirectoryIterator::GetNext() entries_length %ld name_length %d\n",
- | ~~^
- | |
- | long int
- | %d
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/AttributeIterator.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/AttributeIterator.o ...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/BTree.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:12:
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:100:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 100 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:103:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 103 | uuid_t chunk_tree_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:169:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 169 | uuid_t device_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:215:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 215 | uuid_t uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:216:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 216 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:222:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 222 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp: In member function ‘int BTree::Path::Move(int, int)’:
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:387:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
- 387 | if (fSlots[level] >= fNodes[level]->ItemCount())
- | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp: In member function ‘fssh_status_t BTree::Path::GetEntry(int, btrfs_key*, void**, uint32_t*, uint32_t*)’:
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:398:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
- 398 | if (slot < 0 || slot >= leaf->ItemCount())
- | ~~~~~^~~~~~~~~~~~~~~~~~~~
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp: In member function ‘fssh_status_t BTree::MakeEntries(Transaction&, BTree::Path*, const btrfs_key&, int, int)’:
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:20:30: warning: ' ' flag used with ‘%u’ gnu_printf format [-Wformat=]
- 20 | # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ^~~~~~~~~~~~~~~~~~~~~~~~~
- 21 | #else
- | ~~~~~
- 22 | # define TRACE(x...) ;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 23 | #endif
- | ~~~~~~
- 24 | # define ERROR(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 25 |
- |
- 26 |
- |
- 27 | BTree::Node::Node(Volume* volume)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 28 | :
- | ~
- 29 | fNode(NULL),
- | ~~~~~~~~~~~~
- 30 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 31 | fBlockNumber(0),
- | ~~~~~~~~~~~~~~~~
- 32 | fWritable(false)
- | ~~~~~~~~~~~~~~~~
- 33 | {
- | ~
- 34 | }
- | ~
- 35 |
- |
- 36 |
- |
- 37 | BTree::Node::Node(Volume* volume, off_t block)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 38 | :
- | ~
- 39 | fNode(NULL),
- | ~~~~~~~~~~~~
- 40 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 41 | fBlockNumber(0),
- | ~~~~~~~~~~~~~~~~
- 42 | fWritable(false)
- | ~~~~~~~~~~~~~~~~
- 43 | {
- | ~
- 44 | SetTo(block);
- | ~~~~~~~~~~~~~
- 45 | }
- | ~
- 46 |
- |
- 47 |
- |
- 48 | BTree::Node::~Node()
- | ~~~~~~~~~~~~~~~~~~~~
- 49 | {
- | ~
- 50 | Unset();
- | ~~~~~~~~
- 51 | }
- | ~
- 52 |
- |
- 53 |
- |
- 54 | void
- | ~~~~
- 55 | BTree::Node::Keep()
- | ~~~~~~~~~~~~~~~~~~~
- 56 | {
- | ~
- 57 | fNode = NULL;
- | ~~~~~~~~~~~~~
- 58 | }
- | ~
- 59 |
- |
- 60 |
- |
- 61 | void
- | ~~~~
- 62 | BTree::Node::Unset()
- | ~~~~~~~~~~~~~~~~~~~~
- 63 | {
- | ~
- 64 | if (fNode != NULL) {
- | ~~~~~~~~~~~~~~~~~~~~
- 65 | block_cache_put(fVolume->BlockCache(), fBlockNumber);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 66 | fNode = NULL;
- | ~~~~~~~~~~~~~
- 67 | }
- | ~
- 68 | }
- | ~
- 69 |
- |
- 70 |
- |
- 71 | void
- | ~~~~
- 72 | BTree::Node::SetTo(off_t block)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 73 | {
- | ~
- 74 | Unset();
- | ~~~~~~~~
- 75 | fBlockNumber = block;
- | ~~~~~~~~~~~~~~~~~~~~~
- 76 | fNode = (btrfs_stream*)block_cache_get(fVolume->BlockCache(), block);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 77 | }
- | ~
- 78 |
- |
- 79 |
- |
- 80 | void
- | ~~~~
- 81 | BTree::Node::SetToWritable(off_t block, int32 transactionId, bool empty)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 82 | {
- | ~
- 83 | Unset();
- | ~~~~~~~~
- 84 | fBlockNumber = block;
- | ~~~~~~~~~~~~~~~~~~~~~
- 85 | fWritable = true;
- | ~~~~~~~~~~~~~~~~~
- 86 | if (empty) {
- | ~~~~~~~~~~~~
- 87 | fNode = (btrfs_stream*)block_cache_get_empty(fVolume->BlockCache(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 88 | block, transactionId);
- | ~~~~~~~~~~~~~~~~~~~~~~
- 89 | } else {
- | ~~~~~~~~
- 90 | fNode = (btrfs_stream*)block_cache_get_writable(fVolume->BlockCache(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 91 | block, transactionId);
- | ~~~~~~~~~~~~~~~~~~~~~~
- 92 | }
- | ~
- 93 | }
- | ~
- 94 |
- |
- 95 |
- |
- 96 | status_t
- | ~~~~~~~~
- 97 | BTree::Node::SearchSlot(const btrfs_key& key, int* slot, btree_traversing type)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 98 | const
- | ~~~~~
- 99 | {
- | ~
- 100 | // binary search for item slot in a node
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 101 | int entrySize = sizeof(btrfs_entry);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 102 | if (Level() != 0) {
- | ~~~~~~~~~~~~~~~~~~~
- 103 | // internal node
- | ~~~~~~~~~~~~~~~~
- 104 | entrySize = sizeof(btrfs_index);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 105 | }
- | ~
- 106 |
- |
- 107 | int high = ItemCount();
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 108 | int low = 0, mid = 0, comp = 0;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 109 | uint8* base = (uint8*)fNode + sizeof(btrfs_header);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 110 | const btrfs_key* other;
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 111 | while (low < high) {
- | ~~~~~~~~~~~~~~~~~~~~
- 112 | mid = (low + high) / 2;
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 113 | other = (const btrfs_key*)(base + mid * entrySize);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 114 | comp = key.Compare(*other);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 115 | if (comp < 0)
- | ~~~~~~~~~~~~~
- 116 | high = mid;
- | ~~~~~~~~~~~
- 117 | else if (comp > 0)
- | ~~~~~~~~~~~~~~~~~~
- 118 | low = mid + 1;
- | ~~~~~~~~~~~~~~
- 119 | else {
- | ~~~~~~
- 120 | *slot = mid;
- | ~~~~~~~~~~~~
- 121 | return B_OK; // if key is in node
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 122 | }
- | ~
- 123 | }
- | ~
- 124 |
- |
- 125 | // |--item1--|--item2--|--item3--|--etc--|
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 126 | // m-1 m m+1
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 127 | // k : comp < 0
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 128 | // k : comp > 0
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 129 | if (type == BTREE_BACKWARD && comp < 0)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 130 | mid--;
- | ~~~~~~
- 131 | else if (type == BTREE_FORWARD && comp > 0)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 132 | mid++;
- | ~~~~~~
- 133 |
- |
- 134 | if (type == BTREE_EXACT || mid < 0)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 135 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 136 |
- |
- 137 | *slot = mid;
- | ~~~~~~~~~~~~
- 138 | TRACE("SearchSlot() found slot %" B_PRId32 " comp %" B_PRId32 "\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 139 | *slot, comp);
- | ~~~~~~~~~~~~~
- 140 | return B_OK;
- | ~~~~~~~~~~~~
- 141 | }
- | ~
- 142 |
- |
- 143 |
- |
- 144 | /*
- | ~~
- 145 | * calculate used space except the header.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 146 | * type is only for leaf node
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 147 | * type 1: only item space
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 148 | * type 2: only item data space
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 149 | * type 3: both type 1 and 2
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 150 | */
- | ~~
- 151 | int
- | ~~~
- 152 | BTree::Node::_CalculateSpace(uint32 from, uint32 to, uint8 type) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 153 | {
- | ~
- 154 | if (to < from || to >= ItemCount())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 155 | return 0;
- | ~~~~~~~~~
- 156 |
- |
- 157 | if (Level() != 0)
- | ~~~~~~~~~~~~~~~~~
- 158 | return sizeof(btrfs_index) * (to - from + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 159 |
- |
- 160 | uint32 result = 0;
- | ~~~~~~~~~~~~~~~~~~
- 161 | if ((type & 1) == 1) {
- | ~~~~~~~~~~~~~~~~~~~~~~
- 162 | result += sizeof(btrfs_entry) * (to - from + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 163 | }
- | ~
- 164 | if ((type & 2) == 2) {
- | ~~~~~~~~~~~~~~~~~~~~~~
- 165 | result += Item(from)->Offset() + Item(from)->Size()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 166 | - Item(to)->Offset();
- | ~~~~~~~~~~~~~~~~~~~~~
- 167 | }
- | ~
- 168 |
- |
- 169 | return result;
- | ~~~~~~~~~~~~~~
- 170 | }
- | ~
- 171 |
- |
- 172 |
- |
- 173 | int
- | ~~~
- 174 | BTree::Node::SpaceUsed() const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 175 | {
- | ~
- 176 | if (Level() == 0)
- | ~~~~~~~~~~~~~~~~~
- 177 | return _CalculateSpace(0, ItemCount() - 1, 3);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 178 | return _CalculateSpace(0, ItemCount() - 1, 0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 179 | }
- | ~
- 180 |
- |
- 181 |
- |
- 182 | int
- | ~~~
- 183 | BTree::Node::SpaceLeft() const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 184 | {
- | ~
- 185 | return fVolume->BlockSize() - SpaceUsed() - sizeof(btrfs_header);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 186 | }
- | ~
- 187 |
- |
- 188 |
- |
- 189 | void
- | ~~~~
- 190 | BTree::Node::_Copy(const Node* origin, uint32 at, uint32 from, uint32 to,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 191 | int length) const
- | ~~~~~~~~~~~~~~~~~
- 192 | {
- | ~
- 193 | TRACE("Node::_Copy() at: %d from: %d to: %d length: %d\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 194 | at, from, to, length);
- | ~~~~~~~~~~~~~~~~~~~~~~
- 195 |
- |
- 196 | if (Level() == 0) {
- | ~~~~~~~~~~~~~~~~~~~
- 197 | memcpy(Item(at), origin->Item(from), origin->_CalculateSpace(from, to));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 198 | // Item offset of copied node must be changed to get the
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 199 | // item data offset correctly. length can be zero
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 200 | // but let it there doesn't harm anything.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 201 | for (uint32 i = at; i - at <= to - from; ++i)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 202 | Item(i)->SetOffset(Item(i)->Offset() - length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 203 |
- |
- 204 | memcpy(ItemData(at + to - from), origin->ItemData(to),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 205 | origin->_CalculateSpace(from, to, 2));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 206 | } else {
- | ~~~~~~~~
- 207 | memcpy(Index(at), origin->Index(from),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 208 | origin->_CalculateSpace(from, to));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 209 | }
- | ~
- 210 | }
- | ~
- 211 |
- |
- 212 |
- |
- 213 | status_t
- | ~~~~~~~~
- 214 | BTree::Node::_SpaceCheck(int length) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 215 | {
- | ~
- 216 | // this is a little bit weird here because we can't find
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 217 | // any suitable error code
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 218 | if (length < 0 && std::abs(length) >= SpaceUsed())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 219 | return B_DIRECTORY_NOT_EMPTY; // not enough data to delete
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 220 | if (length > 0 && length >= SpaceLeft())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 221 | return B_DEVICE_FULL; // no spare space
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 222 | return B_OK;
- | ~~~~~~~~~~~~
- 223 | }
- | ~
- 224 |
- |
- 225 |
- |
- 226 | /*
- | ~~
- 227 | * copy node header, items and items data
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 228 | * length is size to insert/remove
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 229 | * if node is a internal node, length isnt used
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 230 | * length = 0: Copy a whole
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 231 | * length < 0: removing
- | ~~~~~~~~~~~~~~~~~~~~~~
- 232 | * length > 0: inserting
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 233 | */
- | ~~
- 234 | status_t
- | ~~~~~~~~
- 235 | BTree::Node::Copy(const Node* origin, uint32 start, uint32 end, int length)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 236 | const
- | ~~~~~
- 237 | {
- | ~
- 238 | status_t status = origin->_SpaceCheck(length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 239 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 240 | return status;
- | ~~~~~~~~~~~~~~
- 241 |
- |
- 242 | memcpy(fNode, origin->fNode, sizeof(btrfs_header));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 243 | if (length == 0) {
- | ~~~~~~~~~~~~~~~~~~
- 244 | // like removing [0, start - 1] and keeping [start, end]
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 245 | length = -origin->_CalculateSpace(0, start - 1, 2);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 246 | _Copy(origin, 0, start, end, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 247 | } else if (length < 0) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 248 | // removing all items in [start, end]
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 249 | if (start > 0)
- | ~~~~~~~~~~~~~~
- 250 | _Copy(origin, 0, 0, start - 1, 0); // <-- [start,...
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 251 | if (end + 1 < origin->ItemCount()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 252 | // ..., end] -->
- | ~~~~~~~~~~~~~~~~
- 253 | // we only care data size
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 254 | length += origin->_CalculateSpace(start, end);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 255 | _Copy(origin, start, end + 1, origin->ItemCount() - 1, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 256 | }
- | ~
- 257 | } else {
- | ~~~~~~~~
- 258 | // inserting in [start, end] - make a hole for later
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 259 | if (start > 0)
- | ~~~~~~~~~~~~~~
- 260 | _Copy(origin, 0, 0, start - 1, 0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 261 | if (start < origin->ItemCount()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 262 | length -= origin->_CalculateSpace(start, end);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 263 | _Copy(origin, end + 1, start, origin->ItemCount() - 1, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 264 | }
- | ~
- 265 | }
- | ~
- 266 |
- |
- 267 | return B_OK;
- | ~~~~~~~~~~~~
- 268 | }
- | ~
- 269 |
- |
- 270 |
- |
- 271 | /* Like copy but here we use memmove on current node.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 272 | */
- | ~~
- 273 | status_t
- | ~~~~~~~~
- 274 | BTree::Node::MoveEntries(uint32 start, uint32 end, int length) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 275 | {
- | ~
- 276 | status_t status = _SpaceCheck(length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 277 | if (status != B_OK || length == 0/*B_OK*/)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 278 | return status;
- | ~~~~~~~~~~~~~~
- 279 |
- |
- 280 | int entrySize = sizeof(btrfs_entry);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 281 | if (Level() != 0)
- | ~~~~~~~~~~~~~~~~~
- 282 | entrySize = sizeof(btrfs_index);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 283 |
- |
- 284 | uint8* base = (uint8*)fNode + sizeof(btrfs_header);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 285 | end++;
- | ~~~~~~
- 286 | if (length < 0) {
- | ~~~~~~~~~~~~~~~~~
- 287 | // removing [start, end]
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 288 | TRACE("Node::MoveEntries() removing ... start %" B_PRIu32 " end %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 289 | B_PRIu32 " length %i\n", start, end, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 290 | length += _CalculateSpace(start, end - 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 291 | } else {
- | ~~~~~~~~
- 292 | // length > 0
- | ~~~~~~~~~~~~~
- 293 | // inserting into [start, end] - make room for later
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 294 | TRACE("Node::MoveEntries() inserting ... start %" B_PRIu32 " end %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 295 | B_PRIu32 " length %i\n", start, end, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 296 | length -= _CalculateSpace(start, end - 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 297 | std::swap(start, end);
- | ~~~~~~~~~~~~~~~~~~~~~~
- 298 | }
- | ~
- 299 |
- |
- 300 | if (end >= ItemCount())
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 301 | return B_OK;
- | ~~~~~~~~~~~~
- 302 |
- |
- 303 | int dataSize = _CalculateSpace(end, ItemCount() - 1, 2);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 304 | // moving items/block pointers
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 305 | memmove(base + start * entrySize, base + end * entrySize,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 306 | _CalculateSpace(end, ItemCount() - 1));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 307 | if (Level() == 0) {
- | ~~~~~~~~~~~~~~~~~~~
- 308 | // moving item data
- | ~~~~~~~~~~~~~~~~~~~
- 309 | int num = start - end;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 310 | for (uint32 i = start; i < ItemCount() + num; ++i)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 311 | Item(i)->SetOffset(Item(i)->Offset() - length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 312 |
- |
- 313 | memmove(ItemData(ItemCount() - 1) - length, ItemData(ItemCount() - 1),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 314 | dataSize);
- | ~~~~~~~~~~
- 315 | }
- | ~
- 316 |
- |
- 317 | return B_OK;
- | ~~~~~~~~~~~~
- 318 | }
- | ~
- 319 |
- |
- 320 |
- |
- 321 | // #pragma mark - BTree::Path implementation
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 322 |
- |
- 323 |
- |
- 324 | BTree::Path::Path(BTree* tree)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 325 | :
- | ~
- 326 | fTree(tree)
- | ~~~~~~~~~~~
- 327 | {
- | ~
- 328 | for (int i = 0; i < BTRFS_MAX_TREE_DEPTH; ++i) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 329 | fNodes[i] = NULL;
- | ~~~~~~~~~~~~~~~~~
- 330 | fSlots[i] = 0;
- | ~~~~~~~~~~~~~~
- 331 | }
- | ~
- 332 | }
- | ~
- 333 |
- |
- 334 |
- |
- 335 | BTree::Path::~Path()
- | ~~~~~~~~~~~~~~~~~~~~
- 336 | {
- | ~
- 337 | for (int i = 0; i < BTRFS_MAX_TREE_DEPTH; ++i) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 338 | delete fNodes[i];
- | ~~~~~~~~~~~~~~~~~
- 339 | fNodes[i] = NULL;
- | ~~~~~~~~~~~~~~~~~
- 340 | fSlots[i] = 0;
- | ~~~~~~~~~~~~~~
- 341 | }
- | ~
- 342 | }
- | ~
- 343 |
- |
- 344 |
- |
- 345 | BTree::Node*
- | ~~~~~~~~~~~~
- 346 | BTree::Path::GetNode(int level, int* _slot) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 347 | {
- | ~
- 348 | if (_slot != NULL)
- | ~~~~~~~~~~~~~~~~~~
- 349 | *_slot = fSlots[level];
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 350 | return fNodes[level];
- | ~~~~~~~~~~~~~~~~~~~~~
- 351 | }
- | ~
- 352 |
- |
- 353 |
- |
- 354 | BTree::Node*
- | ~~~~~~~~~~~~
- 355 | BTree::Path::SetNode(off_t block, int slot)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 356 | {
- | ~
- 357 | Node node(fTree->SystemVolume(), block);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 358 | return SetNode(&node, slot);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 359 | }
- | ~
- 360 |
- |
- 361 |
- |
- 362 | BTree::Node*
- | ~~~~~~~~~~~~
- 363 | BTree::Path::SetNode(const Node* node, int slot)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 364 | {
- | ~
- 365 | uint8 level = node->Level();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 366 | if (fNodes[level] == NULL) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 367 | fNodes[level] = new Node(fTree->SystemVolume(), node->BlockNum());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 368 | if (fNodes[level] == NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 369 | return NULL;
- | ~~~~~~~~~~~~
- 370 | } else
- | ~~~~~~
- 371 | fNodes[level]->SetTo(node->BlockNum());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 372 |
- |
- 373 | if (slot == -1)
- | ~~~~~~~~~~~~~~~
- 374 | fSlots[level] = fNodes[level]->ItemCount() - 1;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 375 | else
- | ~~~~
- 376 | fSlots[level] = slot;
- | ~~~~~~~~~~~~~~~~~~~~~
- 377 | return fNodes[level];
- | ~~~~~~~~~~~~~~~~~~~~~
- 378 | }
- | ~
- 379 |
- |
- 380 |
- |
- 381 | int
- | ~~~
- 382 | BTree::Path::Move(int level, int step)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 383 | {
- | ~
- 384 | fSlots[level] += step;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 385 | if (fSlots[level] < 0)
- | ~~~~~~~~~~~~~~~~~~~~~~
- 386 | return -1;
- | ~~~~~~~~~~
- 387 | if (fSlots[level] >= fNodes[level]->ItemCount())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 388 | return 1;
- | ~~~~~~~~~
- 389 | return 0;
- | ~~~~~~~~~
- 390 | }
- | ~
- 391 |
- |
- 392 |
- |
- 393 | status_t
- | ~~~~~~~~
- 394 | BTree::Path::GetEntry(int slot, btrfs_key* _key, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 395 | uint32* _offset)
- | ~~~~~~~~~~~~~~~~
- 396 | {
- | ~
- 397 | BTree::Node* leaf = fNodes[0];
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 398 | if (slot < 0 || slot >= leaf->ItemCount())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 399 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 400 |
- |
- 401 | if (_key != NULL)
- | ~~~~~~~~~~~~~~~~~
- 402 | *_key = leaf->Item(slot)->key;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 403 |
- |
- 404 | uint32 itemSize = leaf->Item(slot)->Size();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 405 | if (_value != NULL) {
- | ~~~~~~~~~~~~~~~~~~~~~
- 406 | *_value = malloc(itemSize);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 407 | if (*_value == NULL)
- | ~~~~~~~~~~~~~~~~~~~~
- 408 | return B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~
- 409 |
- |
- 410 | memcpy(*_value, leaf->ItemData(slot), itemSize);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 411 | }
- | ~
- 412 |
- |
- 413 | if (_size != NULL)
- | ~~~~~~~~~~~~~~~~~~
- 414 | *_size = itemSize;
- | ~~~~~~~~~~~~~~~~~~
- 415 |
- |
- 416 | if (_offset != NULL)
- | ~~~~~~~~~~~~~~~~~~~~
- 417 | *_offset = leaf->Item(slot)->Offset();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 418 |
- |
- 419 | return B_OK;
- | ~~~~~~~~~~~~
- 420 | }
- | ~
- 421 |
- |
- 422 |
- |
- 423 | status_t
- | ~~~~~~~~
- 424 | BTree::Path::SetEntry(int slot, const btrfs_entry& entry, void* value)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 425 | {
- | ~
- 426 | if (slot < 0)
- | ~~~~~~~~~~~~~
- 427 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 428 |
- |
- 429 | memcpy(fNodes[0]->Item(slot), &entry, sizeof(btrfs_entry));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 430 | memcpy(fNodes[0]->ItemData(slot), value, entry.Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 431 | return B_OK;
- | ~~~~~~~~~~~~
- 432 | }
- | ~
- 433 |
- |
- 434 |
- |
- 435 | /*
- | ~~
- 436 | * Allocate and copy block and do all the changes that it can.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 437 | * for now, we only copy-on-write tree block,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 438 | * file data is "nocow" by default.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 439 | *
- | ~
- 440 | * o parent o
- | ~~~~~~~~~~~~~
- 441 | * | ===> \
- | ~~~~~~~~~~~~~~
- 442 | * o x o
- | ~~~~~~~~~~~~~~~
- 443 | */
- | ~~
- 444 | status_t
- | ~~~~~~~~
- 445 | BTree::Path::CopyOnWrite(Transaction& transaction, int level, uint32 start,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 446 | int num, int length)
- | ~~~~~~~~~~~~~~~~~~~~
- 447 | {
- | ~
- 448 | Node* node = fNodes[level];
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 449 | if (node == NULL)
- | ~~~~~~~~~~~~~~~~~
- 450 | return B_BAD_VALUE;
- | ~~~~~~~~~~~~~~~~~~~
- 451 |
- |
- 452 | status_t status;
- | ~~~~~~~~~~~~~~~~
- 453 | if (transaction.HasBlock(node->BlockNum())) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 454 | // cow-ed block can not be cow-ed again
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 455 | status = node->MoveEntries(start, start + num - 1, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 456 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 457 | return status;
- | ~~~~~~~~~~~~~~
- 458 |
- |
- 459 | node->SetGeneration(transaction.SystemID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 460 | if (length < 0)
- | ~~~~~~~~~~~~~~~
- 461 | node->SetItemCount(node->ItemCount() - num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 462 | else if (length > 0)
- | ~~~~~~~~~~~~~~~~~~~~
- 463 | node->SetItemCount(node->ItemCount() + num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 464 |
- |
- 465 | return B_OK;
- | ~~~~~~~~~~~~
- 466 | }
- | ~
- 467 |
- |
- 468 | uint64 address;
- | ~~~~~~~~~~~~~~~
- 469 | fsblock_t block;
- | ~~~~~~~~~~~~~~~~
- 470 | status = fTree->SystemVolume()->GetNewBlock(address, block);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 471 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 472 | return status;
- | ~~~~~~~~~~~~~~
- 473 |
- |
- 474 | fNodes[level] = new(std::nothrow) BTree::Node(fTree->SystemVolume());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 475 | if (fNodes[level] == NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 476 | return B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~
- 477 |
- |
- 478 | fNodes[level]->SetToWritable(block, transaction.ID(), true);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 479 |
- |
- 480 | status = fNodes[level]->Copy(node, start, start + num - 1, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 481 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 482 | return status;
- | ~~~~~~~~~~~~~~
- 483 |
- |
- 484 | fNodes[level]->SetGeneration(transaction.SystemID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 485 | fNodes[level]->SetLogicalAddress(address);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 486 | if (length < 0)
- | ~~~~~~~~~~~~~~~
- 487 | fNodes[level]->SetItemCount(node->ItemCount() - num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 488 | else if (length > 0)
- | ~~~~~~~~~~~~~~~~~~~~
- 489 | fNodes[level]->SetItemCount(node->ItemCount() + num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 490 | else
- | ~~~~
- 491 | fNodes[level]->SetItemCount(num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 492 |
- |
- 493 | // change pointer of this node in parent
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 494 | int parentSlot;
- | ~~~~~~~~~~~~~~~
- 495 | Node* parentNode = GetNode(level + 1, &parentSlot);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 496 | if (parentNode != NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 497 | parentNode->Index(parentSlot)->SetLogicalAddress(address);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 498 |
- |
- 499 | if (level == fTree->RootLevel())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 500 | fTree->SetRoot(fNodes[level]);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 501 |
- |
- 502 | delete node;
- | ~~~~~~~~~~~~
- 503 | return B_OK;
- | ~~~~~~~~~~~~
- 504 | }
- | ~
- 505 |
- |
- 506 |
- |
- 507 | /* Copy-On-Write all internal nodes start from a specific level.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 508 | * level > 0: to root
- | ~~~~~~~~~~~~~~~~~~~~
- 509 | * level <= 0: to leaf
- | ~~~~~~~~~~~~~~~~~~~~~
- 510 | *
- | ~
- 511 | * path cow-path path cow-path
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 512 | * =================================================
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 513 | * root cow-root root level < 0
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 514 | * | | |
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 515 | * n1 cow-n1 ...______
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 516 | * | | | \
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 517 | * n2 cow-n2 n1 cow-n1
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 518 | * | / | |
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 519 | * ...____/ n2 cow-n2
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 520 | * | | |
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 521 | * leaf level > 0 leaf cow-leaf
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 522 | */
- | ~~
- 523 | status_t
- | ~~~~~~~~
- 524 | BTree::Path::InternalCopy(Transaction& transaction, int level)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 525 | {
- | ~
- 526 | if (std::abs(level) >= fTree->RootLevel())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 527 | return B_OK;
- | ~~~~~~~~~~~~
- 528 |
- |
- 529 | TRACE("Path::InternalCopy() level %i\n", level);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 530 | int from, to;
- | ~~~~~~~~~~~~~
- 531 | if (level > 0) {
- | ~~~~~~~~~~~~~~~~
- 532 | from = level;
- | ~~~~~~~~~~~~~
- 533 | to = fTree->RootLevel();
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 534 | } else {
- | ~~~~~~~~
- 535 | from = 0;
- | ~~~~~~~~~
- 536 | to = std::abs(level);
- | ~~~~~~~~~~~~~~~~~~~~~
- 537 | }
- | ~
- 538 |
- |
- 539 | Node* node = NULL;
- | ~~~~~~~~~~~~~~~~~~
- 540 | status_t status;
- | ~~~~~~~~~~~~~~~~
- 541 | while (from <= to) {
- | ~~~~~~~~~~~~~~~~~~~~
- 542 | node = fNodes[from];
- | ~~~~~~~~~~~~~~~~~~~~
- 543 | status = CopyOnWrite(transaction, from, 0, node->ItemCount(), 0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 544 | from++;
- | ~~~~~~~
- 545 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 546 | return status;
- | ~~~~~~~~~~~~~~
- 547 | }
- | ~
- 548 |
- |
- 549 | return B_OK;
- | ~~~~~~~~~~~~
- 550 | }
- | ~
- 551 |
- |
- 552 |
- |
- 553 | // #pragma mark - BTree implementation
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 554 |
- |
- 555 |
- |
- 556 | BTree::BTree(Volume* volume)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 557 | :
- | ~
- 558 | fRootBlock(0),
- | ~~~~~~~~~~~~~~
- 559 | fRootLevel(0),
- | ~~~~~~~~~~~~~~
- 560 | fVolume(volume)
- | ~~~~~~~~~~~~~~~
- 561 | {
- | ~
- 562 | mutex_init(&fIteratorLock, "btrfs b+tree iterator");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 563 | }
- | ~
- 564 |
- |
- 565 |
- |
- 566 | BTree::BTree(Volume* volume, btrfs_stream* stream)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 567 | :
- | ~
- 568 | fRootBlock(0),
- | ~~~~~~~~~~~~~~
- 569 | fRootLevel(0),
- | ~~~~~~~~~~~~~~
- 570 | fVolume(volume)
- | ~~~~~~~~~~~~~~~
- 571 | {
- | ~
- 572 | mutex_init(&fIteratorLock, "btrfs b+tree iterator");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 573 | }
- | ~
- 574 |
- |
- 575 |
- |
- 576 | BTree::BTree(Volume* volume, fsblock_t rootBlock)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 577 | :
- | ~
- 578 | fRootBlock(rootBlock),
- | ~~~~~~~~~~~~~~~~~~~~~~
- 579 | fVolume(volume)
- | ~~~~~~~~~~~~~~~
- 580 | {
- | ~
- 581 | mutex_init(&fIteratorLock, "btrfs b+tree iterator");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 582 | }
- | ~
- 583 |
- |
- 584 |
- |
- 585 | BTree::~BTree()
- | ~~~~~~~~~~~~~~~
- 586 | {
- | ~
- 587 | // if there are any TreeIterators left, we need to stop them
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 588 | // (can happen when the tree's inode gets deleted while
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 589 | // traversing the tree - a TreeIterator doesn't lock the inode)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 590 | mutex_lock(&fIteratorLock);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 591 |
- |
- 592 | SinglyLinkedList<TreeIterator>::Iterator iterator
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 593 | = fIterators.GetIterator();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 594 | while (iterator.HasNext())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 595 | iterator.Next()->Stop();
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 596 | mutex_destroy(&fIteratorLock);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 597 | }
- | ~
- 598 |
- |
- 599 |
- |
- 600 | int32
- | ~~~~~
- 601 | btrfs_key::Compare(const btrfs_key& key) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 602 | {
- | ~
- 603 | if (ObjectID() > key.ObjectID())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 604 | return 1;
- | ~~~~~~~~~
- 605 | if (ObjectID() < key.ObjectID())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 606 | return -1;
- | ~~~~~~~~~~
- 607 | if (Type() > key.Type())
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 608 | return 1;
- | ~~~~~~~~~
- 609 | if (Type() < key.Type())
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 610 | return -1;
- | ~~~~~~~~~~
- 611 | if (Offset() > key.Offset())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 612 | return 1;
- | ~~~~~~~~~
- 613 | if (Offset() < key.Offset())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 614 | return -1;
- | ~~~~~~~~~~
- 615 | return 0;
- | ~~~~~~~~~
- 616 | }
- | ~
- 617 |
- |
- 618 |
- |
- 619 | /* Traverse from root to fill in the path along way its finding.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 620 | * Return current slot at leaf if successful.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 621 | */
- | ~~
- 622 | status_t
- | ~~~~~~~~
- 623 | BTree::Traverse(btree_traversing type, Path* path, const btrfs_key& key)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 624 | const
- | ~~~~~
- 625 | {
- | ~
- 626 | TRACE("BTree::Traverse() objectid %" B_PRId64 " type %d offset %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 627 | B_PRId64 " \n", key.ObjectID(), key.Type(), key.Offset());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 628 | fsblock_t physicalBlock = fRootBlock;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 629 | Node node(fVolume, physicalBlock);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 630 | int slot;
- | ~~~~~~~~~
- 631 | status_t status = B_OK;
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 632 |
- |
- 633 | while (node.Level() != 0) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 634 | TRACE("BTree::Traverse() level %d count %d\n", node.Level(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 635 | node.ItemCount());
- | ~~~~~~~~~~~~~~~~~~
- 636 | status = node.SearchSlot(key, &slot, BTREE_BACKWARD);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 637 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 638 | return status;
- | ~~~~~~~~~~~~~~
- 639 | if (path->SetNode(&node, slot) == NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 640 | return B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~
- 641 |
- |
- 642 | TRACE("BTree::Traverse() getting index %" B_PRIu32 "\n", slot);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 643 |
- |
- 644 | status = fVolume->FindBlock(node.Index(slot)->LogicalAddress(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 645 | physicalBlock);
- | ~~~~~~~~~~~~~~~
- 646 | if (status != B_OK) {
- | ~~~~~~~~~~~~~~~~~~~~~
- 647 | ERROR("BTree::Traverse() unmapped block %" B_PRId64 "\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 648 | node.Index(slot)->LogicalAddress());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 649 | return status;
- | ~~~~~~~~~~~~~~
- 650 | }
- | ~
- 651 | node.SetTo(physicalBlock);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 652 | }
- | ~
- 653 |
- |
- 654 | TRACE("BTree::Traverse() dump count %" B_PRId32 "\n", node.ItemCount());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 655 | status = node.SearchSlot(key, &slot, type);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 656 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 657 | return status;
- | ~~~~~~~~~~~~~~
- 658 | if (path->SetNode(&node, slot) == NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 659 | return B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~
- 660 |
- |
- 661 | TRACE("BTree::Traverse() found %" B_PRIu32 " %" B_PRIu32 "\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 662 | node.Item(slot)->Offset(), node.Item(slot)->Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 663 | return slot;
- | ~~~~~~~~~~~~
- 664 | }
- | ~
- 665 |
- |
- 666 |
- |
- 667 | /*! Searches the key in the tree, and stores the allocated found item in
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 668 | _value, if successful.
- | ~~~~~~~~~~~~~~~~~~~~~~
- 669 | Returns B_OK when the key could be found, B_ENTRY_NOT_FOUND if not.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 670 | It can also return other errors to indicate that something went wrong.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 671 | */
- | ~~
- 672 | status_t
- | ~~~~~~~~
- 673 | BTree::_Find(Path* path, btrfs_key& wanted, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 674 | uint32* _offset, btree_traversing type) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 675 | {
- | ~
- 676 | status_t status = Traverse(type, path, wanted);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 677 | if (status < B_OK)
- | ~~~~~~~~~~~~~~~~~~
- 678 | return status;
- | ~~~~~~~~~~~~~~
- 679 |
- |
- 680 | btrfs_key found;
- | ~~~~~~~~~~~~~~~~
- 681 | status = path->GetCurrentEntry(&found, _value, _size, _offset);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 682 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 683 | return status;
- | ~~~~~~~~~~~~~~
- 684 |
- |
- 685 | if (found.Type() != wanted.Type() && wanted.Type() != BTRFS_KEY_TYPE_ANY) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 686 | ERROR("Find() not found wanted: %" B_PRIu64 " %" B_PRIu8 " %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 687 | B_PRIu64 " found: %" B_PRIu64 " %" B_PRIu8 " %" B_PRIu64 "\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 688 | wanted.ObjectID(), wanted.Type(), wanted.Offset(), found.ObjectID(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 689 | found.Type(), found.Offset());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 690 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 691 | }
- | ~
- 692 |
- |
- 693 | wanted = found;
- | ~~~~~~~~~~~~~~~
- 694 | return B_OK;
- | ~~~~~~~~~~~~
- 695 | }
- | ~
- 696 |
- |
- 697 |
- |
- 698 | status_t
- | ~~~~~~~~
- 699 | BTree::FindNext(Path* path, btrfs_key& key, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 700 | uint32* _offset) const
- | ~~~~~~~~~~~~~~~~~~~~~~
- 701 | {
- | ~
- 702 | return _Find(path, key, _value, _size, _offset, BTREE_FORWARD);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 703 | }
- | ~
- 704 |
- |
- 705 |
- |
- 706 | status_t
- | ~~~~~~~~
- 707 | BTree::FindPrevious(Path* path, btrfs_key& key, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 708 | uint32* _offset) const
- | ~~~~~~~~~~~~~~~~~~~~~~
- 709 | {
- | ~
- 710 | return _Find(path, key, _value, _size, _offset, BTREE_BACKWARD);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 711 | }
- | ~
- 712 |
- |
- 713 |
- |
- 714 | status_t
- | ~~~~~~~~
- 715 | BTree::FindExact(Path* path, btrfs_key& key, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 716 | uint32* _offset) const
- | ~~~~~~~~~~~~~~~~~~~~~~
- 717 | {
- | ~
- 718 | return _Find(path, key, _value, _size, _offset, BTREE_EXACT);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 719 | }
- | ~
- 720 |
- |
- 721 |
- |
- 722 | /*
- | ~~
- 723 | * Insert "num" of consecutive empty entries start with slot of "startKey"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 724 | * if successful return the starting slot, otherwise return error code.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 725 | */
- | ~~
- 726 | status_t
- | ~~~~~~~~
- 727 | BTree::MakeEntries(Transaction& transaction, Path* path,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 728 | const btrfs_key& startKey, int num, int length)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 729 | {
- | ~
- 730 | TRACE("BTree::MakeEntries() num %i key (% " B_PRIu64 " %" B_PRIu8 " %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 731 | B_PRIu64 ")\n", num, startKey.ObjectID(), startKey.Type(),
- | ~~~~~~~~~~~~~~
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:730:2: note: in expansion of macro ‘TRACE’
- 730 | TRACE("BTree::MakeEntries() num %i key (% " B_PRIu64 " %" B_PRIu8 " %"
- | ^~~~~
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp: In member function ‘fssh_status_t BTree::RemoveEntries(Transaction&, BTree::Path*, const btrfs_key&, void**, int)’:
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:20:30: warning: ' ' flag used with ‘%u’ gnu_printf format [-Wformat=]
- 20 | # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ^~~~~~~~~~~~~~~~~~~~~~~~~
- 21 | #else
- | ~~~~~
- 22 | # define TRACE(x...) ;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 23 | #endif
- | ~~~~~~
- 24 | # define ERROR(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 25 |
- |
- 26 |
- |
- 27 | BTree::Node::Node(Volume* volume)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 28 | :
- | ~
- 29 | fNode(NULL),
- | ~~~~~~~~~~~~
- 30 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 31 | fBlockNumber(0),
- | ~~~~~~~~~~~~~~~~
- 32 | fWritable(false)
- | ~~~~~~~~~~~~~~~~
- 33 | {
- | ~
- 34 | }
- | ~
- 35 |
- |
- 36 |
- |
- 37 | BTree::Node::Node(Volume* volume, off_t block)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 38 | :
- | ~
- 39 | fNode(NULL),
- | ~~~~~~~~~~~~
- 40 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 41 | fBlockNumber(0),
- | ~~~~~~~~~~~~~~~~
- 42 | fWritable(false)
- | ~~~~~~~~~~~~~~~~
- 43 | {
- | ~
- 44 | SetTo(block);
- | ~~~~~~~~~~~~~
- 45 | }
- | ~
- 46 |
- |
- 47 |
- |
- 48 | BTree::Node::~Node()
- | ~~~~~~~~~~~~~~~~~~~~
- 49 | {
- | ~
- 50 | Unset();
- | ~~~~~~~~
- 51 | }
- | ~
- 52 |
- |
- 53 |
- |
- 54 | void
- | ~~~~
- 55 | BTree::Node::Keep()
- | ~~~~~~~~~~~~~~~~~~~
- 56 | {
- | ~
- 57 | fNode = NULL;
- | ~~~~~~~~~~~~~
- 58 | }
- | ~
- 59 |
- |
- 60 |
- |
- 61 | void
- | ~~~~
- 62 | BTree::Node::Unset()
- | ~~~~~~~~~~~~~~~~~~~~
- 63 | {
- | ~
- 64 | if (fNode != NULL) {
- | ~~~~~~~~~~~~~~~~~~~~
- 65 | block_cache_put(fVolume->BlockCache(), fBlockNumber);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 66 | fNode = NULL;
- | ~~~~~~~~~~~~~
- 67 | }
- | ~
- 68 | }
- | ~
- 69 |
- |
- 70 |
- |
- 71 | void
- | ~~~~
- 72 | BTree::Node::SetTo(off_t block)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 73 | {
- | ~
- 74 | Unset();
- | ~~~~~~~~
- 75 | fBlockNumber = block;
- | ~~~~~~~~~~~~~~~~~~~~~
- 76 | fNode = (btrfs_stream*)block_cache_get(fVolume->BlockCache(), block);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 77 | }
- | ~
- 78 |
- |
- 79 |
- |
- 80 | void
- | ~~~~
- 81 | BTree::Node::SetToWritable(off_t block, int32 transactionId, bool empty)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 82 | {
- | ~
- 83 | Unset();
- | ~~~~~~~~
- 84 | fBlockNumber = block;
- | ~~~~~~~~~~~~~~~~~~~~~
- 85 | fWritable = true;
- | ~~~~~~~~~~~~~~~~~
- 86 | if (empty) {
- | ~~~~~~~~~~~~
- 87 | fNode = (btrfs_stream*)block_cache_get_empty(fVolume->BlockCache(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 88 | block, transactionId);
- | ~~~~~~~~~~~~~~~~~~~~~~
- 89 | } else {
- | ~~~~~~~~
- 90 | fNode = (btrfs_stream*)block_cache_get_writable(fVolume->BlockCache(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 91 | block, transactionId);
- | ~~~~~~~~~~~~~~~~~~~~~~
- 92 | }
- | ~
- 93 | }
- | ~
- 94 |
- |
- 95 |
- |
- 96 | status_t
- | ~~~~~~~~
- 97 | BTree::Node::SearchSlot(const btrfs_key& key, int* slot, btree_traversing type)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 98 | const
- | ~~~~~
- 99 | {
- | ~
- 100 | // binary search for item slot in a node
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 101 | int entrySize = sizeof(btrfs_entry);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 102 | if (Level() != 0) {
- | ~~~~~~~~~~~~~~~~~~~
- 103 | // internal node
- | ~~~~~~~~~~~~~~~~
- 104 | entrySize = sizeof(btrfs_index);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 105 | }
- | ~
- 106 |
- |
- 107 | int high = ItemCount();
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 108 | int low = 0, mid = 0, comp = 0;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 109 | uint8* base = (uint8*)fNode + sizeof(btrfs_header);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 110 | const btrfs_key* other;
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 111 | while (low < high) {
- | ~~~~~~~~~~~~~~~~~~~~
- 112 | mid = (low + high) / 2;
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 113 | other = (const btrfs_key*)(base + mid * entrySize);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 114 | comp = key.Compare(*other);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 115 | if (comp < 0)
- | ~~~~~~~~~~~~~
- 116 | high = mid;
- | ~~~~~~~~~~~
- 117 | else if (comp > 0)
- | ~~~~~~~~~~~~~~~~~~
- 118 | low = mid + 1;
- | ~~~~~~~~~~~~~~
- 119 | else {
- | ~~~~~~
- 120 | *slot = mid;
- | ~~~~~~~~~~~~
- 121 | return B_OK; // if key is in node
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 122 | }
- | ~
- 123 | }
- | ~
- 124 |
- |
- 125 | // |--item1--|--item2--|--item3--|--etc--|
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 126 | // m-1 m m+1
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 127 | // k : comp < 0
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 128 | // k : comp > 0
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 129 | if (type == BTREE_BACKWARD && comp < 0)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 130 | mid--;
- | ~~~~~~
- 131 | else if (type == BTREE_FORWARD && comp > 0)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 132 | mid++;
- | ~~~~~~
- 133 |
- |
- 134 | if (type == BTREE_EXACT || mid < 0)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 135 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 136 |
- |
- 137 | *slot = mid;
- | ~~~~~~~~~~~~
- 138 | TRACE("SearchSlot() found slot %" B_PRId32 " comp %" B_PRId32 "\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 139 | *slot, comp);
- | ~~~~~~~~~~~~~
- 140 | return B_OK;
- | ~~~~~~~~~~~~
- 141 | }
- | ~
- 142 |
- |
- 143 |
- |
- 144 | /*
- | ~~
- 145 | * calculate used space except the header.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 146 | * type is only for leaf node
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 147 | * type 1: only item space
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 148 | * type 2: only item data space
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 149 | * type 3: both type 1 and 2
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 150 | */
- | ~~
- 151 | int
- | ~~~
- 152 | BTree::Node::_CalculateSpace(uint32 from, uint32 to, uint8 type) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 153 | {
- | ~
- 154 | if (to < from || to >= ItemCount())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 155 | return 0;
- | ~~~~~~~~~
- 156 |
- |
- 157 | if (Level() != 0)
- | ~~~~~~~~~~~~~~~~~
- 158 | return sizeof(btrfs_index) * (to - from + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 159 |
- |
- 160 | uint32 result = 0;
- | ~~~~~~~~~~~~~~~~~~
- 161 | if ((type & 1) == 1) {
- | ~~~~~~~~~~~~~~~~~~~~~~
- 162 | result += sizeof(btrfs_entry) * (to - from + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 163 | }
- | ~
- 164 | if ((type & 2) == 2) {
- | ~~~~~~~~~~~~~~~~~~~~~~
- 165 | result += Item(from)->Offset() + Item(from)->Size()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 166 | - Item(to)->Offset();
- | ~~~~~~~~~~~~~~~~~~~~~
- 167 | }
- | ~
- 168 |
- |
- 169 | return result;
- | ~~~~~~~~~~~~~~
- 170 | }
- | ~
- 171 |
- |
- 172 |
- |
- 173 | int
- | ~~~
- 174 | BTree::Node::SpaceUsed() const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 175 | {
- | ~
- 176 | if (Level() == 0)
- | ~~~~~~~~~~~~~~~~~
- 177 | return _CalculateSpace(0, ItemCount() - 1, 3);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 178 | return _CalculateSpace(0, ItemCount() - 1, 0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 179 | }
- | ~
- 180 |
- |
- 181 |
- |
- 182 | int
- | ~~~
- 183 | BTree::Node::SpaceLeft() const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 184 | {
- | ~
- 185 | return fVolume->BlockSize() - SpaceUsed() - sizeof(btrfs_header);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 186 | }
- | ~
- 187 |
- |
- 188 |
- |
- 189 | void
- | ~~~~
- 190 | BTree::Node::_Copy(const Node* origin, uint32 at, uint32 from, uint32 to,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 191 | int length) const
- | ~~~~~~~~~~~~~~~~~
- 192 | {
- | ~
- 193 | TRACE("Node::_Copy() at: %d from: %d to: %d length: %d\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 194 | at, from, to, length);
- | ~~~~~~~~~~~~~~~~~~~~~~
- 195 |
- |
- 196 | if (Level() == 0) {
- | ~~~~~~~~~~~~~~~~~~~
- 197 | memcpy(Item(at), origin->Item(from), origin->_CalculateSpace(from, to));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 198 | // Item offset of copied node must be changed to get the
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 199 | // item data offset correctly. length can be zero
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 200 | // but let it there doesn't harm anything.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 201 | for (uint32 i = at; i - at <= to - from; ++i)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 202 | Item(i)->SetOffset(Item(i)->Offset() - length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 203 |
- |
- 204 | memcpy(ItemData(at + to - from), origin->ItemData(to),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 205 | origin->_CalculateSpace(from, to, 2));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 206 | } else {
- | ~~~~~~~~
- 207 | memcpy(Index(at), origin->Index(from),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 208 | origin->_CalculateSpace(from, to));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 209 | }
- | ~
- 210 | }
- | ~
- 211 |
- |
- 212 |
- |
- 213 | status_t
- | ~~~~~~~~
- 214 | BTree::Node::_SpaceCheck(int length) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 215 | {
- | ~
- 216 | // this is a little bit weird here because we can't find
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 217 | // any suitable error code
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 218 | if (length < 0 && std::abs(length) >= SpaceUsed())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 219 | return B_DIRECTORY_NOT_EMPTY; // not enough data to delete
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 220 | if (length > 0 && length >= SpaceLeft())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 221 | return B_DEVICE_FULL; // no spare space
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 222 | return B_OK;
- | ~~~~~~~~~~~~
- 223 | }
- | ~
- 224 |
- |
- 225 |
- |
- 226 | /*
- | ~~
- 227 | * copy node header, items and items data
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 228 | * length is size to insert/remove
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 229 | * if node is a internal node, length isnt used
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 230 | * length = 0: Copy a whole
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 231 | * length < 0: removing
- | ~~~~~~~~~~~~~~~~~~~~~~
- 232 | * length > 0: inserting
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 233 | */
- | ~~
- 234 | status_t
- | ~~~~~~~~
- 235 | BTree::Node::Copy(const Node* origin, uint32 start, uint32 end, int length)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 236 | const
- | ~~~~~
- 237 | {
- | ~
- 238 | status_t status = origin->_SpaceCheck(length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 239 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 240 | return status;
- | ~~~~~~~~~~~~~~
- 241 |
- |
- 242 | memcpy(fNode, origin->fNode, sizeof(btrfs_header));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 243 | if (length == 0) {
- | ~~~~~~~~~~~~~~~~~~
- 244 | // like removing [0, start - 1] and keeping [start, end]
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 245 | length = -origin->_CalculateSpace(0, start - 1, 2);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 246 | _Copy(origin, 0, start, end, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 247 | } else if (length < 0) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 248 | // removing all items in [start, end]
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 249 | if (start > 0)
- | ~~~~~~~~~~~~~~
- 250 | _Copy(origin, 0, 0, start - 1, 0); // <-- [start,...
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 251 | if (end + 1 < origin->ItemCount()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 252 | // ..., end] -->
- | ~~~~~~~~~~~~~~~~
- 253 | // we only care data size
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 254 | length += origin->_CalculateSpace(start, end);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 255 | _Copy(origin, start, end + 1, origin->ItemCount() - 1, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 256 | }
- | ~
- 257 | } else {
- | ~~~~~~~~
- 258 | // inserting in [start, end] - make a hole for later
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 259 | if (start > 0)
- | ~~~~~~~~~~~~~~
- 260 | _Copy(origin, 0, 0, start - 1, 0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 261 | if (start < origin->ItemCount()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 262 | length -= origin->_CalculateSpace(start, end);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 263 | _Copy(origin, end + 1, start, origin->ItemCount() - 1, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 264 | }
- | ~
- 265 | }
- | ~
- 266 |
- |
- 267 | return B_OK;
- | ~~~~~~~~~~~~
- 268 | }
- | ~
- 269 |
- |
- 270 |
- |
- 271 | /* Like copy but here we use memmove on current node.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 272 | */
- | ~~
- 273 | status_t
- | ~~~~~~~~
- 274 | BTree::Node::MoveEntries(uint32 start, uint32 end, int length) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 275 | {
- | ~
- 276 | status_t status = _SpaceCheck(length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 277 | if (status != B_OK || length == 0/*B_OK*/)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 278 | return status;
- | ~~~~~~~~~~~~~~
- 279 |
- |
- 280 | int entrySize = sizeof(btrfs_entry);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 281 | if (Level() != 0)
- | ~~~~~~~~~~~~~~~~~
- 282 | entrySize = sizeof(btrfs_index);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 283 |
- |
- 284 | uint8* base = (uint8*)fNode + sizeof(btrfs_header);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 285 | end++;
- | ~~~~~~
- 286 | if (length < 0) {
- | ~~~~~~~~~~~~~~~~~
- 287 | // removing [start, end]
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 288 | TRACE("Node::MoveEntries() removing ... start %" B_PRIu32 " end %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 289 | B_PRIu32 " length %i\n", start, end, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 290 | length += _CalculateSpace(start, end - 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 291 | } else {
- | ~~~~~~~~
- 292 | // length > 0
- | ~~~~~~~~~~~~~
- 293 | // inserting into [start, end] - make room for later
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 294 | TRACE("Node::MoveEntries() inserting ... start %" B_PRIu32 " end %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 295 | B_PRIu32 " length %i\n", start, end, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 296 | length -= _CalculateSpace(start, end - 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 297 | std::swap(start, end);
- | ~~~~~~~~~~~~~~~~~~~~~~
- 298 | }
- | ~
- 299 |
- |
- 300 | if (end >= ItemCount())
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 301 | return B_OK;
- | ~~~~~~~~~~~~
- 302 |
- |
- 303 | int dataSize = _CalculateSpace(end, ItemCount() - 1, 2);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 304 | // moving items/block pointers
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 305 | memmove(base + start * entrySize, base + end * entrySize,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 306 | _CalculateSpace(end, ItemCount() - 1));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 307 | if (Level() == 0) {
- | ~~~~~~~~~~~~~~~~~~~
- 308 | // moving item data
- | ~~~~~~~~~~~~~~~~~~~
- 309 | int num = start - end;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 310 | for (uint32 i = start; i < ItemCount() + num; ++i)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 311 | Item(i)->SetOffset(Item(i)->Offset() - length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 312 |
- |
- 313 | memmove(ItemData(ItemCount() - 1) - length, ItemData(ItemCount() - 1),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 314 | dataSize);
- | ~~~~~~~~~~
- 315 | }
- | ~
- 316 |
- |
- 317 | return B_OK;
- | ~~~~~~~~~~~~
- 318 | }
- | ~
- 319 |
- |
- 320 |
- |
- 321 | // #pragma mark - BTree::Path implementation
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 322 |
- |
- 323 |
- |
- 324 | BTree::Path::Path(BTree* tree)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 325 | :
- | ~
- 326 | fTree(tree)
- | ~~~~~~~~~~~
- 327 | {
- | ~
- 328 | for (int i = 0; i < BTRFS_MAX_TREE_DEPTH; ++i) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 329 | fNodes[i] = NULL;
- | ~~~~~~~~~~~~~~~~~
- 330 | fSlots[i] = 0;
- | ~~~~~~~~~~~~~~
- 331 | }
- | ~
- 332 | }
- | ~
- 333 |
- |
- 334 |
- |
- 335 | BTree::Path::~Path()
- | ~~~~~~~~~~~~~~~~~~~~
- 336 | {
- | ~
- 337 | for (int i = 0; i < BTRFS_MAX_TREE_DEPTH; ++i) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 338 | delete fNodes[i];
- | ~~~~~~~~~~~~~~~~~
- 339 | fNodes[i] = NULL;
- | ~~~~~~~~~~~~~~~~~
- 340 | fSlots[i] = 0;
- | ~~~~~~~~~~~~~~
- 341 | }
- | ~
- 342 | }
- | ~
- 343 |
- |
- 344 |
- |
- 345 | BTree::Node*
- | ~~~~~~~~~~~~
- 346 | BTree::Path::GetNode(int level, int* _slot) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 347 | {
- | ~
- 348 | if (_slot != NULL)
- | ~~~~~~~~~~~~~~~~~~
- 349 | *_slot = fSlots[level];
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 350 | return fNodes[level];
- | ~~~~~~~~~~~~~~~~~~~~~
- 351 | }
- | ~
- 352 |
- |
- 353 |
- |
- 354 | BTree::Node*
- | ~~~~~~~~~~~~
- 355 | BTree::Path::SetNode(off_t block, int slot)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 356 | {
- | ~
- 357 | Node node(fTree->SystemVolume(), block);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 358 | return SetNode(&node, slot);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 359 | }
- | ~
- 360 |
- |
- 361 |
- |
- 362 | BTree::Node*
- | ~~~~~~~~~~~~
- 363 | BTree::Path::SetNode(const Node* node, int slot)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 364 | {
- | ~
- 365 | uint8 level = node->Level();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 366 | if (fNodes[level] == NULL) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 367 | fNodes[level] = new Node(fTree->SystemVolume(), node->BlockNum());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 368 | if (fNodes[level] == NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 369 | return NULL;
- | ~~~~~~~~~~~~
- 370 | } else
- | ~~~~~~
- 371 | fNodes[level]->SetTo(node->BlockNum());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 372 |
- |
- 373 | if (slot == -1)
- | ~~~~~~~~~~~~~~~
- 374 | fSlots[level] = fNodes[level]->ItemCount() - 1;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 375 | else
- | ~~~~
- 376 | fSlots[level] = slot;
- | ~~~~~~~~~~~~~~~~~~~~~
- 377 | return fNodes[level];
- | ~~~~~~~~~~~~~~~~~~~~~
- 378 | }
- | ~
- 379 |
- |
- 380 |
- |
- 381 | int
- | ~~~
- 382 | BTree::Path::Move(int level, int step)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 383 | {
- | ~
- 384 | fSlots[level] += step;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 385 | if (fSlots[level] < 0)
- | ~~~~~~~~~~~~~~~~~~~~~~
- 386 | return -1;
- | ~~~~~~~~~~
- 387 | if (fSlots[level] >= fNodes[level]->ItemCount())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 388 | return 1;
- | ~~~~~~~~~
- 389 | return 0;
- | ~~~~~~~~~
- 390 | }
- | ~
- 391 |
- |
- 392 |
- |
- 393 | status_t
- | ~~~~~~~~
- 394 | BTree::Path::GetEntry(int slot, btrfs_key* _key, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 395 | uint32* _offset)
- | ~~~~~~~~~~~~~~~~
- 396 | {
- | ~
- 397 | BTree::Node* leaf = fNodes[0];
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 398 | if (slot < 0 || slot >= leaf->ItemCount())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 399 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 400 |
- |
- 401 | if (_key != NULL)
- | ~~~~~~~~~~~~~~~~~
- 402 | *_key = leaf->Item(slot)->key;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 403 |
- |
- 404 | uint32 itemSize = leaf->Item(slot)->Size();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 405 | if (_value != NULL) {
- | ~~~~~~~~~~~~~~~~~~~~~
- 406 | *_value = malloc(itemSize);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 407 | if (*_value == NULL)
- | ~~~~~~~~~~~~~~~~~~~~
- 408 | return B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~
- 409 |
- |
- 410 | memcpy(*_value, leaf->ItemData(slot), itemSize);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 411 | }
- | ~
- 412 |
- |
- 413 | if (_size != NULL)
- | ~~~~~~~~~~~~~~~~~~
- 414 | *_size = itemSize;
- | ~~~~~~~~~~~~~~~~~~
- 415 |
- |
- 416 | if (_offset != NULL)
- | ~~~~~~~~~~~~~~~~~~~~
- 417 | *_offset = leaf->Item(slot)->Offset();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 418 |
- |
- 419 | return B_OK;
- | ~~~~~~~~~~~~
- 420 | }
- | ~
- 421 |
- |
- 422 |
- |
- 423 | status_t
- | ~~~~~~~~
- 424 | BTree::Path::SetEntry(int slot, const btrfs_entry& entry, void* value)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 425 | {
- | ~
- 426 | if (slot < 0)
- | ~~~~~~~~~~~~~
- 427 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 428 |
- |
- 429 | memcpy(fNodes[0]->Item(slot), &entry, sizeof(btrfs_entry));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 430 | memcpy(fNodes[0]->ItemData(slot), value, entry.Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 431 | return B_OK;
- | ~~~~~~~~~~~~
- 432 | }
- | ~
- 433 |
- |
- 434 |
- |
- 435 | /*
- | ~~
- 436 | * Allocate and copy block and do all the changes that it can.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 437 | * for now, we only copy-on-write tree block,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 438 | * file data is "nocow" by default.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 439 | *
- | ~
- 440 | * o parent o
- | ~~~~~~~~~~~~~
- 441 | * | ===> \
- | ~~~~~~~~~~~~~~
- 442 | * o x o
- | ~~~~~~~~~~~~~~~
- 443 | */
- | ~~
- 444 | status_t
- | ~~~~~~~~
- 445 | BTree::Path::CopyOnWrite(Transaction& transaction, int level, uint32 start,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 446 | int num, int length)
- | ~~~~~~~~~~~~~~~~~~~~
- 447 | {
- | ~
- 448 | Node* node = fNodes[level];
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 449 | if (node == NULL)
- | ~~~~~~~~~~~~~~~~~
- 450 | return B_BAD_VALUE;
- | ~~~~~~~~~~~~~~~~~~~
- 451 |
- |
- 452 | status_t status;
- | ~~~~~~~~~~~~~~~~
- 453 | if (transaction.HasBlock(node->BlockNum())) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 454 | // cow-ed block can not be cow-ed again
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 455 | status = node->MoveEntries(start, start + num - 1, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 456 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 457 | return status;
- | ~~~~~~~~~~~~~~
- 458 |
- |
- 459 | node->SetGeneration(transaction.SystemID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 460 | if (length < 0)
- | ~~~~~~~~~~~~~~~
- 461 | node->SetItemCount(node->ItemCount() - num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 462 | else if (length > 0)
- | ~~~~~~~~~~~~~~~~~~~~
- 463 | node->SetItemCount(node->ItemCount() + num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 464 |
- |
- 465 | return B_OK;
- | ~~~~~~~~~~~~
- 466 | }
- | ~
- 467 |
- |
- 468 | uint64 address;
- | ~~~~~~~~~~~~~~~
- 469 | fsblock_t block;
- | ~~~~~~~~~~~~~~~~
- 470 | status = fTree->SystemVolume()->GetNewBlock(address, block);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 471 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 472 | return status;
- | ~~~~~~~~~~~~~~
- 473 |
- |
- 474 | fNodes[level] = new(std::nothrow) BTree::Node(fTree->SystemVolume());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 475 | if (fNodes[level] == NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 476 | return B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~
- 477 |
- |
- 478 | fNodes[level]->SetToWritable(block, transaction.ID(), true);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 479 |
- |
- 480 | status = fNodes[level]->Copy(node, start, start + num - 1, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 481 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 482 | return status;
- | ~~~~~~~~~~~~~~
- 483 |
- |
- 484 | fNodes[level]->SetGeneration(transaction.SystemID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 485 | fNodes[level]->SetLogicalAddress(address);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 486 | if (length < 0)
- | ~~~~~~~~~~~~~~~
- 487 | fNodes[level]->SetItemCount(node->ItemCount() - num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 488 | else if (length > 0)
- | ~~~~~~~~~~~~~~~~~~~~
- 489 | fNodes[level]->SetItemCount(node->ItemCount() + num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 490 | else
- | ~~~~
- 491 | fNodes[level]->SetItemCount(num);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 492 |
- |
- 493 | // change pointer of this node in parent
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 494 | int parentSlot;
- | ~~~~~~~~~~~~~~~
- 495 | Node* parentNode = GetNode(level + 1, &parentSlot);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 496 | if (parentNode != NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 497 | parentNode->Index(parentSlot)->SetLogicalAddress(address);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 498 |
- |
- 499 | if (level == fTree->RootLevel())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 500 | fTree->SetRoot(fNodes[level]);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 501 |
- |
- 502 | delete node;
- | ~~~~~~~~~~~~
- 503 | return B_OK;
- | ~~~~~~~~~~~~
- 504 | }
- | ~
- 505 |
- |
- 506 |
- |
- 507 | /* Copy-On-Write all internal nodes start from a specific level.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 508 | * level > 0: to root
- | ~~~~~~~~~~~~~~~~~~~~
- 509 | * level <= 0: to leaf
- | ~~~~~~~~~~~~~~~~~~~~~
- 510 | *
- | ~
- 511 | * path cow-path path cow-path
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 512 | * =================================================
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 513 | * root cow-root root level < 0
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 514 | * | | |
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 515 | * n1 cow-n1 ...______
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 516 | * | | | \
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 517 | * n2 cow-n2 n1 cow-n1
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 518 | * | / | |
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 519 | * ...____/ n2 cow-n2
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 520 | * | | |
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 521 | * leaf level > 0 leaf cow-leaf
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 522 | */
- | ~~
- 523 | status_t
- | ~~~~~~~~
- 524 | BTree::Path::InternalCopy(Transaction& transaction, int level)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 525 | {
- | ~
- 526 | if (std::abs(level) >= fTree->RootLevel())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 527 | return B_OK;
- | ~~~~~~~~~~~~
- 528 |
- |
- 529 | TRACE("Path::InternalCopy() level %i\n", level);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 530 | int from, to;
- | ~~~~~~~~~~~~~
- 531 | if (level > 0) {
- | ~~~~~~~~~~~~~~~~
- 532 | from = level;
- | ~~~~~~~~~~~~~
- 533 | to = fTree->RootLevel();
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 534 | } else {
- | ~~~~~~~~
- 535 | from = 0;
- | ~~~~~~~~~
- 536 | to = std::abs(level);
- | ~~~~~~~~~~~~~~~~~~~~~
- 537 | }
- | ~
- 538 |
- |
- 539 | Node* node = NULL;
- | ~~~~~~~~~~~~~~~~~~
- 540 | status_t status;
- | ~~~~~~~~~~~~~~~~
- 541 | while (from <= to) {
- | ~~~~~~~~~~~~~~~~~~~~
- 542 | node = fNodes[from];
- | ~~~~~~~~~~~~~~~~~~~~
- 543 | status = CopyOnWrite(transaction, from, 0, node->ItemCount(), 0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 544 | from++;
- | ~~~~~~~
- 545 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 546 | return status;
- | ~~~~~~~~~~~~~~
- 547 | }
- | ~
- 548 |
- |
- 549 | return B_OK;
- | ~~~~~~~~~~~~
- 550 | }
- | ~
- 551 |
- |
- 552 |
- |
- 553 | // #pragma mark - BTree implementation
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 554 |
- |
- 555 |
- |
- 556 | BTree::BTree(Volume* volume)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 557 | :
- | ~
- 558 | fRootBlock(0),
- | ~~~~~~~~~~~~~~
- 559 | fRootLevel(0),
- | ~~~~~~~~~~~~~~
- 560 | fVolume(volume)
- | ~~~~~~~~~~~~~~~
- 561 | {
- | ~
- 562 | mutex_init(&fIteratorLock, "btrfs b+tree iterator");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 563 | }
- | ~
- 564 |
- |
- 565 |
- |
- 566 | BTree::BTree(Volume* volume, btrfs_stream* stream)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 567 | :
- | ~
- 568 | fRootBlock(0),
- | ~~~~~~~~~~~~~~
- 569 | fRootLevel(0),
- | ~~~~~~~~~~~~~~
- 570 | fVolume(volume)
- | ~~~~~~~~~~~~~~~
- 571 | {
- | ~
- 572 | mutex_init(&fIteratorLock, "btrfs b+tree iterator");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 573 | }
- | ~
- 574 |
- |
- 575 |
- |
- 576 | BTree::BTree(Volume* volume, fsblock_t rootBlock)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 577 | :
- | ~
- 578 | fRootBlock(rootBlock),
- | ~~~~~~~~~~~~~~~~~~~~~~
- 579 | fVolume(volume)
- | ~~~~~~~~~~~~~~~
- 580 | {
- | ~
- 581 | mutex_init(&fIteratorLock, "btrfs b+tree iterator");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 582 | }
- | ~
- 583 |
- |
- 584 |
- |
- 585 | BTree::~BTree()
- | ~~~~~~~~~~~~~~~
- 586 | {
- | ~
- 587 | // if there are any TreeIterators left, we need to stop them
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 588 | // (can happen when the tree's inode gets deleted while
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 589 | // traversing the tree - a TreeIterator doesn't lock the inode)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 590 | mutex_lock(&fIteratorLock);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 591 |
- |
- 592 | SinglyLinkedList<TreeIterator>::Iterator iterator
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 593 | = fIterators.GetIterator();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 594 | while (iterator.HasNext())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 595 | iterator.Next()->Stop();
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 596 | mutex_destroy(&fIteratorLock);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 597 | }
- | ~
- 598 |
- |
- 599 |
- |
- 600 | int32
- | ~~~~~
- 601 | btrfs_key::Compare(const btrfs_key& key) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 602 | {
- | ~
- 603 | if (ObjectID() > key.ObjectID())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 604 | return 1;
- | ~~~~~~~~~
- 605 | if (ObjectID() < key.ObjectID())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 606 | return -1;
- | ~~~~~~~~~~
- 607 | if (Type() > key.Type())
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 608 | return 1;
- | ~~~~~~~~~
- 609 | if (Type() < key.Type())
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 610 | return -1;
- | ~~~~~~~~~~
- 611 | if (Offset() > key.Offset())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 612 | return 1;
- | ~~~~~~~~~
- 613 | if (Offset() < key.Offset())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 614 | return -1;
- | ~~~~~~~~~~
- 615 | return 0;
- | ~~~~~~~~~
- 616 | }
- | ~
- 617 |
- |
- 618 |
- |
- 619 | /* Traverse from root to fill in the path along way its finding.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 620 | * Return current slot at leaf if successful.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 621 | */
- | ~~
- 622 | status_t
- | ~~~~~~~~
- 623 | BTree::Traverse(btree_traversing type, Path* path, const btrfs_key& key)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 624 | const
- | ~~~~~
- 625 | {
- | ~
- 626 | TRACE("BTree::Traverse() objectid %" B_PRId64 " type %d offset %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 627 | B_PRId64 " \n", key.ObjectID(), key.Type(), key.Offset());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 628 | fsblock_t physicalBlock = fRootBlock;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 629 | Node node(fVolume, physicalBlock);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 630 | int slot;
- | ~~~~~~~~~
- 631 | status_t status = B_OK;
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 632 |
- |
- 633 | while (node.Level() != 0) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 634 | TRACE("BTree::Traverse() level %d count %d\n", node.Level(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 635 | node.ItemCount());
- | ~~~~~~~~~~~~~~~~~~
- 636 | status = node.SearchSlot(key, &slot, BTREE_BACKWARD);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 637 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 638 | return status;
- | ~~~~~~~~~~~~~~
- 639 | if (path->SetNode(&node, slot) == NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 640 | return B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~
- 641 |
- |
- 642 | TRACE("BTree::Traverse() getting index %" B_PRIu32 "\n", slot);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 643 |
- |
- 644 | status = fVolume->FindBlock(node.Index(slot)->LogicalAddress(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 645 | physicalBlock);
- | ~~~~~~~~~~~~~~~
- 646 | if (status != B_OK) {
- | ~~~~~~~~~~~~~~~~~~~~~
- 647 | ERROR("BTree::Traverse() unmapped block %" B_PRId64 "\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 648 | node.Index(slot)->LogicalAddress());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 649 | return status;
- | ~~~~~~~~~~~~~~
- 650 | }
- | ~
- 651 | node.SetTo(physicalBlock);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 652 | }
- | ~
- 653 |
- |
- 654 | TRACE("BTree::Traverse() dump count %" B_PRId32 "\n", node.ItemCount());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 655 | status = node.SearchSlot(key, &slot, type);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 656 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 657 | return status;
- | ~~~~~~~~~~~~~~
- 658 | if (path->SetNode(&node, slot) == NULL)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 659 | return B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~
- 660 |
- |
- 661 | TRACE("BTree::Traverse() found %" B_PRIu32 " %" B_PRIu32 "\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 662 | node.Item(slot)->Offset(), node.Item(slot)->Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 663 | return slot;
- | ~~~~~~~~~~~~
- 664 | }
- | ~
- 665 |
- |
- 666 |
- |
- 667 | /*! Searches the key in the tree, and stores the allocated found item in
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 668 | _value, if successful.
- | ~~~~~~~~~~~~~~~~~~~~~~
- 669 | Returns B_OK when the key could be found, B_ENTRY_NOT_FOUND if not.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 670 | It can also return other errors to indicate that something went wrong.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 671 | */
- | ~~
- 672 | status_t
- | ~~~~~~~~
- 673 | BTree::_Find(Path* path, btrfs_key& wanted, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 674 | uint32* _offset, btree_traversing type) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 675 | {
- | ~
- 676 | status_t status = Traverse(type, path, wanted);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 677 | if (status < B_OK)
- | ~~~~~~~~~~~~~~~~~~
- 678 | return status;
- | ~~~~~~~~~~~~~~
- 679 |
- |
- 680 | btrfs_key found;
- | ~~~~~~~~~~~~~~~~
- 681 | status = path->GetCurrentEntry(&found, _value, _size, _offset);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 682 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 683 | return status;
- | ~~~~~~~~~~~~~~
- 684 |
- |
- 685 | if (found.Type() != wanted.Type() && wanted.Type() != BTRFS_KEY_TYPE_ANY) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 686 | ERROR("Find() not found wanted: %" B_PRIu64 " %" B_PRIu8 " %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 687 | B_PRIu64 " found: %" B_PRIu64 " %" B_PRIu8 " %" B_PRIu64 "\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 688 | wanted.ObjectID(), wanted.Type(), wanted.Offset(), found.ObjectID(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 689 | found.Type(), found.Offset());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 690 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 691 | }
- | ~
- 692 |
- |
- 693 | wanted = found;
- | ~~~~~~~~~~~~~~~
- 694 | return B_OK;
- | ~~~~~~~~~~~~
- 695 | }
- | ~
- 696 |
- |
- 697 |
- |
- 698 | status_t
- | ~~~~~~~~
- 699 | BTree::FindNext(Path* path, btrfs_key& key, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 700 | uint32* _offset) const
- | ~~~~~~~~~~~~~~~~~~~~~~
- 701 | {
- | ~
- 702 | return _Find(path, key, _value, _size, _offset, BTREE_FORWARD);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 703 | }
- | ~
- 704 |
- |
- 705 |
- |
- 706 | status_t
- | ~~~~~~~~
- 707 | BTree::FindPrevious(Path* path, btrfs_key& key, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 708 | uint32* _offset) const
- | ~~~~~~~~~~~~~~~~~~~~~~
- 709 | {
- | ~
- 710 | return _Find(path, key, _value, _size, _offset, BTREE_BACKWARD);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 711 | }
- | ~
- 712 |
- |
- 713 |
- |
- 714 | status_t
- | ~~~~~~~~
- 715 | BTree::FindExact(Path* path, btrfs_key& key, void** _value, uint32* _size,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 716 | uint32* _offset) const
- | ~~~~~~~~~~~~~~~~~~~~~~
- 717 | {
- | ~
- 718 | return _Find(path, key, _value, _size, _offset, BTREE_EXACT);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 719 | }
- | ~
- 720 |
- |
- 721 |
- |
- 722 | /*
- | ~~
- 723 | * Insert "num" of consecutive empty entries start with slot of "startKey"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 724 | * if successful return the starting slot, otherwise return error code.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 725 | */
- | ~~
- 726 | status_t
- | ~~~~~~~~
- 727 | BTree::MakeEntries(Transaction& transaction, Path* path,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 728 | const btrfs_key& startKey, int num, int length)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 729 | {
- | ~
- 730 | TRACE("BTree::MakeEntries() num %i key (% " B_PRIu64 " %" B_PRIu8 " %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 731 | B_PRIu64 ")\n", num, startKey.ObjectID(), startKey.Type(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 732 | startKey.Offset());
- | ~~~~~~~~~~~~~~~~~~~
- 733 |
- |
- 734 | status_t status = Traverse(BTREE_FORWARD, path, startKey);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 735 | if (status < B_OK)
- | ~~~~~~~~~~~~~~~~~~
- 736 | return status;
- | ~~~~~~~~~~~~~~
- 737 |
- |
- 738 | int slot = status;
- | ~~~~~~~~~~~~~~~~~~
- 739 | status = path->InternalCopy(transaction, 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 740 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 741 | return status;
- | ~~~~~~~~~~~~~~
- 742 |
- |
- 743 | status = path->CopyOnWrite(transaction, 0, slot, num, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 744 | if (status == B_DEVICE_FULL) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 745 | // TODO: push data or split node
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 746 | return status;
- | ~~~~~~~~~~~~~~
- 747 | }
- | ~
- 748 |
- |
- 749 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 750 | return status;
- | ~~~~~~~~~~~~~~
- 751 | return slot;
- | ~~~~~~~~~~~~
- 752 | }
- | ~
- 753 |
- |
- 754 |
- |
- 755 | /* MakeEntries and then fill in them.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 756 | */
- | ~~
- 757 | status_t
- | ~~~~~~~~
- 758 | BTree::InsertEntries(Transaction& transaction, Path* path,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 759 | btrfs_entry* entries, void** data, int num)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 760 | {
- | ~
- 761 | int totalLength = sizeof(btrfs_entry) * num;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 762 | for (int i = 0; i < num; i++)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 763 | totalLength += entries[i].Size();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 764 |
- |
- 765 | status_t slot = MakeEntries(transaction, path, entries[0].key, num,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 766 | totalLength);
- | ~~~~~~~~~~~~~
- 767 | if (slot < B_OK)
- | ~~~~~~~~~~~~~~~~
- 768 | return slot;
- | ~~~~~~~~~~~~
- 769 |
- |
- 770 | uint32 upperLimit;
- | ~~~~~~~~~~~~~~~~~~
- 771 | if (slot > 0) {
- | ~~~~~~~~~~~~~~~
- 772 | path->GetEntry(slot - 1, NULL, NULL, NULL, &upperLimit);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 773 | } else
- | ~~~~~~
- 774 | upperLimit = fVolume->BlockSize() - sizeof(btrfs_header);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 775 |
- |
- 776 | TRACE("BTree::InsertEntries() num: %i upper limit %" B_PRIu32 "\n", num,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 777 | upperLimit);
- | ~~~~~~~~~~~~
- 778 | for (int i = 0; i < num; i++) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 779 | upperLimit -= entries[i].Size();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 780 | entries[i].SetOffset(upperLimit);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 781 | path->SetEntry(slot + i, entries[i], data[i]);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 782 | }
- | ~
- 783 |
- |
- 784 | return B_OK;
- | ~~~~~~~~~~~~
- 785 | }
- | ~
- 786 |
- |
- 787 |
- |
- 788 | /* Like MakeEntries, but here we remove entries instead.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 789 | * Removed data stored in _data
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 790 | * May merge those functions into one.
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 791 | */
- | ~~
- 792 | status_t
- | ~~~~~~~~
- 793 | BTree::RemoveEntries(Transaction& transaction, Path* path,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 794 | const btrfs_key& startKey, void** _data, int num)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 795 | {
- | ~
- 796 | TRACE("BTree::RemoveEntries() num %i key (% " B_PRIu64 " %" B_PRIu8 " %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 797 | B_PRIu64 ")\n", num, startKey.ObjectID(), startKey.Type(),
- | ~~~~~~~~~~~~~~
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:796:2: note: in expansion of macro ‘TRACE’
- 796 | TRACE("BTree::RemoveEntries() num %i key (% " B_PRIu64 " %" B_PRIu8 " %"
- | ^~~~~
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp: In member function ‘fssh_status_t BTree::NextLeaf(BTree::Path*) const’:
- ../src/add-ons/kernel/file_systems/btrfs/BTree.cpp:874:28: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
- 874 | if (node == NULL || slot < node->ItemCount() - 1)
- | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/BTree.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/BTree.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/BTree.o ...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Chunk.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/Chunk.h:13,
- from ../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp:11:
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:100:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 100 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:103:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 103 | uuid_t chunk_tree_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:169:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 169 | uuid_t device_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:215:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 215 | uuid_t uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:216:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 216 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:222:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 222 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/Chunk.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Chunk.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Chunk.o ...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/DirectoryIterator.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/BTree.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:8:
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:100:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 100 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:103:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 103 | uuid_t chunk_tree_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:169:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 169 | uuid_t device_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:215:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 215 | uuid_t uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:216:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 216 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:222:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 222 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp: In member function ‘fssh_status_t DirectoryIterator::GetNext(char*, fssh_size_t*, fssh_ino_t*)’:
- ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:14:30: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘uint32_t’ {aka ‘unsigned int’} [-Wformat=]
- 14 | # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ^~~~~~~~~~~~~~~~~~~~~~~~~
- 15 | #else
- | ~~~~~
- 16 | # define TRACE(x...) ;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 17 | #endif
- | ~~~~~~
- 18 | # define ERROR(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 19 |
- |
- 20 |
- |
- 21 | DirectoryIterator::DirectoryIterator(Inode* inode)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 22 | :
- | ~
- 23 | fOffset(0),
- | ~~~~~~~~~~~
- 24 | fInode(inode),
- | ~~~~~~~~~~~~~~
- 25 | fIterator(NULL)
- | ~~~~~~~~~~~~~~~
- 26 | {
- | ~
- 27 | btrfs_key key;
- | ~~~~~~~~~~~~~~
- 28 | key.SetType(BTRFS_KEY_TYPE_DIR_INDEX);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 29 | key.SetObjectID(inode->ID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 30 | key.SetOffset(BTREE_BEGIN);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 31 | fIterator = new(std::nothrow) TreeIterator(inode->GetVolume()->FSTree(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 32 | key);
- | ~~~~~
- 33 | }
- | ~
- 34 |
- |
- 35 |
- |
- 36 | DirectoryIterator::~DirectoryIterator()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 37 | {
- | ~
- 38 | delete fIterator;
- | ~~~~~~~~~~~~~~~~~
- 39 | fIterator = NULL;
- | ~~~~~~~~~~~~~~~~~
- 40 | }
- | ~
- 41 |
- |
- 42 |
- |
- 43 | status_t
- | ~~~~~~~~
- 44 | DirectoryIterator::InitCheck()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 45 | {
- | ~
- 46 | return fIterator != NULL ? B_OK : B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 47 | }
- | ~
- 48 |
- |
- 49 |
- |
- 50 | status_t
- | ~~~~~~~~
- 51 | DirectoryIterator::GetNext(char* name, size_t* _nameLength, ino_t* _id)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 52 | {
- | ~
- 53 | if (fOffset == 0) {
- | ~~~~~~~~~~~~~~~~~~~
- 54 | if (*_nameLength < 3)
- | ~~~~~~~~~~~~~~~~~~~~~
- 55 | return B_BUFFER_OVERFLOW;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 56 | *_nameLength = 2;
- | ~~~~~~~~~~~~~~~~~
- 57 | strlcpy(name, "..", *_nameLength + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 58 | *_id = fInode->ID();
- | ~~~~~~~~~~~~~~~~~~~~
- 59 | fOffset = 1;
- | ~~~~~~~~~~~~
- 60 | return B_OK;
- | ~~~~~~~~~~~~
- 61 | } else if (fOffset == 1) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 62 | if (*_nameLength < 2)
- | ~~~~~~~~~~~~~~~~~~~~~
- 63 | return B_BUFFER_OVERFLOW;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 64 | *_nameLength = 1;
- | ~~~~~~~~~~~~~~~~~
- 65 | strlcpy(name, ".", *_nameLength + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 66 | fOffset = 2;
- | ~~~~~~~~~~~~
- 67 | if (fInode->ID() == BTRFS_FIRST_SUBVOLUME) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 68 | *_id = fInode->ID();
- | ~~~~~~~~~~~~~~~~~~~~
- 69 | return B_OK;
- | ~~~~~~~~~~~~
- 70 | }
- | ~
- 71 | return fInode->FindParent(_id);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 72 | }
- | ~
- 73 |
- |
- 74 | btrfs_dir_entry* entries;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 75 | uint32 entries_length;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 76 | status_t status = fIterator->GetNextEntry((void**)&entries, &entries_length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 77 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 78 | return status;
- | ~~~~~~~~~~~~~~
- 79 |
- |
- 80 | btrfs_dir_entry* entry = entries;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 81 | uint16 current = 0;
- | ~~~~~~~~~~~~~~~~~~~
- 82 | while (current < entries_length) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 83 | current += entry->Length();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 84 | break;
- | ~~~~~~
- 85 | // TODO there could be several entries with the same name hash
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 86 | entry = (btrfs_dir_entry*)((uint8*)entry + entry->Length());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 87 | }
- | ~
- 88 |
- |
- 89 | size_t length = entry->NameLength();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 90 |
- |
- 91 | TRACE("DirectoryIterator::GetNext() entries_length %ld name_length %d\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 92 | entries_length, entry->NameLength());
- | ~~~~~~~~~~~~~~
- | |
- | uint32_t {aka unsigned int}
- ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:91:2: note: in expansion of macro ‘TRACE’
- 91 | TRACE("DirectoryIterator::GetNext() entries_length %ld name_length %d\n",
- | ^~~~~
- ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:91:55: note: format string is defined here
- 91 | TRACE("DirectoryIterator::GetNext() entries_length %ld name_length %d\n",
- | ~~^
- | |
- | long int
- | %d
- ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp: In member function ‘fssh_status_t DirectoryIterator::Lookup(const char*, fssh_size_t, fssh_ino_t*)’:
- ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:14:30: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘uint32_t’ {aka ‘unsigned int’} [-Wformat=]
- 14 | # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ^~~~~~~~~~~~~~~~~~~~~~~~~
- 15 | #else
- | ~~~~~
- 16 | # define TRACE(x...) ;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 17 | #endif
- | ~~~~~~
- 18 | # define ERROR(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 19 |
- |
- 20 |
- |
- 21 | DirectoryIterator::DirectoryIterator(Inode* inode)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 22 | :
- | ~
- 23 | fOffset(0),
- | ~~~~~~~~~~~
- 24 | fInode(inode),
- | ~~~~~~~~~~~~~~
- 25 | fIterator(NULL)
- | ~~~~~~~~~~~~~~~
- 26 | {
- | ~
- 27 | btrfs_key key;
- | ~~~~~~~~~~~~~~
- 28 | key.SetType(BTRFS_KEY_TYPE_DIR_INDEX);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 29 | key.SetObjectID(inode->ID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 30 | key.SetOffset(BTREE_BEGIN);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 31 | fIterator = new(std::nothrow) TreeIterator(inode->GetVolume()->FSTree(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 32 | key);
- | ~~~~~
- 33 | }
- | ~
- 34 |
- |
- 35 |
- |
- 36 | DirectoryIterator::~DirectoryIterator()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 37 | {
- | ~
- 38 | delete fIterator;
- | ~~~~~~~~~~~~~~~~~
- 39 | fIterator = NULL;
- | ~~~~~~~~~~~~~~~~~
- 40 | }
- | ~
- 41 |
- |
- 42 |
- |
- 43 | status_t
- | ~~~~~~~~
- 44 | DirectoryIterator::InitCheck()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 45 | {
- | ~
- 46 | return fIterator != NULL ? B_OK : B_NO_MEMORY;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 47 | }
- | ~
- 48 |
- |
- 49 |
- |
- 50 | status_t
- | ~~~~~~~~
- 51 | DirectoryIterator::GetNext(char* name, size_t* _nameLength, ino_t* _id)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 52 | {
- | ~
- 53 | if (fOffset == 0) {
- | ~~~~~~~~~~~~~~~~~~~
- 54 | if (*_nameLength < 3)
- | ~~~~~~~~~~~~~~~~~~~~~
- 55 | return B_BUFFER_OVERFLOW;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 56 | *_nameLength = 2;
- | ~~~~~~~~~~~~~~~~~
- 57 | strlcpy(name, "..", *_nameLength + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 58 | *_id = fInode->ID();
- | ~~~~~~~~~~~~~~~~~~~~
- 59 | fOffset = 1;
- | ~~~~~~~~~~~~
- 60 | return B_OK;
- | ~~~~~~~~~~~~
- 61 | } else if (fOffset == 1) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 62 | if (*_nameLength < 2)
- | ~~~~~~~~~~~~~~~~~~~~~
- 63 | return B_BUFFER_OVERFLOW;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 64 | *_nameLength = 1;
- | ~~~~~~~~~~~~~~~~~
- 65 | strlcpy(name, ".", *_nameLength + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 66 | fOffset = 2;
- | ~~~~~~~~~~~~
- 67 | if (fInode->ID() == BTRFS_FIRST_SUBVOLUME) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 68 | *_id = fInode->ID();
- | ~~~~~~~~~~~~~~~~~~~~
- 69 | return B_OK;
- | ~~~~~~~~~~~~
- 70 | }
- | ~
- 71 | return fInode->FindParent(_id);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 72 | }
- | ~
- 73 |
- |
- 74 | btrfs_dir_entry* entries;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 75 | uint32 entries_length;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 76 | status_t status = fIterator->GetNextEntry((void**)&entries, &entries_length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 77 | if (status != B_OK)
- | ~~~~~~~~~~~~~~~~~~~
- 78 | return status;
- | ~~~~~~~~~~~~~~
- 79 |
- |
- 80 | btrfs_dir_entry* entry = entries;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 81 | uint16 current = 0;
- | ~~~~~~~~~~~~~~~~~~~
- 82 | while (current < entries_length) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 83 | current += entry->Length();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 84 | break;
- | ~~~~~~
- 85 | // TODO there could be several entries with the same name hash
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 86 | entry = (btrfs_dir_entry*)((uint8*)entry + entry->Length());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 87 | }
- | ~
- 88 |
- |
- 89 | size_t length = entry->NameLength();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 90 |
- |
- 91 | TRACE("DirectoryIterator::GetNext() entries_length %ld name_length %d\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 92 | entries_length, entry->NameLength());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 93 |
- |
- 94 | if (length + 1 > *_nameLength) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 95 | free(entries);
- | ~~~~~~~~~~~~~~
- 96 | return B_BUFFER_OVERFLOW;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 97 | }
- | ~
- 98 |
- |
- 99 | memcpy(name, entry + 1, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 100 | name[length] = '\0';
- | ~~~~~~~~~~~~~~~~~~~~
- 101 | *_nameLength = length;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 102 | *_id = entry->InodeID();
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 103 | free(entries);
- | ~~~~~~~~~~~~~~
- 104 |
- |
- 105 | return B_OK;
- | ~~~~~~~~~~~~
- 106 | }
- | ~
- 107 |
- |
- 108 |
- |
- 109 | status_t
- | ~~~~~~~~
- 110 | DirectoryIterator::Lookup(const char* name, size_t nameLength, ino_t* _id)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 111 | {
- | ~
- 112 | if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 113 | if (strcmp(name, ".") == 0
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 114 | || fInode->ID() == BTRFS_FIRST_SUBVOLUME) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 115 | *_id = fInode->ID();
- | ~~~~~~~~~~~~~~~~~~~~
- 116 | return B_OK;
- | ~~~~~~~~~~~~
- 117 | }
- | ~
- 118 | return fInode->FindParent(_id);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 119 | }
- | ~
- 120 |
- |
- 121 | uint32 hash = calculate_crc((uint32)~1, (uint8*)name, nameLength);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 122 | btrfs_key key;
- | ~~~~~~~~~~~~~~
- 123 | key.SetType(BTRFS_KEY_TYPE_DIR_ITEM);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 124 | key.SetObjectID(fInode->ID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 125 | key.SetOffset(hash);
- | ~~~~~~~~~~~~~~~~~~~~
- 126 | BTree::Path path(fInode->GetVolume()->FSTree());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 127 |
- |
- 128 | btrfs_dir_entry* entries;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 129 | uint32 length;
- | ~~~~~~~~~~~~~~
- 130 | status_t status = fInode->GetVolume()->FSTree()->FindExact(&path, key,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 131 | (void**)&entries, &length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 132 | if (status != B_OK) {
- | ~~~~~~~~~~~~~~~~~~~~~
- 133 | TRACE("DirectoryIterator::Lookup(): Couldn't find entry with hash %" B_PRIu32
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 134 | " \"%s\"\n", hash, name);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 135 | return status;
- | ~~~~~~~~~~~~~~
- 136 | }
- | ~
- 137 |
- |
- 138 | btrfs_dir_entry* entry = entries;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 139 | uint16 current = 0;
- | ~~~~~~~~~~~~~~~~~~~
- 140 | while (current < length) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 141 | current += entry->Length();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 142 | break;
- | ~~~~~~
- 143 | // TODO there could be several entries with the same name hash
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 144 | entry = (btrfs_dir_entry*)((uint8*)entry + entry->Length());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 145 | }
- | ~
- 146 |
- |
- 147 | TRACE("DirectoryIterator::Lookup() entries_length %ld name_length %d\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 148 | length, entry->NameLength());
- | ~~~~~~
- | |
- | uint32_t {aka unsigned int}
- ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:147:2: note: in expansion of macro ‘TRACE’
- 147 | TRACE("DirectoryIterator::Lookup() entries_length %ld name_length %d\n",
- | ^~~~~
- ../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp:147:54: note: format string is defined here
- 147 | TRACE("DirectoryIterator::Lookup() entries_length %ld name_length %d\n",
- | ~~^
- | |
- | long int
- | %d
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/DirectoryIterator.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/DirectoryIterator.o ...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/ExtentAllocator.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp:7:
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:100:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 100 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:103:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 103 | uuid_t chunk_tree_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:169:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 169 | uuid_t device_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:215:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 215 | uuid_t uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:216:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 216 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:222:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 222 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/ExtentAllocator.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/ExtentAllocator.o ...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Inode.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:100:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 100 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:103:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 103 | uuid_t chunk_tree_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:169:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 169 | uuid_t device_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:215:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 215 | uuid_t uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:216:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 216 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:222:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 222 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp: In static member function ‘static Inode* Inode::Create(Transaction&, fssh_ino_t, Inode*, int32_t, uint64_t, uint64_t)’:
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:19:30: warning: ' ' flag used with ‘%u’ gnu_printf format [-Wformat=]
- 19 | # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ^~~~~~~~~~~~~~~~~~~~~~~~~
- 20 | # define ASSERT(x) { if (!(x)) kernel_debugger("btrfs: assert failed: " #x "\n"); }
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 21 | #else
- | ~~~~~
- 22 | # define TRACE(x...) ;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 23 | # define ASSERT(x) ;
- | ~~~~~~~~~~~~~~~~~~~~
- 24 | #endif
- | ~~~~~~
- 25 | #define ERROR(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 26 |
- |
- 27 |
- |
- 28 | Inode::Inode(Volume* volume, ino_t id)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 29 | :
- | ~
- 30 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 31 | fID(id),
- | ~~~~~~~~
- 32 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 33 | fMap(NULL)
- | ~~~~~~~~~~
- 34 | {
- | ~
- 35 | rw_lock_init(&fLock, "btrfs inode");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 36 |
- |
- 37 | fInitStatus = UpdateNodeFromDisk();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 38 | if (fInitStatus == B_OK) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 39 | if (!IsDirectory() && !IsSymLink()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 40 | fCache = file_cache_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 41 | fMap = file_map_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 42 | }
- | ~
- 43 | }
- | ~
- 44 | }
- | ~
- 45 |
- |
- 46 |
- |
- 47 | Inode::Inode(Volume* volume, ino_t id, const btrfs_inode& item)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 48 | :
- | ~
- 49 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 50 | fID(id),
- | ~~~~~~~~
- 51 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 52 | fMap(NULL),
- | ~~~~~~~~~~~
- 53 | fInitStatus(B_OK),
- | ~~~~~~~~~~~~~~~~~~
- 54 | fNode(item)
- | ~~~~~~~~~~~
- 55 | {
- | ~
- 56 | if (!IsDirectory() && !IsSymLink()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 57 | fCache = file_cache_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 58 | fMap = file_map_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 59 | }
- | ~
- 60 | }
- | ~
- 61 |
- |
- 62 |
- |
- 63 | Inode::Inode(Volume* volume)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 64 | :
- | ~
- 65 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 66 | fID(0),
- | ~~~~~~~
- 67 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 68 | fMap(NULL),
- | ~~~~~~~~~~~
- 69 | fInitStatus(B_NO_INIT)
- | ~~~~~~~~~~~~~~~~~~~~~~
- 70 | {
- | ~
- 71 | rw_lock_init(&fLock, "btrfs inode");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 72 | }
- | ~
- 73 |
- |
- 74 |
- |
- 75 | Inode::~Inode()
- | ~~~~~~~~~~~~~~~
- 76 | {
- | ~
- 77 | TRACE("Inode destructor\n");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 78 | file_cache_delete(FileCache());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 79 | file_map_delete(Map());
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 80 | TRACE("Inode destructor: Done\n");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 81 | }
- | ~
- 82 |
- |
- 83 |
- |
- 84 | status_t
- | ~~~~~~~~
- 85 | Inode::InitCheck()
- | ~~~~~~~~~~~~~~~~~~
- 86 | {
- | ~
- 87 | return fInitStatus;
- | ~~~~~~~~~~~~~~~~~~~
- 88 | }
- | ~
- 89 |
- |
- 90 |
- |
- 91 | status_t
- | ~~~~~~~~
- 92 | Inode::UpdateNodeFromDisk()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 93 | {
- | ~
- 94 | btrfs_key search_key;
- | ~~~~~~~~~~~~~~~~~~~~~
- 95 | search_key.SetType(BTRFS_KEY_TYPE_INODE_ITEM);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 96 | search_key.SetObjectID(fID);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 97 | search_key.SetOffset(0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 98 | BTree::Path path(fVolume->FSTree());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 99 |
- |
- 100 | btrfs_inode* node;
- | ~~~~~~~~~~~~~~~~~~
- 101 | if (fVolume->FSTree()->FindExact(&path, search_key, (void**)&node)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 102 | != B_OK) {
- | ~~~~~~~~~~
- 103 | ERROR("Inode::UpdateNodeFromDisk(): Couldn't find inode %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 104 | B_PRIdINO "\n", fID);
- | ~~~~~~~~~~~~~~~~~~~~~
- 105 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 106 | }
- | ~
- 107 |
- |
- 108 | memcpy(&fNode, node, sizeof(btrfs_inode));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 109 | free(node);
- | ~~~~~~~~~~~
- 110 | return B_OK;
- | ~~~~~~~~~~~~
- 111 | }
- | ~
- 112 |
- |
- 113 |
- |
- 114 | /*
- | ~~
- 115 | * Create new Inode object with inode_item
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 116 | */
- | ~~
- 117 | Inode*
- | ~~~~~~
- 118 | Inode::Create(Transaction& transaction, ino_t id, Inode* parent, int32 mode,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 119 | uint64 size, uint64 flags)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 120 | {
- | ~
- 121 | TRACE("Inode::Create() id % " B_PRIu64 " mode %" B_PRId32 " flags %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 122 | B_PRIu64"\n", id, flags, mode);
- | ~~~~~~~~~~~~
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:121:2: note: in expansion of macro ‘TRACE’
- 121 | TRACE("Inode::Create() id % " B_PRIu64 " mode %" B_PRId32 " flags %"
- | ^~~~~
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:19:30: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘uint64_t’ {aka ‘long unsigned int’} [-Wformat=]
- 19 | # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ^~~~~~~~~~~~~~~~~~~~~~~~~
- 20 | # define ASSERT(x) { if (!(x)) kernel_debugger("btrfs: assert failed: " #x "\n"); }
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 21 | #else
- | ~~~~~
- 22 | # define TRACE(x...) ;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 23 | # define ASSERT(x) ;
- | ~~~~~~~~~~~~~~~~~~~~
- 24 | #endif
- | ~~~~~~
- 25 | #define ERROR(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 26 |
- |
- 27 |
- |
- 28 | Inode::Inode(Volume* volume, ino_t id)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 29 | :
- | ~
- 30 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 31 | fID(id),
- | ~~~~~~~~
- 32 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 33 | fMap(NULL)
- | ~~~~~~~~~~
- 34 | {
- | ~
- 35 | rw_lock_init(&fLock, "btrfs inode");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 36 |
- |
- 37 | fInitStatus = UpdateNodeFromDisk();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 38 | if (fInitStatus == B_OK) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 39 | if (!IsDirectory() && !IsSymLink()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 40 | fCache = file_cache_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 41 | fMap = file_map_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 42 | }
- | ~
- 43 | }
- | ~
- 44 | }
- | ~
- 45 |
- |
- 46 |
- |
- 47 | Inode::Inode(Volume* volume, ino_t id, const btrfs_inode& item)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 48 | :
- | ~
- 49 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 50 | fID(id),
- | ~~~~~~~~
- 51 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 52 | fMap(NULL),
- | ~~~~~~~~~~~
- 53 | fInitStatus(B_OK),
- | ~~~~~~~~~~~~~~~~~~
- 54 | fNode(item)
- | ~~~~~~~~~~~
- 55 | {
- | ~
- 56 | if (!IsDirectory() && !IsSymLink()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 57 | fCache = file_cache_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 58 | fMap = file_map_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 59 | }
- | ~
- 60 | }
- | ~
- 61 |
- |
- 62 |
- |
- 63 | Inode::Inode(Volume* volume)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 64 | :
- | ~
- 65 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 66 | fID(0),
- | ~~~~~~~
- 67 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 68 | fMap(NULL),
- | ~~~~~~~~~~~
- 69 | fInitStatus(B_NO_INIT)
- | ~~~~~~~~~~~~~~~~~~~~~~
- 70 | {
- | ~
- 71 | rw_lock_init(&fLock, "btrfs inode");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 72 | }
- | ~
- 73 |
- |
- 74 |
- |
- 75 | Inode::~Inode()
- | ~~~~~~~~~~~~~~~
- 76 | {
- | ~
- 77 | TRACE("Inode destructor\n");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 78 | file_cache_delete(FileCache());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 79 | file_map_delete(Map());
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 80 | TRACE("Inode destructor: Done\n");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 81 | }
- | ~
- 82 |
- |
- 83 |
- |
- 84 | status_t
- | ~~~~~~~~
- 85 | Inode::InitCheck()
- | ~~~~~~~~~~~~~~~~~~
- 86 | {
- | ~
- 87 | return fInitStatus;
- | ~~~~~~~~~~~~~~~~~~~
- 88 | }
- | ~
- 89 |
- |
- 90 |
- |
- 91 | status_t
- | ~~~~~~~~
- 92 | Inode::UpdateNodeFromDisk()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 93 | {
- | ~
- 94 | btrfs_key search_key;
- | ~~~~~~~~~~~~~~~~~~~~~
- 95 | search_key.SetType(BTRFS_KEY_TYPE_INODE_ITEM);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 96 | search_key.SetObjectID(fID);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 97 | search_key.SetOffset(0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 98 | BTree::Path path(fVolume->FSTree());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 99 |
- |
- 100 | btrfs_inode* node;
- | ~~~~~~~~~~~~~~~~~~
- 101 | if (fVolume->FSTree()->FindExact(&path, search_key, (void**)&node)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 102 | != B_OK) {
- | ~~~~~~~~~~
- 103 | ERROR("Inode::UpdateNodeFromDisk(): Couldn't find inode %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 104 | B_PRIdINO "\n", fID);
- | ~~~~~~~~~~~~~~~~~~~~~
- 105 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 106 | }
- | ~
- 107 |
- |
- 108 | memcpy(&fNode, node, sizeof(btrfs_inode));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 109 | free(node);
- | ~~~~~~~~~~~
- 110 | return B_OK;
- | ~~~~~~~~~~~~
- 111 | }
- | ~
- 112 |
- |
- 113 |
- |
- 114 | /*
- | ~~
- 115 | * Create new Inode object with inode_item
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 116 | */
- | ~~
- 117 | Inode*
- | ~~~~~~
- 118 | Inode::Create(Transaction& transaction, ino_t id, Inode* parent, int32 mode,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 119 | uint64 size, uint64 flags)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 120 | {
- | ~
- 121 | TRACE("Inode::Create() id % " B_PRIu64 " mode %" B_PRId32 " flags %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 122 | B_PRIu64"\n", id, flags, mode);
- | ~~~~~~~~~~~~ ~~~~~
- | |
- | uint64_t {aka long unsigned int}
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:121:2: note: in expansion of macro ‘TRACE’
- 121 | TRACE("Inode::Create() id % " B_PRIu64 " mode %" B_PRId32 " flags %"
- | ^~~~~
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:19:30: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘int32_t’ {aka ‘int’} [-Wformat=]
- 19 | # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ^~~~~~~~~~~~~~~~~~~~~~~~~
- 20 | # define ASSERT(x) { if (!(x)) kernel_debugger("btrfs: assert failed: " #x "\n"); }
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 21 | #else
- | ~~~~~
- 22 | # define TRACE(x...) ;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 23 | # define ASSERT(x) ;
- | ~~~~~~~~~~~~~~~~~~~~
- 24 | #endif
- | ~~~~~~
- 25 | #define ERROR(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 26 |
- |
- 27 |
- |
- 28 | Inode::Inode(Volume* volume, ino_t id)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 29 | :
- | ~
- 30 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 31 | fID(id),
- | ~~~~~~~~
- 32 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 33 | fMap(NULL)
- | ~~~~~~~~~~
- 34 | {
- | ~
- 35 | rw_lock_init(&fLock, "btrfs inode");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 36 |
- |
- 37 | fInitStatus = UpdateNodeFromDisk();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 38 | if (fInitStatus == B_OK) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 39 | if (!IsDirectory() && !IsSymLink()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 40 | fCache = file_cache_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 41 | fMap = file_map_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 42 | }
- | ~
- 43 | }
- | ~
- 44 | }
- | ~
- 45 |
- |
- 46 |
- |
- 47 | Inode::Inode(Volume* volume, ino_t id, const btrfs_inode& item)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 48 | :
- | ~
- 49 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 50 | fID(id),
- | ~~~~~~~~
- 51 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 52 | fMap(NULL),
- | ~~~~~~~~~~~
- 53 | fInitStatus(B_OK),
- | ~~~~~~~~~~~~~~~~~~
- 54 | fNode(item)
- | ~~~~~~~~~~~
- 55 | {
- | ~
- 56 | if (!IsDirectory() && !IsSymLink()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 57 | fCache = file_cache_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 58 | fMap = file_map_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 59 | }
- | ~
- 60 | }
- | ~
- 61 |
- |
- 62 |
- |
- 63 | Inode::Inode(Volume* volume)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 64 | :
- | ~
- 65 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 66 | fID(0),
- | ~~~~~~~
- 67 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 68 | fMap(NULL),
- | ~~~~~~~~~~~
- 69 | fInitStatus(B_NO_INIT)
- | ~~~~~~~~~~~~~~~~~~~~~~
- 70 | {
- | ~
- 71 | rw_lock_init(&fLock, "btrfs inode");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 72 | }
- | ~
- 73 |
- |
- 74 |
- |
- 75 | Inode::~Inode()
- | ~~~~~~~~~~~~~~~
- 76 | {
- | ~
- 77 | TRACE("Inode destructor\n");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 78 | file_cache_delete(FileCache());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 79 | file_map_delete(Map());
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 80 | TRACE("Inode destructor: Done\n");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 81 | }
- | ~
- 82 |
- |
- 83 |
- |
- 84 | status_t
- | ~~~~~~~~
- 85 | Inode::InitCheck()
- | ~~~~~~~~~~~~~~~~~~
- 86 | {
- | ~
- 87 | return fInitStatus;
- | ~~~~~~~~~~~~~~~~~~~
- 88 | }
- | ~
- 89 |
- |
- 90 |
- |
- 91 | status_t
- | ~~~~~~~~
- 92 | Inode::UpdateNodeFromDisk()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 93 | {
- | ~
- 94 | btrfs_key search_key;
- | ~~~~~~~~~~~~~~~~~~~~~
- 95 | search_key.SetType(BTRFS_KEY_TYPE_INODE_ITEM);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 96 | search_key.SetObjectID(fID);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 97 | search_key.SetOffset(0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 98 | BTree::Path path(fVolume->FSTree());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 99 |
- |
- 100 | btrfs_inode* node;
- | ~~~~~~~~~~~~~~~~~~
- 101 | if (fVolume->FSTree()->FindExact(&path, search_key, (void**)&node)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 102 | != B_OK) {
- | ~~~~~~~~~~
- 103 | ERROR("Inode::UpdateNodeFromDisk(): Couldn't find inode %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 104 | B_PRIdINO "\n", fID);
- | ~~~~~~~~~~~~~~~~~~~~~
- 105 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 106 | }
- | ~
- 107 |
- |
- 108 | memcpy(&fNode, node, sizeof(btrfs_inode));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 109 | free(node);
- | ~~~~~~~~~~~
- 110 | return B_OK;
- | ~~~~~~~~~~~~
- 111 | }
- | ~
- 112 |
- |
- 113 |
- |
- 114 | /*
- | ~~
- 115 | * Create new Inode object with inode_item
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 116 | */
- | ~~
- 117 | Inode*
- | ~~~~~~
- 118 | Inode::Create(Transaction& transaction, ino_t id, Inode* parent, int32 mode,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 119 | uint64 size, uint64 flags)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 120 | {
- | ~
- 121 | TRACE("Inode::Create() id % " B_PRIu64 " mode %" B_PRId32 " flags %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 122 | B_PRIu64"\n", id, flags, mode);
- | ~~~~~~~~~~~~ ~~~~
- | |
- | int32_t {aka int}
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:121:2: note: in expansion of macro ‘TRACE’
- 121 | TRACE("Inode::Create() id % " B_PRIu64 " mode %" B_PRId32 " flags %"
- | ^~~~~
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp: In member function ‘fssh_status_t Inode::ReadAt(fssh_off_t, uint8_t*, fssh_size_t*)’:
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:19:30: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘uint32_t’ {aka ‘unsigned int’} [-Wformat=]
- 19 | # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ^~~~~~~~~~~~~~~~~~~~~~~~~
- 20 | # define ASSERT(x) { if (!(x)) kernel_debugger("btrfs: assert failed: " #x "\n"); }
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 21 | #else
- | ~~~~~
- 22 | # define TRACE(x...) ;
- | ~~~~~~~~~~~~~~~~~~~~~~
- 23 | # define ASSERT(x) ;
- | ~~~~~~~~~~~~~~~~~~~~
- 24 | #endif
- | ~~~~~~
- 25 | #define ERROR(x...) dprintf("\33[34mbtrfs:\33[0m " x)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 26 |
- |
- 27 |
- |
- 28 | Inode::Inode(Volume* volume, ino_t id)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 29 | :
- | ~
- 30 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 31 | fID(id),
- | ~~~~~~~~
- 32 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 33 | fMap(NULL)
- | ~~~~~~~~~~
- 34 | {
- | ~
- 35 | rw_lock_init(&fLock, "btrfs inode");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 36 |
- |
- 37 | fInitStatus = UpdateNodeFromDisk();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 38 | if (fInitStatus == B_OK) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 39 | if (!IsDirectory() && !IsSymLink()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 40 | fCache = file_cache_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 41 | fMap = file_map_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 42 | }
- | ~
- 43 | }
- | ~
- 44 | }
- | ~
- 45 |
- |
- 46 |
- |
- 47 | Inode::Inode(Volume* volume, ino_t id, const btrfs_inode& item)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 48 | :
- | ~
- 49 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 50 | fID(id),
- | ~~~~~~~~
- 51 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 52 | fMap(NULL),
- | ~~~~~~~~~~~
- 53 | fInitStatus(B_OK),
- | ~~~~~~~~~~~~~~~~~~
- 54 | fNode(item)
- | ~~~~~~~~~~~
- 55 | {
- | ~
- 56 | if (!IsDirectory() && !IsSymLink()) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 57 | fCache = file_cache_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 58 | fMap = file_map_create(fVolume->ID(), ID(), Size());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 59 | }
- | ~
- 60 | }
- | ~
- 61 |
- |
- 62 |
- |
- 63 | Inode::Inode(Volume* volume)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 64 | :
- | ~
- 65 | fVolume(volume),
- | ~~~~~~~~~~~~~~~~
- 66 | fID(0),
- | ~~~~~~~
- 67 | fCache(NULL),
- | ~~~~~~~~~~~~~
- 68 | fMap(NULL),
- | ~~~~~~~~~~~
- 69 | fInitStatus(B_NO_INIT)
- | ~~~~~~~~~~~~~~~~~~~~~~
- 70 | {
- | ~
- 71 | rw_lock_init(&fLock, "btrfs inode");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 72 | }
- | ~
- 73 |
- |
- 74 |
- |
- 75 | Inode::~Inode()
- | ~~~~~~~~~~~~~~~
- 76 | {
- | ~
- 77 | TRACE("Inode destructor\n");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 78 | file_cache_delete(FileCache());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 79 | file_map_delete(Map());
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 80 | TRACE("Inode destructor: Done\n");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 81 | }
- | ~
- 82 |
- |
- 83 |
- |
- 84 | status_t
- | ~~~~~~~~
- 85 | Inode::InitCheck()
- | ~~~~~~~~~~~~~~~~~~
- 86 | {
- | ~
- 87 | return fInitStatus;
- | ~~~~~~~~~~~~~~~~~~~
- 88 | }
- | ~
- 89 |
- |
- 90 |
- |
- 91 | status_t
- | ~~~~~~~~
- 92 | Inode::UpdateNodeFromDisk()
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 93 | {
- | ~
- 94 | btrfs_key search_key;
- | ~~~~~~~~~~~~~~~~~~~~~
- 95 | search_key.SetType(BTRFS_KEY_TYPE_INODE_ITEM);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 96 | search_key.SetObjectID(fID);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 97 | search_key.SetOffset(0);
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 98 | BTree::Path path(fVolume->FSTree());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 99 |
- |
- 100 | btrfs_inode* node;
- | ~~~~~~~~~~~~~~~~~~
- 101 | if (fVolume->FSTree()->FindExact(&path, search_key, (void**)&node)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 102 | != B_OK) {
- | ~~~~~~~~~~
- 103 | ERROR("Inode::UpdateNodeFromDisk(): Couldn't find inode %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 104 | B_PRIdINO "\n", fID);
- | ~~~~~~~~~~~~~~~~~~~~~
- 105 | return B_ENTRY_NOT_FOUND;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 106 | }
- | ~
- 107 |
- |
- 108 | memcpy(&fNode, node, sizeof(btrfs_inode));
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 109 | free(node);
- | ~~~~~~~~~~~
- 110 | return B_OK;
- | ~~~~~~~~~~~~
- 111 | }
- | ~
- 112 |
- |
- 113 |
- |
- 114 | /*
- | ~~
- 115 | * Create new Inode object with inode_item
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 116 | */
- | ~~
- 117 | Inode*
- | ~~~~~~
- 118 | Inode::Create(Transaction& transaction, ino_t id, Inode* parent, int32 mode,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 119 | uint64 size, uint64 flags)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 120 | {
- | ~
- 121 | TRACE("Inode::Create() id % " B_PRIu64 " mode %" B_PRId32 " flags %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 122 | B_PRIu64"\n", id, flags, mode);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 123 |
- |
- 124 | Volume* volume = parent != NULL ?
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 125 | parent->GetVolume() : transaction.GetJournal()->GetVolume();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 126 | uint64 nbytes = size; // allocated size
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 127 | if (size > volume->MaxInlineSize())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 128 | nbytes = (size / volume->SectorSize() + 1) * volume->SectorSize();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 129 |
- |
- 130 | btrfs_inode inode;
- | ~~~~~~~~~~~~~~~~~~
- 131 |
- |
- 132 | inode.generation = B_HOST_TO_LENDIAN_INT64(transaction.SystemID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 133 | inode.transaction_id = B_HOST_TO_LENDIAN_INT64(transaction.SystemID());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 134 | inode.size = B_HOST_TO_LENDIAN_INT64(size);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 135 | inode.nbytes = B_HOST_TO_LENDIAN_INT64(nbytes);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 136 | inode.blockgroup = 0; // normal inode only
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 137 | inode.num_links = B_HOST_TO_LENDIAN_INT32(1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 138 | inode.uid = B_HOST_TO_LENDIAN_INT32(geteuid());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 139 | inode.gid = B_HOST_TO_LENDIAN_INT32(parent != NULL ?
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 140 | parent->GroupID() : getegid());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 141 | inode.mode = B_HOST_TO_LENDIAN_INT32(mode);;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 142 | inode.rdev = 0; // normal file only
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 143 | inode.flags = B_HOST_TO_LENDIAN_INT64(flags);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 144 | inode.sequence = 0; // incremented each time mtime value is changed
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 145 |
- |
- 146 | uint64 now = real_time_clock_usecs();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 147 | struct timespec timespec;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 148 | timespec.tv_sec = now / 1000000;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 149 | timespec.tv_nsec = (now % 1000000) * 1000;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 150 | btrfs_inode::SetTime(inode.access_time, timespec);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 151 | btrfs_inode::SetTime(inode.creation_time, timespec);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 152 | btrfs_inode::SetTime(inode.change_time, timespec);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 153 | btrfs_inode::SetTime(inode.modification_time, timespec);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 154 |
- |
- 155 | return new Inode(volume, id, inode);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 156 | }
- | ~
- 157 |
- |
- 158 |
- |
- 159 | status_t
- | ~~~~~~~~
- 160 | Inode::CheckPermissions(int accessMode) const
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 161 | {
- | ~
- 162 | // you never have write access to a read-only volume
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 163 | if ((accessMode & W_OK) != 0 && fVolume->IsReadOnly())
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 164 | return B_READ_ONLY_DEVICE;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~
- 165 |
- |
- 166 | return check_access_permissions(accessMode, Mode(), (gid_t)fNode.GroupID(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 167 | (uid_t)fNode.UserID());
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 168 | }
- | ~
- 169 |
- |
- 170 |
- |
- 171 | status_t
- | ~~~~~~~~
- 172 | Inode::FindBlock(off_t pos, off_t& physical, off_t* _length)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 173 | {
- | ~
- 174 | btrfs_key search_key;
- | ~~~~~~~~~~~~~~~~~~~~~
- 175 | search_key.SetType(BTRFS_KEY_TYPE_EXTENT_DATA);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 176 | search_key.SetObjectID(fID);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 177 | search_key.SetOffset(pos + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 178 | BTree::Path path(fVolume->FSTree());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 179 |
- |
- 180 | btrfs_extent_data* extent_data;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 181 | status_t status = fVolume->FSTree()->FindPrevious(&path, search_key,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 182 | (void**)&extent_data);
- | ~~~~~~~~~~~~~~~~~~~~~~
- 183 | if (status != B_OK) {
- | ~~~~~~~~~~~~~~~~~~~~~
- 184 | ERROR("Inode::FindBlock(): Couldn't find extent_data 0x%" B_PRIx32
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 185 | "\n", status);
- | ~~~~~~~~~~~~~~
- 186 | return status;
- | ~~~~~~~~~~~~~~
- 187 | }
- | ~
- 188 |
- |
- 189 | TRACE("Inode::FindBlock(%" B_PRIdINO ") key.Offset() %" B_PRId64 "\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 190 | ID(), search_key.Offset());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 191 |
- |
- 192 | off_t diff = pos - search_key.Offset();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 193 | off_t logical = 0;
- | ~~~~~~~~~~~~~~~~~~
- 194 | if (extent_data->Type() == BTRFS_EXTENT_DATA_REGULAR)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 195 | logical = diff + extent_data->disk_offset;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 196 | else
- | ~~~~
- 197 | panic("unknown extent type; %d\n", extent_data->Type());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 198 | status = fVolume->FindBlock(logical, physical);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 199 | if (_length != NULL)
- | ~~~~~~~~~~~~~~~~~~~~
- 200 | *_length = extent_data->Size() - diff;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 201 | TRACE("Inode::FindBlock(%" B_PRIdINO ") %" B_PRIdOFF " physical %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 202 | B_PRIdOFF "\n", ID(), pos, physical);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 203 |
- |
- 204 | free(extent_data);
- | ~~~~~~~~~~~~~~~~~~
- 205 | return status;
- | ~~~~~~~~~~~~~~
- 206 | }
- | ~
- 207 |
- |
- 208 |
- |
- 209 | status_t
- | ~~~~~~~~
- 210 | Inode::ReadAt(off_t pos, uint8* buffer, size_t* _length)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 211 | {
- | ~
- 212 | size_t length = *_length;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~
- 213 |
- |
- 214 | // set/check boundaries for pos/length
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 215 | if (pos < 0) {
- | ~~~~~~~~~~~~~~
- 216 | ERROR("inode %" B_PRIdINO ": ReadAt failed(pos %" B_PRIdOFF
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 217 | ", length %lu)\n", ID(), pos, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 218 | return B_BAD_VALUE;
- | ~~~~~~~~~~~~~~~~~~~
- 219 | }
- | ~
- 220 |
- |
- 221 | if (pos >= Size() || length == 0) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 222 | TRACE("inode %" B_PRIdINO ": ReadAt 0 (pos %" B_PRIdOFF
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 223 | ", length %lu)\n", ID(), pos, length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 224 | *_length = 0;
- | ~~~~~~~~~~~~~
- 225 | return B_NO_ERROR;
- | ~~~~~~~~~~~~~~~~~~
- 226 | }
- | ~
- 227 |
- |
- 228 | // the file cache doesn't seem to like non block aligned file offset
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 229 | // so we avoid the file cache for inline extents
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 230 | btrfs_key search_key;
- | ~~~~~~~~~~~~~~~~~~~~~
- 231 | search_key.SetType(BTRFS_KEY_TYPE_EXTENT_DATA);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 232 | search_key.SetObjectID(fID);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 233 | search_key.SetOffset(pos + 1);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 234 | BTree::Path path(fVolume->FSTree());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 235 |
- |
- 236 | uint32 item_size;
- | ~~~~~~~~~~~~~~~~~
- 237 | btrfs_extent_data* extent_data;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 238 | status_t status = fVolume->FSTree()->FindPrevious(&path, search_key,
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 239 | (void**)&extent_data, &item_size);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 240 | if (status != B_OK) {
- | ~~~~~~~~~~~~~~~~~~~~~
- 241 | ERROR("Inode::FindBlock(): Couldn't find extent_data 0x%" B_PRIx32
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 242 | "\n", status);
- | ~~~~~~~~~~~~~~
- 243 | return status;
- | ~~~~~~~~~~~~~~
- 244 | }
- | ~
- 245 | MemoryDeleter deleter(extent_data);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 246 |
- |
- 247 |
- |
- 248 | uint8 compression = extent_data->Compression();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 249 | if (FileCache() != NULL
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 250 | && extent_data->Type() == BTRFS_EXTENT_DATA_REGULAR) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 251 | TRACE("inode %" B_PRIdINO ": ReadAt cache (pos %" B_PRIdOFF ", length %lu)\n",
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 252 | ID(), pos, length);
- | ~~~~~~~~~~~~~~~~~~~
- 253 | if (compression == BTRFS_EXTENT_COMPRESS_NONE)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 254 | return file_cache_read(FileCache(), NULL, pos, buffer, _length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 255 | else if (compression == BTRFS_EXTENT_COMPRESS_ZLIB)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 256 | panic("zlib isn't unsupported for regular extent\n");
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 257 | else
- | ~~~~
- 258 | panic("unknown extent compression; %d\n", compression);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 259 | return B_BAD_DATA;
- | ~~~~~~~~~~~~~~~~~~
- 260 | }
- | ~
- 261 |
- |
- 262 | TRACE("Inode::ReadAt(%" B_PRIdINO ") key.Offset() %" B_PRId64 "\n", ID(),
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 263 | search_key.Offset());
- | ~~~~~~~~~~~~~~~~~~~~~
- 264 |
- |
- 265 | off_t diff = pos - search_key.Offset();
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 266 | if (extent_data->Type() != BTRFS_EXTENT_DATA_INLINE) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 267 | panic("unknown extent type; %d\n", extent_data->Type());
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 268 | return B_BAD_DATA;
- | ~~~~~~~~~~~~~~~~~~
- 269 | }
- | ~
- 270 |
- |
- 271 | *_length = min_c(extent_data->Size() - diff, *_length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 272 | if (compression == BTRFS_EXTENT_COMPRESS_NONE)
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 273 | memcpy(buffer, extent_data->inline_data, *_length);
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 274 | else if (compression == BTRFS_EXTENT_COMPRESS_ZLIB) {
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 275 | char in[2048];
- | ~~~~~~~~~~~~~~
- 276 | z_stream zStream = {
- | ~~~~~~~~~~~~~~~~~~~~
- 277 | (Bytef*)in, // next in
- | ~~~~~~~~~~~~~~~~~~~~~~~
- 278 | sizeof(in), // avail in
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 279 | 0, // total in
- | ~~~~~~~~~~~~~~~~~
- 280 | NULL, // next out
- | ~~~~~~~~~~~~~~~~~~~
- 281 | 0, // avail out
- | ~~~~~~~~~~~~~~~~~~
- 282 | 0, // total out
- | ~~~~~~~~~~~~~~~~~~
- 283 | 0, // msg
- | ~~~~~~~~~~~~
- 284 | 0, // state
- | ~~~~~~~~~~~~~~
- 285 | Z_NULL, // zalloc
- | ~~~~~~~~~~~~~~~~~~~
- 286 | Z_NULL, // zfree
- | ~~~~~~~~~~~~~~~~~~
- 287 | Z_NULL, // opaque
- | ~~~~~~~~~~~~~~~~~~~
- 288 | 0, // data type
- | ~~~~~~~~~~~~~~~~~~
- 289 | 0, // adler
- | ~~~~~~~~~~~~~~
- 290 | 0, // reserved
- | ~~~~~~~~~~~~~~~~~
- 291 | };
- | ~~
- 292 |
- |
- 293 | int status;
- | ~~~~~~~~~~~
- 294 | ssize_t offset = 0;
- | ~~~~~~~~~~~~~~~~~~~
- 295 | uint32 inline_size = item_size - 13;
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 296 | bool headerRead = false;
- | ~~~~~~~~~~~~~~~~~~~~~~~~
- 297 |
- |
- 298 | TRACE("Inode::ReadAt(%" B_PRIdINO ") diff %" B_PRIdOFF " size %"
- | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 299 | B_PRIuSIZE "\n", ID(), diff, item_size);
- | ~~~~~~~~~~~~~~~ ~~~~~~~~~
- | |
- | uint32_t {aka unsigned int}
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:298:3: note: in expansion of macro ‘TRACE’
- 298 | TRACE("Inode::ReadAt(%" B_PRIdINO ") diff %" B_PRIdOFF " size %"
- | ^~~~~
- In file included from ../headers/private/fs_shell/fssh_dirent.h:8,
- from ../headers/private/fs_shell/fssh_api_wrapper.h:15,
- from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:10:
- ../headers/private/fs_shell/fssh_defs.h:52:29: warning: comparison of integer expressions of different signedness: ‘long unsigned int’ and ‘fssh_ssize_t’ {aka ‘long int’} [-Wsign-compare]
- 52 | #define fssh_min_c(a,b) ((a)>(b)?(b):(a))
- | ~~~^~~~
- ../headers/private/fs_shell/fssh_api_wrapper.h:174:23: note: in expansion of macro ‘fssh_min_c’
- 174 | #define min_c(a,b) fssh_min_c(a,b)
- | ^~~~~~~~~~
- ../src/add-ons/kernel/file_systems/btrfs/Inode.cpp:302:24: note: in expansion of macro ‘min_c’
- 302 | ssize_t bytesRead = min_c(sizeof(in), inline_size - offset);
- | ^~~~~
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/Inode.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Inode.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Inode.o ...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Journal.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Journal.cpp:8:
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:100:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 100 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:103:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 103 | uuid_t chunk_tree_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:169:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 169 | uuid_t device_uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:215:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 215 | uuid_t uuid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:216:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 216 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:222:2: error: ‘uuid_t’ does not name a type; did you mean ‘uid_t’?
- 222 | uuid_t fsid;
- | ^~~~~~
- | uid_t
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/Journal.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Journal.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Journal.o ...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Volume.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:14:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/Volume.cpp:18:
- ../src/add-ons/kernel/file_systems/btrfs/DebugSupport.h:42:10: fatal error: OS.h: No such file or directory
- 42 | #include <OS.h>
- | ^~~~~~
- compilation terminated.
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/Volume.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Volume.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Volume.o ...
- C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/kernel_interface.o
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1646: warning: "R_OK" redefined
- 1646 | #define R_OK FSSH_R_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:281: note: this is the location of the previous definition
- 281 | #define R_OK 4 /* Test for read permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1647: warning: "W_OK" redefined
- 1647 | #define W_OK FSSH_W_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:282: note: this is the location of the previous definition
- 282 | #define W_OK 2 /* Test for write permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1648: warning: "X_OK" redefined
- 1648 | #define X_OK FSSH_X_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:283: note: this is the location of the previous definition
- 283 | #define X_OK 1 /* Test for execute permission. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1649: warning: "F_OK" redefined
- 1649 | #define F_OK FSSH_F_OK
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:284: note: this is the location of the previous definition
- 284 | #define F_OK 0 /* Test for existence. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1652: warning: "STDIN_FILENO" redefined
- 1652 | #define STDIN_FILENO FSSH_STDIN_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:210: note: this is the location of the previous definition
- 210 | #define STDIN_FILENO 0 /* Standard input. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1653: warning: "STDOUT_FILENO" redefined
- 1653 | #define STDOUT_FILENO FSSH_STDOUT_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:211: note: this is the location of the previous definition
- 211 | #define STDOUT_FILENO 1 /* Standard output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1654: warning: "STDERR_FILENO" redefined
- 1654 | #define STDERR_FILENO FSSH_STDERR_FILENO
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:212: note: this is the location of the previous definition
- 212 | #define STDERR_FILENO 2 /* Standard error output. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1657: warning: "SEEK_SET" redefined
- 1657 | #define SEEK_SET FSSH_SEEK_SET
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:311: note: this is the location of the previous definition
- 311 | # define SEEK_SET 0 /* Seek from beginning of file. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1658: warning: "SEEK_CUR" redefined
- 1658 | #define SEEK_CUR FSSH_SEEK_CUR
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:312: note: this is the location of the previous definition
- 312 | # define SEEK_CUR 1 /* Seek from current position. */
- |
- In file included from ../headers/private/kernel/util/AVLTreeBase.h:13,
- from ../headers/private/kernel/util/AVLTree.h:9,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:14,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- ../headers/private/fs_shell/fssh_api_wrapper.h:1659: warning: "SEEK_END" redefined
- 1659 | #define SEEK_END FSSH_SEEK_END
- |
- In file included from /usr/include/zconf.h:475,
- from /usr/include/zlib.h:34,
- from ../src/add-ons/kernel/file_systems/btrfs/system_dependencies.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/btrfs.h:10,
- from ../src/add-ons/kernel/file_systems/btrfs/Volume.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/CachedBlock.h:12,
- from ../src/add-ons/kernel/file_systems/btrfs/Attribute.h:11,
- from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:12:
- /usr/include/unistd.h:313: note: this is the location of the previous definition
- 313 | # define SEEK_END 2 /* Seek from end of file. */
- |
- In file included from ../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp:16:
- ../src/add-ons/kernel/file_systems/btrfs/DebugSupport.h:42:10: fatal error: OS.h: No such file or directory
- 42 | #include <OS.h>
- | ^~~~~~
- compilation terminated.
- gcc -c "../src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp" -O2 -Wall -Wno-trigraphs -Wno-ctor-dtor-privacy -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare -Wno-multichar -DFS_SHELL -DTRACE_BTRFS -Wno-multichar -fno-rtti -DHAIKU_BUILD_COMPATIBILITY_H -DARCH_x86_64 -D_NO_INLINE_ASM -D__NO_INLINE__ -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAIKU_HOST_USE_XATTR_REF -DHAIKU_HOST_PLATFORM_LINUX -DHAIKU_HOST_PLATFORM_64_BIT -DHAIKU_PACKAGING_ARCH=\"x86_64\" -iquote ../build/user_config_headers -iquote ../build/config_headers -iquote ../src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/linux/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote objects/haiku/x86_64/common/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell -iquote ../src/add-ons/kernel/file_systems/btrfs -iquote ../src/tools/fs_shell -I ../headers/build -I ../headers/build/os -I ../headers/build/os/support -I ../headers/private/. -I ../headers/private/kernel -I ../headers/private/libroot -I ../headers/private/shared -I ../headers/private/kernel/boot/platform/bios_ia32 -I ../headers/private/kernel/arch/x86 -I objects/haiku/x86_64/common/system/kernel -I ../headers/private/. -I ../headers/private/system -I ../headers/private/system/arch/x86_64 -I ../headers/private/shared -I ../headers/private/storage -I ../headers/private/fs_shell -I ../headers/private -I ../headers/build/host/linux -o "objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/kernel_interface.o"
- ...failed C++ objects/linux/x86_64/release/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/kernel_interface.o ...
- BUILD FAILURE:
- ...failed updating 10 target(s)...
- ...skipped 3 target(s)...
Add Comment
Please, Sign In to add comment