From: Filipe Manana <fdmanana@xxxxxxxx> 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 <fdmanana@xxxxxxxx> --- V2: Use the helper functions for opening and closing files or directories, introduced in the previous patch. ltp/fsstress.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 1169b840..13d4bebc 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -1790,15 +1790,16 @@ afsync_f(int opno, long r) struct iocb iocb; struct iocb *iocbs[] = { &iocb }; struct io_event event; + DIR *dir; 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, &dir); e = fd < 0 ? errno : 0; check_cwd(); if (fd < 0) { @@ -1815,7 +1816,7 @@ afsync_f(int opno, long r) printf("%d/%d: afsync - io_submit %s %d\n", procid, opno, f.path, e); free_pathname(&f); - close(fd); + close_file_or_dir(fd, dir); return; } if ((e = io_getevents(io_ctx, 1, 1, &event, NULL)) != 1) { @@ -1823,7 +1824,7 @@ afsync_f(int opno, long r) printf("%d/%d: afsync - io_getevents failed %d\n", procid, opno, e); free_pathname(&f); - close(fd); + close_file_or_dir(fd, dir); return; } @@ -1831,7 +1832,7 @@ afsync_f(int opno, long r) if (v) printf("%d/%d: afsync %s %d\n", procid, opno, f.path, e); free_pathname(&f); - close(fd); + close_file_or_dir(fd, dir); #endif } -- 2.11.0