]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/VirtioFsDxe/SimpleFsFlush.c
OvmfPkg/VirtioFsDxe: implement EFI_FILE_PROTOCOL.Flush()
[mirror_edk2.git] / OvmfPkg / VirtioFsDxe / SimpleFsFlush.c
CommitLineData
334c13e1
LE
1/** @file\r
2 EFI_FILE_PROTOCOL.Flush() member function for the Virtio Filesystem driver.\r
3\r
4 Copyright (C) 2020, Red Hat, Inc.\r
5\r
6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
7**/\r
8\r
9#include "VirtioFsDxe.h"\r
10\r
11EFI_STATUS\r
12EFIAPI\r
13VirtioFsSimpleFileFlush (\r
14 IN EFI_FILE_PROTOCOL *This\r
15 )\r
16{\r
867cb9f6
LE
17 VIRTIO_FS_FILE *VirtioFsFile;\r
18 VIRTIO_FS *VirtioFs;\r
19 EFI_STATUS Status;\r
20\r
21 VirtioFsFile = VIRTIO_FS_FILE_FROM_SIMPLE_FILE (This);\r
22 VirtioFs = VirtioFsFile->OwnerFs;\r
23\r
24 if (!VirtioFsFile->IsOpenForWriting) {\r
25 return EFI_ACCESS_DENIED;\r
26 }\r
27\r
28 //\r
29 // FUSE_FLUSH is for regular files only.\r
30 //\r
31 if (!VirtioFsFile->IsDirectory) {\r
32 Status = VirtioFsFuseFlush (VirtioFs, VirtioFsFile->NodeId,\r
33 VirtioFsFile->FuseHandle);\r
34 if (EFI_ERROR (Status)) {\r
35 return Status;\r
36 }\r
37 }\r
38\r
39 Status = VirtioFsFuseFsyncFileOrDir (VirtioFs, VirtioFsFile->NodeId,\r
40 VirtioFsFile->FuseHandle, VirtioFsFile->IsDirectory);\r
41 return Status;\r
334c13e1 42}\r