Re: FAT32 statfs(2) inode usage
- Reply: Stefan Esser : "Re: FAT32 statfs(2) inode usage"
- In reply to: Ben Woods: "Re: FAT32 statfs(2) inode usage"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 07 Mar 2023 14:11:57 UTC
On Tue, 7 Mar 2023, at 6:20 PM, Ben Woods wrote:
> On Tue, 7 Mar 2023, at 6:11 PM, Stefan Esser wrote:
>>
>> I could implement a counter that provides a useful value for f_ffree by
>> counting all file and directory creations and removals from the root
>> directory of a FAT12/FAT16 file system.
>
> If I’m right, the file system could easily be mounted outside of
> FreeBSD on another machine that doesn’t maintain the counter. For
> example, a USB stick shared between machines. Trying to infer state
> from past events is always hard. Instead, how hard would it be to have
> the kernel count the current number of root directory entries at the
> time the statfs request is issued (live)?
I've noticed the following code is used for enforcing the limit of root directory entities when creating a file or directory on a FAT filesystem. Could msdosfs_statfs use something similar to determine the current count of root directory entities?
Source file: sys/fs/msdosfs/msdosfs_vnops.c
Functions: msdosfs_create() and msdosfs_mkdir()
----------
/*
* If this is the root directory and there is no space left we
* can't do anything. This is because the root directory can not
* change size.
*/
if (pdep->de_StartCluster == MSDOSFSROOT
&& pdep->de_fndoffset >= pdep->de_FileSize) {
error = ENOSPC;
goto bad;
}
----------
--
From: Ben Woods
woodsb02@freebsd.org