From bf5d0ce3c870d2025363596d653f9b301f9d7f29 Mon Sep 17 00:00:00 2001 From: hyche Date: Fri, 19 May 2017 15:36:28 +0700 Subject: [PATCH] btrfs_shell for testing btrfs code. * Adding Jamfile in src/tools/btrfs_shell and include the subdir in src/tools/Jamfile * Adding system_dependencies.h in btrfs source to include all the system headers * fs_shell wrapping for btrfs source. If FS_SHELL is defined, compile with fs_shell headers instead. * Change macro BTRFS_SHELL to FS_SHELL * Adding btrfs_std_ops function: fs_shell now can recognize and load module --- .../kernel/file_systems/btrfs/Attribute.cpp | 5 -- .../file_systems/btrfs/AttributeIterator.cpp | 3 - .../kernel/file_systems/btrfs/BPlusTree.cpp | 5 -- .../kernel/file_systems/btrfs/BPlusTree.h | 3 - .../kernel/file_systems/btrfs/CRCTable.cpp | 2 +- .../kernel/file_systems/btrfs/CachedBlock.h | 1 - .../kernel/file_systems/btrfs/Chunk.cpp | 3 - .../file_systems/btrfs/DirectoryIterator.cpp | 4 -- .../kernel/file_systems/btrfs/Inode.cpp | 5 -- src/add-ons/kernel/file_systems/btrfs/Inode.h | 4 -- .../kernel/file_systems/btrfs/Volume.cpp | 12 ---- .../kernel/file_systems/btrfs/Volume.h | 1 - src/add-ons/kernel/file_systems/btrfs/btrfs.h | 6 +- .../kernel/file_systems/btrfs/crc_table.cpp | 3 +- .../file_systems/btrfs/kernel_interface.cpp | 55 +++++++++++++----- .../file_systems/btrfs/system_dependencies.h | 45 +++++++++++++++ src/tools/Jamfile | 1 + src/tools/btrfs_shell/Jamfile | 57 +++++++++++++++++++ 18 files changed, 147 insertions(+), 68 deletions(-) create mode 100644 src/add-ons/kernel/file_systems/btrfs/system_dependencies.h create mode 100644 src/tools/btrfs_shell/Jamfile diff --git a/src/add-ons/kernel/file_systems/btrfs/Attribute.cpp b/src/add-ons/kernel/file_systems/btrfs/Attribute.cpp index a73a54dbcd..355300587a 100644 --- a/src/add-ons/kernel/file_systems/btrfs/Attribute.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/Attribute.cpp @@ -9,11 +9,6 @@ #include "Attribute.h" - -#include -#include -#include - #include "BPlusTree.h" #include "CRCTable.h" #include "Utility.h" diff --git a/src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp b/src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp index 760194414c..3b67e83adb 100644 --- a/src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/AttributeIterator.cpp @@ -6,9 +6,6 @@ #include "AttributeIterator.h" -#include -#include - //#define TRACE_BTRFS #ifdef TRACE_BTRFS diff --git a/src/add-ons/kernel/file_systems/btrfs/BPlusTree.cpp b/src/add-ons/kernel/file_systems/btrfs/BPlusTree.cpp index 2128c0c877..af8a031ff5 100644 --- a/src/add-ons/kernel/file_systems/btrfs/BPlusTree.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/BPlusTree.cpp @@ -9,13 +9,8 @@ #include "BPlusTree.h" - #include "CachedBlock.h" -#include -#include -#include - //#define TRACE_BTRFS #ifdef TRACE_BTRFS diff --git a/src/add-ons/kernel/file_systems/btrfs/BPlusTree.h b/src/add-ons/kernel/file_systems/btrfs/BPlusTree.h index 7f7babed29..a9e7ee278b 100644 --- a/src/add-ons/kernel/file_systems/btrfs/BPlusTree.h +++ b/src/add-ons/kernel/file_systems/btrfs/BPlusTree.h @@ -8,9 +8,6 @@ #include "btrfs.h" - -#include - #include "Volume.h" diff --git a/src/add-ons/kernel/file_systems/btrfs/CRCTable.cpp b/src/add-ons/kernel/file_systems/btrfs/CRCTable.cpp index 0c5736c24a..b621f757ed 100644 --- a/src/add-ons/kernel/file_systems/btrfs/CRCTable.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/CRCTable.cpp @@ -7,7 +7,7 @@ */ -#include +#include "system_dependencies.h" //! CRC 03667067501 table, as generated by crc_table.cpp diff --git a/src/add-ons/kernel/file_systems/btrfs/CachedBlock.h b/src/add-ons/kernel/file_systems/btrfs/CachedBlock.h index 1fafbb4377..59ff119302 100644 --- a/src/add-ons/kernel/file_systems/btrfs/CachedBlock.h +++ b/src/add-ons/kernel/file_systems/btrfs/CachedBlock.h @@ -7,7 +7,6 @@ //! interface for the block cache -#include #include "Volume.h" diff --git a/src/add-ons/kernel/file_systems/btrfs/Chunk.cpp b/src/add-ons/kernel/file_systems/btrfs/Chunk.cpp index 3d804d5074..9ce70032ec 100644 --- a/src/add-ons/kernel/file_systems/btrfs/Chunk.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/Chunk.cpp @@ -9,9 +9,6 @@ #include "Chunk.h" -#include -#include - //#define TRACE_BTRFS #ifdef TRACE_BTRFS diff --git a/src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp b/src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp index 62241e686e..ded0351b15 100644 --- a/src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/DirectoryIterator.cpp @@ -5,10 +5,6 @@ #include "DirectoryIterator.h" - -#include -#include - #include "CRCTable.h" diff --git a/src/add-ons/kernel/file_systems/btrfs/Inode.cpp b/src/add-ons/kernel/file_systems/btrfs/Inode.cpp index 0932acd6f0..666000ee2f 100644 --- a/src/add-ons/kernel/file_systems/btrfs/Inode.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/Inode.cpp @@ -7,11 +7,6 @@ #include "Inode.h" - -#include -#include -#include - #include "BPlusTree.h" #include "CachedBlock.h" #include "Utility.h" diff --git a/src/add-ons/kernel/file_systems/btrfs/Inode.h b/src/add-ons/kernel/file_systems/btrfs/Inode.h index 0213e88a04..683ae03fb1 100644 --- a/src/add-ons/kernel/file_systems/btrfs/Inode.h +++ b/src/add-ons/kernel/file_systems/btrfs/Inode.h @@ -7,10 +7,6 @@ #define INODE_H -#include -#include -#include - #include "btrfs.h" #include "Volume.h" diff --git a/src/add-ons/kernel/file_systems/btrfs/Volume.cpp b/src/add-ons/kernel/file_systems/btrfs/Volume.cpp index 6f44df5d33..188604154e 100644 --- a/src/add-ons/kernel/file_systems/btrfs/Volume.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/Volume.cpp @@ -9,18 +9,6 @@ #include "Volume.h" - -#include -#include -#include -#include -#include - -#include -#include - -#include - #include "BPlusTree.h" #include "CachedBlock.h" #include "Chunk.h" diff --git a/src/add-ons/kernel/file_systems/btrfs/Volume.h b/src/add-ons/kernel/file_systems/btrfs/Volume.h index dabdca5507..1171a2553b 100644 --- a/src/add-ons/kernel/file_systems/btrfs/Volume.h +++ b/src/add-ons/kernel/file_systems/btrfs/Volume.h @@ -6,7 +6,6 @@ #ifndef VOLUME_H #define VOLUME_H -#include #include "btrfs.h" diff --git a/src/add-ons/kernel/file_systems/btrfs/btrfs.h b/src/add-ons/kernel/file_systems/btrfs/btrfs.h index ef2a69cc3f..2791cf2c13 100644 --- a/src/add-ons/kernel/file_systems/btrfs/btrfs.h +++ b/src/add-ons/kernel/file_systems/btrfs/btrfs.h @@ -6,11 +6,7 @@ #define BTRFS_H -#include - -#include -#include -#include +#include "system_dependencies.h" typedef uint64 fileblock_t; // file block number diff --git a/src/add-ons/kernel/file_systems/btrfs/crc_table.cpp b/src/add-ons/kernel/file_systems/btrfs/crc_table.cpp index 1413f95656..e35f2173a3 100644 --- a/src/add-ons/kernel/file_systems/btrfs/crc_table.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/crc_table.cpp @@ -17,8 +17,7 @@ */ -#include -#include +#include "system_dependencies.h" typedef unsigned int uint32 ; diff --git a/src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp index 303d416272..c4051259b3 100644 --- a/src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp @@ -5,17 +5,6 @@ */ -#include -#include -#include - -#include -#include -#include -#include -#include -#include - #include "Attribute.h" #include "AttributeIterator.h" #include "btrfs.h" @@ -266,7 +255,7 @@ btrfs_io(fs_volume* _volume, fs_vnode* _node, void* _cookie, io_request* request Volume* volume = (Volume*)_volume->private_volume; Inode* inode = (Inode*)_node->private_node; -#ifndef BTRFS_SHELL +#ifndef FS_SHELL if (io_request_is_write(request) && volume->IsReadOnly()) { notify_io_request(request, B_READ_ONLY_DEVICE); return B_READ_ONLY_DEVICE; @@ -274,7 +263,7 @@ btrfs_io(fs_volume* _volume, fs_vnode* _node, void* _cookie, io_request* request #endif if (inode->FileCache() == NULL) { -#ifndef BTRFS_SHELL +#ifndef FS_SHELL notify_io_request(request, B_BAD_VALUE); #endif return B_BAD_VALUE; @@ -752,6 +741,23 @@ btrfs_remove_attr(fs_volume* _volume, fs_vnode* vnode, return EROFS; } +// #pragma mark - + + +static status_t +btrfs_std_ops(int32 op, ...) +{ + switch (op) { + case B_MODULE_INIT: + return B_OK; + case B_MODULE_UNINIT: + return B_OK; + + default: + return B_ERROR; + } +} + fs_volume_ops gBtrfsVolumeOps = { &btrfs_unmount, @@ -839,7 +845,7 @@ static file_system_module_info sBtrfsFileSystem = { { "file_systems/btrfs" B_CURRENT_FS_API_VERSION, 0, - NULL, + btrfs_std_ops, }, "btrfs", // short_name @@ -854,7 +860,28 @@ static file_system_module_info sBtrfsFileSystem = { &btrfs_mount, + + /* capability querying operations */ NULL, + + NULL, // validate_resize + NULL, // validate_move + NULL, // validate_set_content_name + NULL, // validate_set_content_parameters + NULL, // validate_initialize, + + /* shadow partition modification */ + NULL, // shadow_changed + + /* writing */ + NULL, // defragment + NULL, // repair + NULL, // resize + NULL, // move + NULL, // set_content_name + NULL, // set_content_parameters + NULL, // initialize + NULL // unitialize }; diff --git a/src/add-ons/kernel/file_systems/btrfs/system_dependencies.h b/src/add-ons/kernel/file_systems/btrfs/system_dependencies.h new file mode 100644 index 0000000000..dd337bee57 --- /dev/null +++ b/src/add-ons/kernel/file_systems/btrfs/system_dependencies.h @@ -0,0 +1,45 @@ +#ifndef _SYSTEM_DEPENDENCIES_H +#define _SYSTEM_DEPENDENCIES_H + + +#ifdef FS_SHELL + +// This needs to be included before the fs_shell wrapper +#include +#include + +#include "fssh_api_wrapper.h" +#include "fssh_auto_deleter.h" + +#else // !FS_SHELL + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif // !FS_SHELL + + +#endif // _SYSTEM_DEPENDENCIES diff --git a/src/tools/Jamfile b/src/tools/Jamfile index 680646e837..699c7666dd 100644 --- a/src/tools/Jamfile +++ b/src/tools/Jamfile @@ -88,6 +88,7 @@ SEARCH on [ FGristFiles SubInclude HAIKU_TOP src tools addattr ; SubInclude HAIKU_TOP src tools anyboot ; SubInclude HAIKU_TOP src tools bfs_shell ; +SubInclude HAIKU_TOP src tools btrfs_shell ; SubInclude HAIKU_TOP src tools cppunit ; SubInclude HAIKU_TOP src tools create_repository_config ; SubInclude HAIKU_TOP src tools elfsymbolpatcher ; diff --git a/src/tools/btrfs_shell/Jamfile b/src/tools/btrfs_shell/Jamfile new file mode 100644 index 0000000000..9f46bb3971 --- /dev/null +++ b/src/tools/btrfs_shell/Jamfile @@ -0,0 +1,57 @@ +SubDir HAIKU_TOP src tools btrfs_shell ; + +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems btrfs ] ; + +# prevent inclusion of HaikuBuildCompatibility.h +DEFINES += HAIKU_BUILD_COMPATIBILITY_H ; + +# set some additional defines +{ + local defines = + #BTRFS_BIG_ENDIAN_ONLY + FS_SHELL + TRACE_BTRFS # ENABLE DEBUGGING + ; + + defines = [ FDefines $(defines) ] ; + SubDirCcFlags $(defines) -Wno-multichar ; + SubDirC++Flags $(defines) -Wno-multichar -fno-rtti ; + HOST_LINKFLAGS += -lz ; # zlib link +} + + +# platform specific libraries +local fsShellCommandLibs ; +if ! $(HOST_PLATFORM_BEOS_COMPATIBLE) { + fsShellCommandLibs = $(HOST_NETWORK_LIBS) ; +} + +if ! $(HOST_PLATFORM_BEOS_COMPATIBLE) { + UseHeaders [ FDirName $(HAIKU_TOP) headers build os ] : true ; +} + +UsePrivateHeaders shared storage fs_shell ; +UseHeaders [ FDirName $(HAIKU_TOP) headers private ] : true ; +UseHeaders [ FDirName $(HAIKU_TOP) src tools fs_shell ] ; + +local btrfsSources = + Attribute.cpp + AttributeIterator.cpp + BPlusTree.cpp + Chunk.cpp + CRCTable.cpp + DirectoryIterator.cpp + Inode.cpp + Volume.cpp + kernel_interface.cpp +; + +BuildPlatformMergeObject btrfs.o : $(btrfsSources) ; + +BuildPlatformMain btrfs_shell + : + : + btrfs.o + fs_shell.a $(libHaikuCompat) $(HOST_LIBSUPC++) $(HOST_LIBSTDC++) + $(HOST_LIBROOT) $(fsShellCommandLibs) +;