diff --git a/cmds-fi-du.c b/cmds-fi-du.c index ef43259d..f106f45b 100644 --- a/cmds-fi-du.c +++ b/cmds-fi-du.c @@ -41,6 +41,7 @@ #include "interval_tree_generic.h" #include "help.h" +#include "fsfeatures.h" static int summarize = 0; static unsigned unit_mode = UNITS_RAW; diff --git a/convert/main.c b/convert/main.c index 48fb2f95..39c6eeb4 100644 --- a/convert/main.c +++ b/convert/main.c @@ -40,6 +40,7 @@ #include "help.h" #include "mkfs/common.h" #include "convert/common.h" +#include "fsfeatures.h" #if BTRFSCONVERT_EXT2 #include diff --git a/fsfeatures.h b/fsfeatures.h new file mode 100644 index 00000000..513ed1e7 --- /dev/null +++ b/fsfeatures.h @@ -0,0 +1,50 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License v2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 021110-1307, USA. + */ + +#ifndef __BTRFS_FSFEATURES_H__ +#define __BTRFS_FSFEATURES_H__ + +#include "kerncompat.h" + +#define BTRFS_MKFS_DEFAULT_NODE_SIZE SZ_16K +#define BTRFS_MKFS_DEFAULT_FEATURES \ + (BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF \ + | BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA) + +/* + * Avoid multi-device features (RAID56) and mixed block groups + */ +#define BTRFS_CONVERT_ALLOWED_FEATURES \ + (BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF \ + | BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL \ + | BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO \ + | BTRFS_FEATURE_INCOMPAT_COMPRESS_LZOv2 \ + | BTRFS_FEATURE_INCOMPAT_BIG_METADATA \ + | BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF \ + | BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA \ + | BTRFS_FEATURE_INCOMPAT_NO_HOLES) + +#define BTRFS_FEATURE_LIST_ALL (1ULL << 63) + +void btrfs_list_all_fs_features(u64 mask_disallowed); +char* btrfs_parse_fs_features(char *namelist, u64 *flags); +void btrfs_process_fs_features(u64 flags); +void btrfs_parse_features_to_string(char *buf, u64 flags); +void print_kernel_version(FILE *stream, u32 version); +u32 get_running_kernel_version(void); +int btrfs_check_nodesize(u32 nodesize, u32 sectorsize, u64 features); + +#endif diff --git a/mkfs/main.c b/mkfs/main.c index 1c327f1f..0823b4fb 100644 --- a/mkfs/main.c +++ b/mkfs/main.c @@ -45,6 +45,7 @@ #include "list_sort.h" #include "help.h" #include "mkfs/common.h" +#include "fsfeatures.h" static u64 index_cnt = 2; static int verbose = 1; diff --git a/utils.c b/utils.c index d24993e8..9de1ca2b 100644 --- a/utils.c +++ b/utils.c @@ -50,6 +50,7 @@ #include "volumes.h" #include "ioctl.h" #include "commands.h" +#include "fsfeatures.h" #ifndef BLKDISCARD #define BLKDISCARD _IO(0x12,119) diff --git a/utils.h b/utils.h index b72260c4..c5ff19f9 100644 --- a/utils.h +++ b/utils.h @@ -30,28 +30,9 @@ #define BTRFS_MKFS_SYSTEM_GROUP_SIZE SZ_4M #define BTRFS_MKFS_SMALL_VOLUME_SIZE SZ_1G -#define BTRFS_MKFS_DEFAULT_NODE_SIZE SZ_16K -#define BTRFS_MKFS_DEFAULT_FEATURES \ - (BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF \ - | BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA) - -/* - * Avoid multi-device features (RAID56) and mixed block groups - */ -#define BTRFS_CONVERT_ALLOWED_FEATURES \ - (BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF \ - | BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL \ - | BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO \ - | BTRFS_FEATURE_INCOMPAT_COMPRESS_LZOv2 \ - | BTRFS_FEATURE_INCOMPAT_BIG_METADATA \ - | BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF \ - | BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA \ - | BTRFS_FEATURE_INCOMPAT_NO_HOLES) #define BTRFS_CONVERT_META_GROUP_SIZE SZ_32M -#define BTRFS_FEATURE_LIST_ALL (1ULL << 63) - #define BTRFS_SCAN_MOUNTED (1ULL << 0) #define BTRFS_SCAN_LBLKID (1ULL << 1) @@ -87,13 +68,6 @@ void units_set_mode(unsigned *units, unsigned mode); void units_set_base(unsigned *units, unsigned base); -void btrfs_list_all_fs_features(u64 mask_disallowed); -char* btrfs_parse_fs_features(char *namelist, u64 *flags); -void btrfs_process_fs_features(u64 flags); -void btrfs_parse_features_to_string(char *buf, u64 flags); -void print_kernel_version(FILE *stream, u32 version); -u32 get_running_kernel_version(void); - #define PREP_DEVICE_ZERO_END (1U << 0) #define PREP_DEVICE_DISCARD (1U << 1) #define PREP_DEVICE_VERBOSE (1U << 2) @@ -223,7 +197,6 @@ static inline u64 div_factor(u64 num, int factor) } int btrfs_tree_search2_ioctl_supported(int fd); -int btrfs_check_nodesize(u32 nodesize, u32 sectorsize, u64 features); unsigned int get_unit_mode_from_arg(int *argc, char *argv[], int df_mode); int string_is_numerical(const char *str);