aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuis Chamberlain <mcgrof@kernel.org>2021-11-05 09:44:32 -0700
committerEryu Guan <guaneryu@gmail.com>2021-11-07 21:58:17 +0800
commit86db85c33c69da782cb91cae315a61d81425cffe (patch)
tree0b15bf601895709770db32964688db83c28e2ad4
parentdda3e2452d4e419ce511e765352bb36a2d706200 (diff)
downloadxfstests-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.c16
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();