mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-29 05:38:21 +00:00
syscalls: fsync
This commit is contained in:
+11
-1
@@ -1654,6 +1654,15 @@ static int ext2_rename(vnode_t *sourcedir, char *oldname, vnode_t *targetdir, ch
|
||||
return err;
|
||||
}
|
||||
|
||||
static int ext2_sync(vnode_t *vnode) {
|
||||
int e = vmmcache_sync(vnode);
|
||||
ext2fs_t *fs = (ext2fs_t *)vnode->vfs;
|
||||
// TODO don't sync the entire disk but rather only the inodes and blocks
|
||||
int e2 = vmmcache_sync(fs->backing);
|
||||
// only the first errors are reported
|
||||
return e ? e : e2;
|
||||
}
|
||||
|
||||
static int ext2_inactive(vnode_t *vnode) {
|
||||
ext2node_t *node = (ext2node_t *)vnode;
|
||||
ext2fs_t *fs = (ext2fs_t *)vnode->vfs;
|
||||
@@ -1829,7 +1838,8 @@ static vops_t vnops = {
|
||||
.inactive = ext2_inactive,
|
||||
.rename = ext2_rename,
|
||||
.getpage = ext2_getpage,
|
||||
.putpage = ext2_putpage
|
||||
.putpage = ext2_putpage,
|
||||
.sync = ext2_sync
|
||||
};
|
||||
|
||||
void ext2_init() {
|
||||
|
||||
@@ -260,7 +260,8 @@ static vops_t vnops = {
|
||||
.resize = pipefs_enodev,
|
||||
.rename = pipefs_enodev,
|
||||
.putpage = pipefs_enodev,
|
||||
.getpage = pipefs_enodev
|
||||
.getpage = pipefs_enodev,
|
||||
.sync = pipefs_enodev
|
||||
};
|
||||
|
||||
static void ctor(scache_t *cache, void *obj) {
|
||||
|
||||
@@ -186,7 +186,8 @@ static vops_t vnops = {
|
||||
.rename = sockfs_enodev,
|
||||
.ioctl = sockfs_ioctl,
|
||||
.putpage = sockfs_enodev,
|
||||
.getpage = sockfs_enodev
|
||||
.getpage = sockfs_enodev,
|
||||
.sync = sockfs_enodev
|
||||
};
|
||||
|
||||
static void ctor(scache_t *cache, void *obj) {
|
||||
|
||||
@@ -493,6 +493,11 @@ static int tmpfs_putpage(vnode_t *node, uintmax_t offset, struct page_t *page) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tmpfs_sync(vnode_t *node) {
|
||||
// sync is a no-op on tmpfs
|
||||
return 0;
|
||||
}
|
||||
|
||||
static vfsops_t vfsops = {
|
||||
.mount = tmpfs_mount,
|
||||
.root = tmpfs_root
|
||||
@@ -520,7 +525,8 @@ static vops_t vnops = {
|
||||
.resize = tmpfs_resize,
|
||||
.rename = tmpfs_rename,
|
||||
.getpage = tmpfs_getpage,
|
||||
.putpage = tmpfs_putpage
|
||||
.putpage = tmpfs_putpage,
|
||||
.sync = tmpfs_sync
|
||||
};
|
||||
|
||||
static tmpfsnode_t *newnode(vfs_t *vfs, int type) {
|
||||
|
||||
Reference in New Issue
Block a user