From: Luis Chamberlain Date: Fri, 5 Nov 2021 16:44:32 +0000 (-0700) Subject: fsstress: improve error message on check_cwd() error X-Git-Tag: v2022.05.01~189 X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=commitdiff_plain;h=86db85c33c69da782cb91cae315a61d81425cffe fsstress: improve error message on check_cwd() error I ran into an error with generic/083 with xfs due to check_cwd() but why it failed is not clear because there are two types of failures: o stat64() failed (likely -ENOMEM is my guess) o the inode actually changed Throw a bone out to developers so that in case en error does happen they know which rabbit hole to go into. Cc: Anthony Iliopoulos Signed-off-by: Luis Chamberlain Reviewed-by: Darrick J. Wong Signed-off-by: Eryu Guan --- diff --git a/ltp/fsstress.c b/ltp/fsstress.c index ead7dd2b..003e0e49 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "global.h" #ifdef HAVE_BTRFSUTIL_H @@ -950,9 +951,22 @@ check_cwd(void) { #ifdef DEBUG struct stat64 statbuf; + int ret; + + ret = stat64(".", &statbuf); + if (ret != 0) { + fprintf(stderr, "fsstress: check_cwd stat64() returned %d with errno: %d (%s)\n", + ret, errno, strerror(errno)); + goto out; + } - if (stat64(".", &statbuf) == 0 && statbuf.st_ino == top_ino) + if (statbuf.st_ino == top_ino) return; + + fprintf(stderr, "fsstress: check_cwd statbuf.st_ino (%llu) != top_ino (%llu)\n", + (unsigned long long) statbuf.st_ino, + (unsigned long long) top_ino); +out: assert(chdir(homedir) == 0); fprintf(stderr, "fsstress: check_cwd failure\n"); abort();