On latest mkfs.xfs, it does not allow to format a block device which is smaller than 300MB. There are options to ignore this validation but it is unsupported feature, so it is better to increase the loopback image size to "supported size" == 300MB. reference: https://lore.kernel.org/all/164738662491.3191861.15611882856331908607.stgit@magnolia/ Fixes #18568 Closes scylladb/scylladb#18620
38 lines
1.3 KiB
Python
Executable File
38 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright 2018-present ScyllaDB
|
|
#
|
|
|
|
#
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import os
|
|
import sys
|
|
import shutil
|
|
from scylla_util import *
|
|
from subprocess import run, DEVNULL
|
|
|
|
if __name__ == '__main__':
|
|
if os.getuid() > 0:
|
|
print('Requires root permission.')
|
|
sys.exit(1)
|
|
|
|
if not shutil.which('mkfs.xfs'):
|
|
pkg_install('xfsprogs')
|
|
|
|
os.makedirs('/var/tmp/mnt', exist_ok=True)
|
|
run('dd if=/dev/zero of=/var/tmp/kernel-check.img bs=1M count=300', shell=True, check=True, stdout=DEVNULL, stderr=DEVNULL)
|
|
run('mkfs.xfs /var/tmp/kernel-check.img', shell=True, check=True, stdout=DEVNULL, stderr=DEVNULL)
|
|
run('mount /var/tmp/kernel-check.img /var/tmp/mnt -o loop', shell=True, check=True, stdout=DEVNULL, stderr=DEVNULL)
|
|
ret = run('iotune --fs-check --evaluation-directory /var/tmp/mnt --default-log-level error', shell=True).returncode
|
|
run('umount /var/tmp/mnt', shell=True, check=True)
|
|
shutil.rmtree('/var/tmp/mnt')
|
|
os.remove('/var/tmp/kernel-check.img')
|
|
if ret == 0:
|
|
print('This is a supported kernel version.')
|
|
else:
|
|
print('Please upgrade to a newer kernel version.')
|
|
print(' see https://docs.scylladb.com/troubleshooting/error_messages/kb_fs_not_qualified_aio/ for details')
|
|
sys.exit(ret)
|