Details
-
Bug
-
Resolution: Fixed
-
Major
-
Lustre 2.9.0
-
3
-
9223372036854775807
Description
In lfs.c the mntdf() function does not propagate errors from llapi_obd_statfs(). In fact it always returns 0 (except when an invalid pool is specified). This means that 'lfs df' will not fail in some cases that it probably should. For example in the following case
# lfs df /mnt/lustre UUID 1K-blocks Used Available Use% Mounted on lustre-MDT0000_UUID : Input/output error lustre-MDT0001_UUID 125368 1692 114316 1% /mnt/lustre[MDT:1] error: llapi_obd_statfs: opening '/mnt/lustre': Cannot send after transport endpoint shutdown (108) lustre-OST0000_UUID 350360 13900 316988 4% /mnt/lustre[OST:0] lustre-OST0001_UUID 350360 13904 316984 4% /mnt/lustre[OST:1] filesystem summary: 700720 27804 633972 4% /mnt/lustre # echo $? 0
Importantly this also means that the lfs_df_check() function from test-framework.sh which is used by client_up() and clients_up() is broken:
lfs_df_check() {
local clients=${1:-$CLIENTS}
if [ -z "$clients" ]; then
$LFS df $MOUNT
else
$PDSH $clients "$LFS df $MOUNT" > /dev/null
fi
}
clients_up() {
# not every config has many clients
sleep 1
lfs_df_check
}
client_up() {
# usually checked on particular client or locally
sleep 1
lfs_df_check $1
}