summaryrefslogtreecommitdiff
path: root/source4/ntvfs/posix/pvfs_flush.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/ntvfs/posix/pvfs_flush.c')
-rw-r--r--source4/ntvfs/posix/pvfs_flush.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/source4/ntvfs/posix/pvfs_flush.c b/source4/ntvfs/posix/pvfs_flush.c
index d21f257201..c1d8820c43 100644
--- a/source4/ntvfs/posix/pvfs_flush.c
+++ b/source4/ntvfs/posix/pvfs_flush.c
@@ -46,23 +46,27 @@ NTSTATUS pvfs_flush(struct ntvfs_module_context *ntvfs,
struct pvfs_state *pvfs = ntvfs->private_data;
struct pvfs_file *f;
- if (io->flush.in.file.fnum != 0xFFFF) {
+ switch (io->generic.level) {
+ case RAW_FLUSH_FLUSH:
f = pvfs_find_fd(pvfs, req, io->flush.in.file.fnum);
if (!f) {
return NT_STATUS_INVALID_HANDLE;
}
pvfs_flush_file(pvfs, f);
return NT_STATUS_OK;
- }
- if (!(pvfs->flags & PVFS_FLAG_STRICT_SYNC)) {
- return NT_STATUS_OK;
- }
+ case RAW_FLUSH_ALL:
+ if (!(pvfs->flags & PVFS_FLAG_STRICT_SYNC)) {
+ return NT_STATUS_OK;
+ }
- /* they are asking to flush all open files */
- for (f=pvfs->files.list;f;f=f->next) {
- pvfs_flush_file(pvfs, f);
+ /* they are asking to flush all open files */
+ for (f=pvfs->files.list;f;f=f->next) {
+ pvfs_flush_file(pvfs, f);
+ }
+
+ return NT_STATUS_OK;
}
- return NT_STATUS_OK;
+ return NT_STATUS_INVALID_LEVEL;
}