diff --git a/mkfs/xfs_mkfs.c b/../xfs_mkfs.c.bak index 9dd0e79..49e3224 100644 --- a/mkfs/xfs_mkfs.c +++ b/../xfs_mkfs.c.bak @@ -13,6 +13,8 @@ #include "libfrog/crc32cselftest.h" #include "proto.h" #include +#include +#include #define TERABYTES(count, blog) ((uint64_t)(count) << (40 - (blog))) #define GIGABYTES(count, blog) ((uint64_t)(count) << (30 - (blog))) @@ -3998,6 +4000,23 @@ cfgfile_parse( cli->cfgfile); } +static unsigned int get_system_kver(void) +{ + const char *kver = getenv("KVER"); + struct utsname utsname; + int a, b, c; + + if (!kver) { + uname(&utsname); + kver = utsname.release; + } + + if (sscanf(kver, "%d.%d.%d", &a, &b, &c) != 3) + return LINUX_VERSION_CODE; + + return KERNEL_VERSION(a,b,c); +} + int main( int argc, @@ -4077,7 +4096,15 @@ main( }; struct list_head buffer_list; + unsigned int kver; int error; + + /* turn bigtime & inobtcnt back off if running under older kernels */ + kver = get_system_kver(); + if (kver < KERNEL_VERSION(5,10,0)) { + dft.sb_feat.inobtcnt = false; + dft.sb_feat.bigtime = false; + } platform_uuid_generate(&cli.uuid); progname = basename(argv[0]);