https://github.com/anuvu/puzzlefs Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. {{ message }} anuvu / puzzlefs Public * Notifications * Fork 5 * Star 31 License Apache-2.0 license 31 stars 5 forks Star Notifications * Code * Issues 15 * Pull requests 2 * Discussions * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights anuvu/puzzlefs This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 1 branch 0 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/a] Use Git or checkout with SVN using the web URL. [gh repo clone anuvu/] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @hallyn hallyn Merge pull request #87 from ariel-miculas/ replace-ostring-with-vec-in... ... ad91496 May 30, 2023 Merge pull request #87 from ariel-miculas/ replace-ostring-with-vec-in... ...-InodeMode Change OsString to Vec in InodeMode ad91496 Git stats * 170 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows builder common compression doc exe extractor format fsverity_helpers oci reader .gitignore Cargo.lock Cargo.toml LICENSE Makefile README.md rust-toolchain.toml View code PuzzleFS Design Goals OCIv2 Design doc TODO Implementation Contributing License README.md PuzzleFS Build Status PuzzleFS is a next-generation container filesystem. Design Goals * Do computation when we want to, i.e.: + Image building should be fast + Image mounting/reading should be fast + Optional "canonicalization" step in the middle * No full-tree walk required + mtree style walks of filesystems are not necessary with clever use of overlay + casync style generate-a-tar-then-diff is more for general purpose use where you don't want to have a special filesystem setup * Be simple enough to decode in the kernel + A primary motivator for our working on this at Cisco is direct-mount support OCIv2 Design doc https://hackmd.io/@cyphar/ociv2-brainstorm For the most part, I think this addresses things there except for two: * Explicit Minimal Metadata: this is mostly unaddressed because I didn't think about it very hard; there's no reason we couldn't just drop e.g. block devices from the spec, or at least add a note about discouraging their use. Perhaps we should make mtimes and such optional? But then canonicalization would be harder. Maybe this should be specified at image build time, sort of like the chunking algorithm is in our design. * Lazy fetch support: this seems directly at odds with the "direct mount" support at least if the direct mount code is to live in the kernel; we probably don't want to implement lazy fetch directly in the kernel, because it involves the network and lots of other stuff. However, this would be relatively easy to do using fuse, which suggests that perhaps we should choose a good language (e.g. rust :) for the implementation so that we could use the same code in the kernel and userspace, thus easily supporting this one. TODO * explore chunking algorithms * flesh out the rest of the file type metadata * consider what "minimal" metadata might look like * play around with zstd seekable compression a bit Implementation * format/ is the code for serializing/de-serializing the puzzlefs format * builder/ is the code for building a puzzlefs image * extractor/ is the code for extracting a puzzlefs image * mount/ is the code for fuse mounting a puzzlefs image * exe/ is the executable frontend for the above Contributing Contributions need to pass all static analysis. In addition, all commits must include a Signed-off-by: line in their description. This indicates that you certify the following statement, known as the Developer Certificate of Origin). You can automatically add this line to your commits by using git commit -s --amend. Developer Certificate of Origin Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 1 Letterman Drive Suite D4700 San Francisco, CA, 94129 Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. License puzzlefs is released under the Apache License, Version 2.0, and is: Copyright (C) 2020-2021 Cisco Systems, Inc. About No description, website, or topics provided. Resources Readme License Apache-2.0 license Stars 31 stars Watchers 9 watching Forks 5 forks Report repository Releases No releases published Packages 0 No packages published Contributors 3 * @ariel-miculas ariel-miculas Ariel Miculas * @tych0 tych0 Tycho Andersen * @hallyn hallyn Serge Hallyn Languages * Rust 99.2% * Other 0.8% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time.