mufs: properly sync file size and check file size in mufs_write() and mufs_read() respectively
This commit is contained in:
parent
496b2182e3
commit
ab233bfd33
1 changed files with 9 additions and 2 deletions
|
@ -96,6 +96,9 @@ size_t mufs_read(struct mufs_file *file, void *data, size_t len)
|
|||
if (!(file->mode & MUFS_READ))
|
||||
return 0;
|
||||
|
||||
if (file->va >= file->tree->file_size)
|
||||
return 0;
|
||||
|
||||
if (!(ret = mufs_tree_read(file->tree, data, file->va, len)))
|
||||
return 0;
|
||||
|
||||
|
@ -122,8 +125,12 @@ size_t mufs_write(struct mufs_file *file, const void *data, size_t len)
|
|||
|
||||
file->va += ret;
|
||||
|
||||
if (file->tree->file_size <= file->va && mufs_sync_tree(file->tree) < 0)
|
||||
return 0;
|
||||
if (file->tree->file_size <= file->va) {
|
||||
file->tree->file_size = file->va;
|
||||
|
||||
if (mufs_sync_tree(file->tree) < 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue