Yield before flushing io buffers in fsync (sys_fs) (#5506)

This commit is contained in:
elad 2019-03-08 18:07:14 +02:00 committed by Ani
parent 4ea76def7c
commit 3c9f03968c
3 changed files with 11 additions and 10 deletions

View File

@ -206,18 +206,18 @@ error_code cellFsLseek(u32 fd, s64 offset, u32 whence, vm::ptr<u64> pos)
return sys_fs_lseek(fd, offset, whence, pos);
}
error_code cellFsFdatasync(u32 fd)
error_code cellFsFdatasync(ppu_thread& ppu, u32 fd)
{
cellFs.trace("cellFsFdatasync(fd=%d)", fd);
return sys_fs_fdatasync(fd);
return sys_fs_fdatasync(ppu, fd);
}
error_code cellFsFsync(u32 fd)
error_code cellFsFsync(ppu_thread& ppu, u32 fd)
{
cellFs.trace("cellFsFsync(fd=%d)", fd);
return sys_fs_fsync(fd);
return sys_fs_fsync(ppu, fd);
}
error_code cellFsFGetBlockSize(u32 fd, vm::ptr<u64> sector_size, vm::ptr<u64> block_size)

View File

@ -1,4 +1,5 @@
#include "stdafx.h"
#include "sys_sync.h"
#include "sys_fs.h"
#include <mutex>
@ -1287,7 +1288,7 @@ error_code sys_fs_lseek(u32 fd, s64 offset, s32 whence, vm::ptr<u64> pos)
return CELL_OK;
}
error_code sys_fs_fdatasync(u32 fd)
error_code sys_fs_fdatasync(ppu_thread& ppu, u32 fd)
{
sys_fs.trace("sys_fs_fdadasync(fd=%d)", fd);
@ -1298,12 +1299,12 @@ error_code sys_fs_fdatasync(u32 fd)
return CELL_EBADF;
}
lv2_obj::sleep(ppu);
file->file.sync();
return CELL_OK;
}
error_code sys_fs_fsync(u32 fd)
error_code sys_fs_fsync(ppu_thread& ppu, u32 fd)
{
sys_fs.trace("sys_fs_fsync(fd=%d)", fd);
@ -1314,8 +1315,8 @@ error_code sys_fs_fsync(u32 fd)
return CELL_EBADF;
}
lv2_obj::sleep(ppu);
file->file.sync();
return CELL_OK;
}

View File

@ -374,8 +374,8 @@ error_code sys_fs_unlink(vm::cptr<char> path);
error_code sys_fs_access(vm::cptr<char> path, s32 mode);
error_code sys_fs_fcntl(u32 fd, u32 op, vm::ptr<void> arg, u32 size);
error_code sys_fs_lseek(u32 fd, s64 offset, s32 whence, vm::ptr<u64> pos);
error_code sys_fs_fdatasync(u32 fd);
error_code sys_fs_fsync(u32 fd);
error_code sys_fs_fdatasync(ppu_thread& ppu, u32 fd);
error_code sys_fs_fsync(ppu_thread& ppu, u32 fd);
error_code sys_fs_fget_block_size(u32 fd, vm::ptr<u64> sector_size, vm::ptr<u64> block_size, vm::ptr<u64> arg4, vm::ptr<s32> arg5);
error_code sys_fs_get_block_size(vm::cptr<char> path, vm::ptr<u64> sector_size, vm::ptr<u64> block_size, vm::ptr<u64> arg4);
error_code sys_fs_truncate(vm::cptr<char> path, u64 size);