mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
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:
+4
-4
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user