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 <fdmanana@suse.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
Filipe Manana
2019-04-04 17:30:06 +01:00
committed by Eryu Guan
parent 2c492c4d16
commit e1a9b1db89
+4 -4
View File
@@ -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) {