diff --git a/LICENSE.md b/LICENSE.md index 541cc2b..233d9cc 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,7 @@ The MIT License (MIT) ------------------------- -Copyright (c) 2015 Arkadiusz Bulski +Copyright (c) 2015-2021 Arkadiusz Bulski Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -19,3 +19,4 @@ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/README.md b/README.md index de69be7..0c75b8b 100644 --- a/README.md +++ b/README.md @@ -4,26 +4,18 @@ Cameleonica is a prototype safe cryptographic steganographic advanced filesystem. -Features include confidentiality, authenticity, plausible deniability, permanent deletion, versioning, snapshots, atomicity, transactions, file and directory cloning, internal compression, non-transparent compression and hashing, deduplication, serializability, multiple-device replication and tiering. +Features include integrity, versioning, snapshots, atomicity, transactions, confidentiality, authenticity, permanent deletion, plausible deniability, file and directory cloning, internal compression, integration of compression and hashing, serializability, file-level replication and tiering. -Internal design includes atomic and ordered operations, diskless fsync, copy on write, segmented log-structured disk layout, copying garbage collector, complete inodes, complete dictionary, rings and chains abstract data structures, file-level replication and tiering. +(***) Internal design includes atomic and ordered operations, diskless fsync, copy on write, segmented log-structured disk layout, copying garbage collector, complete inodes, complete dictionary, rings and chains abstract data structures, file-level replication and tiering. Project status and roadmap ------------------------------ -Only design documentation is being developed at this point. You can help by reviewing these documents and posting questions or suggestions for improvement, just create a new Issue. Please do NOT submit Pull Requests, unless recording changes was enabled. It is impossible to diff odt files. +Only design documentation is being developed at this point. You can help by reviewing the combined document and posting questions or suggestions for improvement. Just create a new GitHub Issue. -- [Complete specification pdf](documentation/combined.pdf) (48 pages) +- [Complete specification pdf](documentation/combined.pdf) (46 pages) -Documentation is divided into sections: - -- Mission statement (6 pages) -- Ideas and Observations (20 pages) -- Preliminary design (currently edited, 10 pages) -- Python/Fuse implementation plan (currently edited, 6 pages) -- Questions and Answers (4 pages) - -Experimental code is also in the repository. +I recommend downloading it and opening in your favorite PDF viewer. Development notice ---------------------- @@ -31,3 +23,4 @@ Experimental code is also in the repository. Code will be developed in Python/FUSE and later possibly in-kernel. Documentation is created in LibreOffice, XMind and [draw.io](https://www.draw.io/). User experience design will be done in Glade. License is set to MIT Licence, unless something changes. + diff --git a/documentation/certificate.odt b/documentation/certificate.odt new file mode 100644 index 0000000..41d2e92 Binary files /dev/null and b/documentation/certificate.odt differ diff --git a/documentation/certificate.pdf b/documentation/certificate.pdf new file mode 100644 index 0000000..93e4543 Binary files /dev/null and b/documentation/certificate.pdf differ diff --git a/documentation/combined.odt b/documentation/combined.odt index 4b494bc..fdaf1d7 100644 Binary files a/documentation/combined.odt and b/documentation/combined.odt differ diff --git a/documentation/combined.pdf b/documentation/combined.pdf index 64901c8..c763092 100644 Binary files a/documentation/combined.pdf and b/documentation/combined.pdf differ diff --git a/documentation/cover.odt b/documentation/cover.odt index 2c4c64d..f9c81b7 100644 Binary files a/documentation/cover.odt and b/documentation/cover.odt differ diff --git a/documentation/cover.pdf b/documentation/cover.pdf index 6be05d1..a78584a 100644 Binary files a/documentation/cover.pdf and b/documentation/cover.pdf differ diff --git a/documentation/hiddenfiles.xml b/documentation/hiddenfiles.xml deleted file mode 100644 index a411fd6..0000000 --- a/documentation/hiddenfiles.xml +++ /dev/null @@ -1 +0,0 @@ -7VhNj5swEP01XKsADUmO3XS7vVSqlEPPBiZgxXgi43z113cMJiFAU9hlt1Wz5BDzxmN73ngeBsdfZscnxbbpN4xBON4kPjr+Z8fzXD9w6c8gpxKZVUCieGw7XYAV/wkWnFh0x2PIrzpqRKH59hqMUEqI9BXGlMLDdbc1iutZtyyBFrCKmGijP3is0xKde8EF/wo8SauZ3WBRWkIWbRKFO2nnczx/XVylOWPVWDbQPGUxHmqQ/+j4S4Woy1Z2XIIw3Fa0lX5ffmM9r1uB1H0cvNJhz8QOqhUX69KniosiGjD9Xcd/OKRcw2rLImM9UPYJS3UmrPkcj7lJBMtNIibUjjDjkW2vuRBLFKiKCfz11PyMs1a4gZolKC6ytMOyke5BaTjWIBvmE2AGWp2oi7XOLeOnKmX2/nDJrzexWFrPbeXI7J5KzkNfeKWGpbab5qCD5kDQDA876hYkuoixRASvkO+gcpRMmGmskZoX+02PXO/MruvrWSFhx1Apj2OQHQOGTe8/LQ+VHBBM2TtEDDnk7odssx/mmaEC6z3Auc1EOVqUAtMQozzwNTTG60cEgfV0N+qM9rFuFYFECY2KsVCt6Lpq0hQGJ0H7JHgiCc4oh2amByTLWhQ1WuaVsOsS71XDr1CRXt+K9EaoyNndCJ8/fa7yTUfgef7PK19DlEL1PFF7G5l6l5Dbe7uvhixG2NqLu5GQ6exvSkg12UANuXWiecEZZvhBqVNRXj5t6yw11pCDDjo95fJdt24XVF/dGuNlxG2/9C0xC7kkGugVlQjRW+QUm1lU9TTtzlhdvXomj9msRMQeqFvp6srt+MfOeU/mxzh0un6L+RVQMFRu98B882n9ptR/vEF9wDITogxz89fMg9WK/ygRTfl5xUTQ7eVrVmGrfTL0H38B \ No newline at end of file diff --git a/documentation/hiddenfiles1.png b/documentation/hiddenfiles1.png deleted file mode 100644 index 8f5c35c..0000000 Binary files a/documentation/hiddenfiles1.png and /dev/null differ diff --git a/documentation/hiddenfiles2.png b/documentation/hiddenfiles2.png deleted file mode 100644 index e7134a2..0000000 Binary files a/documentation/hiddenfiles2.png and /dev/null differ diff --git a/documentation/referenced/LWN, Orlov block allocator (15.12.2021 13_35_25).html b/documentation/referenced/LWN, Orlov block allocator (15.12.2021 13_35_25).html new file mode 100644 index 0000000..91426dc --- /dev/null +++ b/documentation/referenced/LWN, Orlov block allocator (15.12.2021 13_35_25).html @@ -0,0 +1,164 @@ + The Orlov block allocator [LWN.net] + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ +
| +
+ +
| +
+ +
+
+
+ / + / + +
+
+
+
+

The Orlov block allocator

+ +
+
+The performance of a file system is dependent on many things; one of the +crucial factors is just how that filesystem lays out files on the disk. In +general, it is best to keep related items together; a kernel compilation +will go more quickly if the files within the kernel source tree all live +close to each other on the disk. To achieve this goal, the ext2 and ext3 +filesystems have long tried to lay out the contents of a directory in the +same cylinder group (or, at least, in nearby groups). +

+In the real world, however, it turns out to be better, sometimes, to spread +things out. Imagine setting up a system with users' home directories in +/home. If all the first-level directories within /home +(i.e. the home directories for numerous users) are placed next to each +other, there may be no space left for the contents of those directores. +User files thus end up being placed far from the directories that contain +them, and performance suffers. The ext2 filesystem has suffered from this +sort of performance degradation for some time. +

+The 2.5.46 kernel contains a new block allocator which attempts to address +this problem. The new scheme, borrowed from BSD, is named the "Orlov +allocator," after its creator Grigory Orlov; he has posted a brief +description of the technique as it is used in the BSD kernels. The +Linux implementation, as implemented by +Alexander Viro, Andrew Morton, and Ted Ts'o, uses a similar technique but +adds a few changes. +

+Essentially, the Orlov algorithm tries to spread out "top-level" +directories, on the assumption that they are unrelated to each other. +Directories created in the root directory of a filesystem are considered +top-level directories; Ted has added a special inode flag that allows +the system administrator to mark other directories as being top-level +directories as well. If /home lives in the root filesystem (and +people do set up systems that way), a simple chattr command will +make the system treat it as a top-level directory. +

+When creating a directory which is not in a top-level directory, the +Orlov algorithm tries, as before, to put it into the same cylinder group as +its parent. A little more care is taken, however, to ensure that the +directory's contents will also be able to fit into that cylinder group; if +there are not many inodes or blocks available in the group, the directory +will be placed in a different cylinder group which has more resources +available. The result of all this, hopefully, is much better locality for +files which are truly related to each other and likely to be accessed +together. +

+As of this writing, only one benchmark +result with the new allocator has been posted. The results are +promising: the time required to traverse through a Linux kernel tree (a +dauntingly big thing, these days) was reduced by 30% or so. The Orlov +scheme needs more rigorous benchmarking; it also needs some serious stress +testing to demonstrate that performance does not degrade as the filesystem +is changed over time. But the initial results are encouraging. Linux has, once +again, benefitted from the ability to borrow good ideas from other free +kernels.


+ (Log in to post comments) +

+ +

+

+ +

+

The Orlov block allocator

+
+

Posted Nov 7, 2002 14:29 UTC (Thu) by jlnance (guest, #4081) + [Link] +

+ I think you have this backwards. The old ext2/3 code always tried to
spread directories out. The new code does not EXCEPT for top level
directories. +
+ +
+
+ +
+
+

+ +

+
+
+
+
+
+
+
+

+ + Copyright © 2002, Eklektix, Inc.
+ + Comments and public postings are copyrighted by their creators.
+ Linux is a registered trademark of Linus Torvalds
+
+

+ + + + + + \ No newline at end of file diff --git a/documentation/sticker.odt b/documentation/sticker.odt new file mode 100644 index 0000000..466fd12 Binary files /dev/null and b/documentation/sticker.odt differ diff --git a/documentation/sticker.pdf b/documentation/sticker.pdf new file mode 100644 index 0000000..dc533c5 Binary files /dev/null and b/documentation/sticker.pdf differ