Re: syncfs() method of fs
Hi Greg, I've added a comment about `syncfs` in the issue you mentioned. Thanks for pointing out the issue list. I'm looking into adding VFS documentation now, and after that I'll look into this. Thanks and Regards, SP On Thu, Feb 15, 2024 at 8:03 PM Gregory Nutt wrote: > > > However, I think it is a mistake to put the hooks in for syncfs and > > not implement syncfs for other file systems that need it. From what > > you say, syncfs() would be a no-op for those other file systems which > > is (usually) wrong. Perhaps they could just call fsync() from > > sync()? Doing nothing would be an error. > > > > If that is true, then you might want to open an issue. Or perhaps > > just add to https://github.com/apache/nuttx/issues/3399 > > Actually it won't "do nothing." It should return EBADF if the syncfs() > method is not provided.But that is error too. That is not the > correct return value. EBADF should signify "/fd/ is not a valid file > descriptor." which is not the case here. It should return ENOTSUP > >
Re: syncfs() method of fs
However, I think it is a mistake to put the hooks in for syncfs and not implement syncfs for other file systems that need it. From what you say, syncfs() would be a no-op for those other file systems which is (usually) wrong. Perhaps they could just call fsync() from sync()? Doing nothing would be an error. If that is true, then you might want to open an issue. Or perhaps just add to https://github.com/apache/nuttx/issues/3399 Actually it won't "do nothing." It should return EBADF if the syncfs() method is not provided. But that is error too. That is not the correct return value. EBADF should signify "/fd/ is not a valid file descriptor." which is not the case here. It should return ENOTSUP
Re: syncfs() method of fs
I have no idea what is going on with syncfs. There have been some recent changes: Documentation/ReleaseNotes/NuttX-12.1.0:* [#8092](https://github.com/apache/nuttx/pull/8092) fs: Map syncfs to fsync Documentation/ReleaseNotes/NuttX-12.3.0:* [#10764](https://github.com/apache/nuttx/pull/10764) add syncfs api for sync whole fs data syncfs was very recently added: commit 2bce0f404c37826bf2eae59cfe42fe1c80bd0c22 Author: guohao15 Date: Fri Sep 15 16:22:13 2023 +0800 fs:add syncfs api for sync whole fs data Signed-off-by: guohao15 I suspect that syncfs is needed for some 3rd party file system, perhaps littlefs? Or maybe it was just needed to port some application. syncsfs() and fsync() would apparently be interchangeable on other filesystems based on these comments and changes. --- a/include/unistd.h +++ b/include/unistd.h @@ -258,7 +258,6 @@ /* Helpers and legacy compatibility definitions */ -#define syncfs(f) fsync(f) #define fdatasync(f) fsync(f) #define getdtablesize(f) ((int)sysconf(_SC_OPEN_MAX)) #define getpagesize(f) ((int)sysconf(_SC_PAGESIZE)) @@ -441,6 +440,7 @@ int setregid(gid_t rgid, gid_t egid); int getentropy(FAR void *buffer, size_t length); void sync(void); +int syncfs(int fd); #if CONFIG_FORTIFY_SOURCE > 0 fortify_function(getcwd) FAR char *getcwd(FAR char *buf, However, I think it it is mistake to put the hooks in for syncfs and not implement syncfs for other file systems that need it. From what you say, syncfs() would be a no-op for those other file systems which is (usually) wrong. Perhaps they could just call fsync() from sync()? Doing nothing would be an error. If that is true, then you might want to open an issue. Or perhaps just add to https://github.com/apache/nuttx/issues/3399 On 2/15/2024 3:16 AM, Saurav Pal wrote: Hi Greg, Thanks for the info! Can you tell me the reason why none of the existing file systems in NuttX implement it? Regards, SP On Wed, Feb 14, 2024 at 9:27 PM Gregory Nutt wrote: It implementes the syncfs file system interface: https://linux.die.net/man/2/syncfs On 2/14/2024 8:16 AM, Saurav Pal wrote: Hi all, I was going through the codebase of different file systems, and I haven't yet understood the syncfs() method of mountpt operations. There aren't any existing filesystems in the codebase that implement it, and I couldn't understand what exactly is required from this method (like what it does, what side effects it's supposed to have and what is the intended reason for this method to exist). Can you please help me understand it? Thanks in advance. Regards, SP
Re: syncfs() method of fs
Hi Greg, Thanks for the info! Can you tell me the reason why none of the existing file systems in NuttX implement it? Regards, SP On Wed, Feb 14, 2024 at 9:27 PM Gregory Nutt wrote: > It implementes the syncfs file system interface: > https://linux.die.net/man/2/syncfs > > On 2/14/2024 8:16 AM, Saurav Pal wrote: > > Hi all, > > > > I was going through the codebase of different file systems, and I haven't > > yet understood the syncfs() method of mountpt operations. > > > > There aren't any existing filesystems in the codebase that implement it, > > and I couldn't understand what exactly is required from this method (like > > what it does, what side effects it's supposed to have and what is the > > intended reason for this method to exist). > > > > Can you please help me understand it? Thanks in advance. > > > > Regards, > > SP > > > >
Re: syncfs() method of fs
It implementes the syncfs file system interface: https://linux.die.net/man/2/syncfs On 2/14/2024 8:16 AM, Saurav Pal wrote: Hi all, I was going through the codebase of different file systems, and I haven't yet understood the syncfs() method of mountpt operations. There aren't any existing filesystems in the codebase that implement it, and I couldn't understand what exactly is required from this method (like what it does, what side effects it's supposed to have and what is the intended reason for this method to exist). Can you please help me understand it? Thanks in advance. Regards, SP
syncfs() method of fs
Hi all, I was going through the codebase of different file systems, and I haven't yet understood the syncfs() method of mountpt operations. There aren't any existing filesystems in the codebase that implement it, and I couldn't understand what exactly is required from this method (like what it does, what side effects it's supposed to have and what is the intended reason for this method to exist). Can you please help me understand it? Thanks in advance. Regards, SP