#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2018 Red Hat, Inc.  All Rights Reserved.
#
# FS QA Test No. 132
#
# Catch inobt/on disk inode free state mismatches on V4 filesystems
#
. ./common/preamble
_begin_fstest auto quick

# Import common functions.
. ./common/filter
. ./common/quota



# we intentionally corrupt the filesystem, so don't check it after the test
_require_scratch_nocheck
_require_xfs_nocrc

# on success, we'll get a shutdown filesystem with a really noisy log message
# due to transaction cancellation.  Hence we don't want to check dmesg here.
_disable_dmesg_check

_scratch_mkfs -m crc=0 > $seqres.full 2>&1

# The files that EIO in the golden output changes if we have quotas enabled
# so leave it off.
_qmount_option "defaults"

# corrupt an inode in the root inode chunk
root_ino=$(_scratch_xfs_get_metadata_field 'rootino' 'sb 0')
corrupt_ino=$((root_ino + 15))
_scratch_xfs_set_metadata_field 'core.mode' 0100644 "inode $corrupt_ino"

_scratch_mount

# The corrupt inode should be tripped over during these initial file creates.
touch $SCRATCH_MNT/file{0,1,2,3,4,5}{0,1,2,3,4,5} 2>&1 | _filter_scratch

# success, all done
status=0
exit
