diff --git a/fsfeatures.c b/fsfeatures.c index 7d85d60f..13ad0308 100644 --- a/fsfeatures.c +++ b/fsfeatures.c @@ -225,3 +225,26 @@ u32 get_running_kernel_version(void) return version; } +int btrfs_check_nodesize(u32 nodesize, u32 sectorsize, u64 features) +{ + if (nodesize < sectorsize) { + error("illegal nodesize %u (smaller than %u)", + nodesize, sectorsize); + return -1; + } else if (nodesize > BTRFS_MAX_METADATA_BLOCKSIZE) { + error("illegal nodesize %u (larger than %u)", + nodesize, BTRFS_MAX_METADATA_BLOCKSIZE); + return -1; + } else if (nodesize & (sectorsize - 1)) { + error("illegal nodesize %u (not aligned to %u)", + nodesize, sectorsize); + return -1; + } else if (features & BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS && + nodesize != sectorsize) { + error( + "illegal nodesize %u (not equal to %u for mixed block group)", + nodesize, sectorsize); + return -1; + } + return 0; +} diff --git a/utils.c b/utils.c index bba29305..5b983375 100644 --- a/utils.c +++ b/utils.c @@ -2266,29 +2266,6 @@ int btrfs_tree_search2_ioctl_supported(int fd) return ret; } -int btrfs_check_nodesize(u32 nodesize, u32 sectorsize, u64 features) -{ - if (nodesize < sectorsize) { - error("illegal nodesize %u (smaller than %u)", - nodesize, sectorsize); - return -1; - } else if (nodesize > BTRFS_MAX_METADATA_BLOCKSIZE) { - error("illegal nodesize %u (larger than %u)", - nodesize, BTRFS_MAX_METADATA_BLOCKSIZE); - return -1; - } else if (nodesize & (sectorsize - 1)) { - error("illegal nodesize %u (not aligned to %u)", - nodesize, sectorsize); - return -1; - } else if (features & BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS && - nodesize != sectorsize) { - error("illegal nodesize %u (not equal to %u for mixed block group)", - nodesize, sectorsize); - return -1; - } - return 0; -} - /* * Copy a path argument from SRC to DEST and check the SRC length if it's at * most PATH_MAX and fits into DEST. DESTLEN is supposed to be exact size of