diff options
author | Luis Chamberlain <mcgrof@kernel.org> | 2021-11-05 09:44:32 -0700 |
---|---|---|
committer | Eryu Guan <guaneryu@gmail.com> | 2021-11-07 21:58:17 +0800 |
commit | 86db85c33c69da782cb91cae315a61d81425cffe (patch) | |
tree | 0b15bf601895709770db32964688db83c28e2ad4 | |
parent | dda3e2452d4e419ce511e765352bb36a2d706200 (diff) | |
download | xfstests-dev-86db85c33c69da782cb91cae315a61d81425cffe.tar.gz |
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 <ailiopoulos@suse.de>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
-rw-r--r-- | ltp/fsstress.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/ltp/fsstress.c b/ltp/fsstress.c index ead7dd2bb4..003e0e49a1 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -9,6 +9,7 @@ #include <sys/uio.h> #include <stddef.h> #include <stdbool.h> +#include <string.h> #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(); |