Skip to content

FList format #11

@muhamadazmy

Description

@muhamadazmy

It's time we move away from the current flist structure.

May be use sqlite to it's full potential to optimize file query. An entry per directory is very inefficient for file access, and make it very hard to implement the fuse layer using the inode api (although i did it in the rust implementation) i had to implement a caching layer (and had to do lots of data copying) to make it work properly.

I suggest something like

inode | parent-inode | entry

Entry can still be a capnp object but with a more simplified schema

struct Inode {
    name    @0: Text;
    size    @1: UInt64;           # in bytes

    attributes: union {
        dir     @2: Dir;
        file    @3: File;
        link    @4: Link;
        special @5: Special;
    }

    aclkey           @6: Text;    # is pointer to ACL # FIXME: need to be int
    modificationTime @7: UInt32;
    creationTime     @8: UInt32;
}

I would also love to move away from capnp alltogether, although it's very size efficient it's not that good to work against in memory, u still have to copy all your data out to be able to use it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions