1d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#!/bin/sh
2d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
3d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# Check decoding of btrfs ioctl w/ live ioctls.
4d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
5d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# WARNING: USE OF THIS TEST WILL MODIFY AN EXISTING BTRFS FILE SYSTEM
6d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
7d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# Typical usage:
8d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# mkfs.btrfs <dev>
9d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# mount <dev> /mnt
10d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# BTRFS_MOUNTPOINT=/mnt make check TESTS="btrfs-w"
11d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# umount /mnt
12d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
13d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes. "${srcdir=.}/init.sh"
14d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
15d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesif [ -z "${BTRFS_MOUNTPOINT}" ]; then
16d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes    skip_ "\$BTRFS_MOUNTPOINT not set"
17d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hugheselif [ ! -d "${BTRFS_MOUNTPOINT}" ]; then
18d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes    skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
19d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesfi
20d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
21d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughescheck_prog grep
2239bac055674d23770b9a724221b728e443196ea7Elliott Hughesrun_prog ../btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
2339bac055674d23770b9a724221b728e443196ea7Elliott Hughesrun_strace -a16 -eioctl $args > "$EXP"
24d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesgrep -v '^ioctl([012],' < "$LOG" > "$OUT"
25d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesmatch_diff "$OUT" "$EXP"
26