#!/bin/bash TS_TOPDIR="${0%/*}/../.." TS_DESC="drop page caches related to a file" . "$TS_TOPDIR"/functions.sh ts_init "$*" ts_check_test_command "$TS_CMD_FADVISE" ts_check_test_command "$TS_CMD_FINCORE" ts_check_test_command "$TS_CMD_FINDMNT" ts_check_prog "dd" ts_check_prog "sleep" ts_cd "$TS_OUTDIR" FILE="ddtest" BS=4k COUNT=8 FILE_FS="$("$TS_CMD_FINDMNT" -nr -o FSTYPE -T "$PWD")" if [[ "$FILE_FS" = "tmpfs" ]]; then ts_skip "fincore does not work on tmpfs" fi create_file() { dd if=/dev/zero of="$FILE" bs=$BS count=$COUNT conv=fsync >& /dev/null } { create_file "$TS_CMD_FINCORE" "$FILE" echo create_file echo "whole file" "$TS_CMD_FADVISE" "$FILE" echo status: $? "$TS_CMD_FINCORE" "$FILE" echo create_file echo "offset: 8192" "$TS_CMD_FADVISE" -o 8192 "$FILE" echo status: $? "$TS_CMD_FINCORE" "$FILE" echo create_file echo "length: 16384" "$TS_CMD_FADVISE" -l 16384 "$FILE" echo status: $? "$TS_CMD_FINCORE" "$FILE" echo create_file echo "offset: 8192, length: 16384 fd: 42" "$TS_CMD_FADVISE" -o 8192 -l 16384 --fd 42 42<"$FILE" echo status: $? "$TS_CMD_FINCORE" "$FILE" echo rm "$FILE" } >> "$TS_OUTPUT" 2>> "$TS_ERRLOG" ts_finalize