/** @file | |
EFI_FILE_PROTOCOL.Flush() member function for the Virtio Filesystem driver. | |
Copyright (C) 2020, Red Hat, Inc. | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#include "VirtioFsDxe.h" | |
EFI_STATUS | |
EFIAPI | |
VirtioFsSimpleFileFlush ( | |
IN EFI_FILE_PROTOCOL *This | |
) | |
{ | |
VIRTIO_FS_FILE *VirtioFsFile; | |
VIRTIO_FS *VirtioFs; | |
EFI_STATUS Status; | |
VirtioFsFile = VIRTIO_FS_FILE_FROM_SIMPLE_FILE (This); | |
VirtioFs = VirtioFsFile->OwnerFs; | |
if (!VirtioFsFile->IsOpenForWriting) { | |
return EFI_ACCESS_DENIED; | |
} | |
// | |
// FUSE_FLUSH is for regular files only. | |
// | |
if (!VirtioFsFile->IsDirectory) { | |
Status = VirtioFsFuseFlush ( | |
VirtioFs, | |
VirtioFsFile->NodeId, | |
VirtioFsFile->FuseHandle | |
); | |
if (EFI_ERROR (Status)) { | |
return Status; | |
} | |
} | |
Status = VirtioFsFuseFsyncFileOrDir ( | |
VirtioFs, | |
VirtioFsFile->NodeId, | |
VirtioFsFile->FuseHandle, | |
VirtioFsFile->IsDirectory | |
); | |
return Status; | |
} |