Thread (3 messages) 3 messages, 3 authors, 2023-09-26

Re: [RFC PATCH 2/3] add statmnt(2) syscall

From: Miklos Szeredi <miklos@szeredi.hu>
Date: 2023-09-26 14:34:08
Also in: linux-fsdevel, linux-man, linux-security-module, lkml

On Tue, 26 Sept 2023 at 16:19, Florian Weimer [off-list ref] wrote:
getdents gets away with this buffer size because applications can copy
out all the data from struct dirent if they need long-term storage.
They have to do that because the usual readdir interface overwrites the
buffer, potentially at the next readdir call.  This means the buffer
size does not introduce an amount of memory fragmention that is
dependent on the directory size.

With an opaque, pointer-carrying struct, copying out the data is not
possible in a generic fashion.  Only the parts that the application
knows about can be copied out.  So I think it's desirable to have a
fairly exact allocation.
Okay, so let's add a 'size' field to the struct, which is set to the
size used (as opposed to the size of the buffer).   That should solve
copying without wasting a single byte of memory.

Otherwise the format is fully copyable, since the strings are denoted
with an offset, which doesn't change after the buffer is copied.

Thanks,
Miklos
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help