Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support attribute enumeration for files and directories #636

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

mikee47
Copy link
Contributor

@mikee47 mikee47 commented Jan 29, 2022

This PR provides some additional attribute enumeration features.

  • Add lfs_statcfg, lfs_dir_readcfg functions

    Extends regular lfs_stat by querying set of attribute at the same time.
    Improves performance when generating directory listings.

  • Add lfs_file_getattr, lfs_file_setattr, lfs_file_removeattr

    Supports attribute manipulation on open files.
    Important for updating things like security descriptors, timestamps, etc.

    Note: Includes checks for registered attributes.
    Attempting to remove registered attributes fails.
    This could be handled by marking registered attribute as dirty.

  • Add lfs_file_enumattr() function

    Allows file attributes to be efficiently enumerated,
    required for filesystem backup, etc.

  • Support opening handle to directory

    Allows attributes to be accessed more efficiently, and enumerated

@mikee47
Copy link
Contributor Author

mikee47 commented Feb 19, 2022

Note: These changes are part of the Sming LittleFS library, used by Sming.

@geky geky added enhancement needs minor version new functionality only allowed in minor versions labels Mar 21, 2022
@xiaoxiang781216
Copy link

look like some feature is also implemented in: #636

@geky
Copy link
Member

geky commented Apr 14, 2022

Hi, yes, sorry this PR did not go in this release, due to time I was only looking at PRs with smaller scopes this release. I'm slow to bring in new APIs since they need to be supported for quite a while for backwards compatibility reasons.

This looks like a very interesting PR, thank @mikee47 for putting it together.

In particular I will need to see how it interacts with #580 and #513 (though #513 may come in much later due to being an API breaking change)

mikee47 and others added 4 commits May 15, 2024 07:57
Extends regular `lfs_stat` by querying set of attribute at the same time.
Improves performance of directory listings.
Supports attribute manipulation on open files.
Important for updating things like security descriptors, timestamps, etc.

Note: Attempting to remove registered attributes fails.
This could be handled by marking registered attribute as dirty.
Allows file attributes to be efficiently enumerated,
required for filesystem backup, etc.
Allows attributes to be accessed more efficiently, and enumerated
@mikee47 mikee47 force-pushed the feature/upstream-enum-attr branch from caa0b9d to a146db8 Compare May 15, 2024 09:13
@geky-bot
Copy link
Collaborator

Tests passed ✓, Code: 18212 B (+6.7%), Stack: 1440 B (+0.0%), Structs: 832 B (+2.5%)
Code Stack Structs Coverage
Default 18212 B (+6.7%) 1440 B (+0.0%) 832 B (+2.5%) Lines 2410/2721 lines (-4.4%)
Readonly 7014 B (+13.2%) 448 B (+0.0%) 832 B (+2.5%) Branches 1266/1682 branches (-3.3%)
Threadsafe 19156 B (+6.9%) 1440 B (+0.0%) 840 B (+2.4%) Benchmarks
Multiversion 18268 B (+6.7%) 1440 B (+0.0%) 836 B (+2.5%) Readed 29369693876 B (+0.0%)
Migrate 19904 B (+6.1%) 1744 B (+0.0%) 836 B (+2.5%) Proged 1482874766 B (+0.0%)
Error-asserts 18960 B (+6.8%) 1432 B (+0.0%) 832 B (+2.5%) Erased 1568888832 B (+0.0%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement needs minor version new functionality only allowed in minor versions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants