You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.5 KiB
97 lines
2.5 KiB
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
# Copyright (c) 2016-2018 Oracle and/or its affiliates. All Rights Reserved.
|
|
# Copyright (c) International Business Machines Corp., 2001
|
|
|
|
TST_TESTFUNC="do_test"
|
|
TST_NEEDS_CMDS="nfsstat"
|
|
|
|
. nfs_lib.sh
|
|
|
|
get_calls()
|
|
{
|
|
local name=$1
|
|
local field=$2
|
|
local nfs_f=$3
|
|
local calls=
|
|
local opt=
|
|
[ "$name" = "rpc" ] && opt="r" || opt="n"
|
|
|
|
if [ -n "$LTP_NETNS" -o "$nfs_f" = "nfs" ]; then
|
|
calls="$(grep $name /proc/net/rpc/$nfs_f | cut -d' ' -f$field)"
|
|
ROD nfsstat -c$opt | grep -q "$calls"
|
|
echo "$calls"
|
|
return
|
|
fi
|
|
|
|
calls=$(tst_rhost_run -c "grep $name /proc/net/rpc/$nfs_f" | \
|
|
cut -d' ' -f$field)
|
|
tst_rhost_run -s -c "nfsstat -s$opt" | grep -q "$calls"
|
|
echo "$calls"
|
|
}
|
|
|
|
# PURPOSE: Performs simple copies and removes to verify statistic
|
|
# tracking using the 'nfsstat' command and /proc/net/rpc
|
|
do_test()
|
|
{
|
|
tst_res TINFO "checking RPC calls for server/client"
|
|
|
|
local server_calls="$(get_calls rpc 2 nfsd)"
|
|
local client_calls="$(get_calls rpc 2 nfs)"
|
|
|
|
tst_res TINFO "calls $server_calls/$client_calls"
|
|
|
|
tst_res TINFO "Checking for tracking of RPC calls for server/client"
|
|
cat /proc/cpuinfo > nfsstat01.tmp
|
|
|
|
local new_server_calls="$(get_calls rpc 2 nfsd)"
|
|
local new_client_calls="$(get_calls rpc 2 nfs)"
|
|
tst_res TINFO "new calls $new_server_calls/$new_client_calls"
|
|
|
|
if [ "$new_server_calls" -le "$server_calls" ]; then
|
|
tst_res TFAIL "server RPC calls not increased"
|
|
else
|
|
tst_res TPASS "server RPC calls increased"
|
|
fi
|
|
|
|
if [ "$new_client_calls" -le "$client_calls" ]; then
|
|
tst_res TFAIL "client RPC calls not increased"
|
|
else
|
|
tst_res TPASS "client RPC calls increased"
|
|
fi
|
|
|
|
tst_res TINFO "checking NFS calls for server/client"
|
|
local field=
|
|
case $VERSION in
|
|
2) field=13
|
|
;;
|
|
*) field=15
|
|
;;
|
|
esac
|
|
|
|
server_calls="$(get_calls proc$VERSION $field nfsd)"
|
|
client_calls="$(get_calls proc$VERSION $field nfs)"
|
|
tst_res TINFO "calls $server_calls/$client_calls"
|
|
|
|
tst_res TINFO "Checking for tracking of NFS calls for server/client"
|
|
rm -f nfsstat01.tmp
|
|
|
|
new_server_calls="$(get_calls proc$VERSION $field nfsd)"
|
|
new_client_calls="$(get_calls proc$VERSION $field nfs)"
|
|
tst_res TINFO "new calls $new_server_calls/$new_client_calls"
|
|
|
|
if [ "$new_server_calls" -le "$server_calls" ]; then
|
|
tst_res TFAIL "server NFS calls not increased"
|
|
else
|
|
tst_res TPASS "server NFS calls increased"
|
|
fi
|
|
|
|
if [ "$new_client_calls" -le "$client_calls" ]; then
|
|
tst_res TFAIL "client NFS calls not increased"
|
|
else
|
|
tst_res TPASS "client NFS calls increased"
|
|
fi
|
|
}
|
|
|
|
tst_run
|