From: Filipe Manana Date: Thu, 4 Apr 2019 16:30:06 +0000 (+0100) Subject: fsstress: allow afsync on directories too X-Git-Tag: v2022.05.01~1191 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=e1a9b1db892e1c559223752735e21575f2e08e9f;p=users%2Fhch%2Fxfstests-dev.git fsstress: allow afsync on directories too Currently the afsync function can only be performed against regular files. Allow it to operate on directories too, to increase test coverage and allow for chances of finding bugs in a filesystem's implementation of fsync against directories. Signed-off-by: Filipe Manana Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 72c574daa..3ec191430 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -1395,8 +1395,8 @@ open_file_or_dir(pathname_t *name, int flags) return fd; if (fd == -1 && errno != EISDIR) return fd; - /* Directories can not be opened in write mode. */ - flags &= ~O_WRONLY; + /* Directories can not be opened in write mode nor direct mode. */ + flags &= ~(O_WRONLY | O_DIRECT); flags |= O_RDONLY | O_DIRECTORY; return open_path(name, flags); } @@ -1774,13 +1774,13 @@ afsync_f(int opno, long r) struct io_event event; init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { + if (!get_fname(FT_REGFILE | FT_DIRm, r, &f, NULL, NULL, &v)) { if (v) printf("%d/%d: afsync - no filename\n", procid, opno); free_pathname(&f); return; } - fd = open_path(&f, O_WRONLY | O_DIRECT); + fd = open_file_or_dir(&f, O_WRONLY | O_DIRECT); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) {