Add support for statvfs() to FUSE

Some desktop environments are now checking for free space before
copying files to a destination.

To support this, the FUSE filesystem needs to convert the statvfs()
system call to the relevent PDUs from [MS-RDPEFS]
This commit is contained in:
matt335672
2024-11-06 17:35:04 +00:00
parent 9c0a0a8c16
commit 5dc4fdbc2c
6 changed files with 309 additions and 4 deletions
+1
View File
@@ -32,6 +32,7 @@ enum NTSTATUS
STATUS_NO_MORE_FILES = 0x80000006,
STATUS_UNSUCCESSFUL = 0xc0000001,
STATUS_INFO_LENGTH_MISMATCH = 0xc0000004,
STATUS_NO_SUCH_FILE = 0xc000000f,
STATUS_ACCESS_DENIED = 0xc0000022,
STATUS_OBJECT_NAME_INVALID = 0xc0000033,
+21 -1
View File
@@ -30,7 +30,7 @@
/*
* File information classes (section 2.4)
*/
enum FS_INFORMATION_CLASS
enum FILE_INFORMATION_CLASS
{
FileAllocationInformation = 19, /* Set */
FileBasicInformation = 4, /* Query, Set */
@@ -52,6 +52,26 @@ enum FS_INFORMATION_CLASS
#define FILE_STD_INFORMATION_SIZE 22
#define FILE_END_OF_FILE_INFORMATION_SIZE 8
/*
* File System information classes (section 2.5)
*/
enum FILE_SYSTEM_INFORMATION_CLASS
{
FileFsVolumeInformation = 1,
FileFsSizeInformation = 3,
FileFsDeviceInformation = 4,
FileFsAttributeInformation = 5,
FileFsFullSizeInformation = 7
};
/*
* Size of structs above without trailing RESERVED fields (MS-RDPEFS
* 2.2.3.3.6)
*/
#define FILE_FS_SIZE_INFORMATION_SIZE 24
#define FILE_FS_DEVICE_INFORMATION_SIZE 8
#define FILE_FS_FULL_SIZE_INFORMATION_SIZE 32
/* Windows file attributes (section 2.6) */
#define W_FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define W_FILE_ATTRIBUTE_READONLY 0x00000001