commit | 895e23fb293d47e565f731d9c1c136aa2491a81b | [log] [tgz] |
---|---|---|
author | Sean Klein <smklein@google.com> | Thu Feb 07 07:43:25 2019 -0800 |
committer | CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org> | Tue Feb 12 03:52:15 2019 +0000 |
tree | aecd1ab18c127a19c48749d414d6df0ccc983475 | |
parent | 52059d0841223d5c3001d1204d37e511f747cb28 [diff] |
[fdio][ns] Reimplement local filesystem in safe C++ - Fix incorrect accounting of namespace refcounting (debug asserts revealed that in the previous implementation, the refcount commonly became negative). Utilize fbl::RefPtr to to automatically track references. - Alter API of |fdio_ns_destroy| to free the namespace when all strong references go out of scope. All (known) clients within Fuchsia have ignored the "in-use" error, which would have caused leaks. - Alter API of |fdio_ns_bind| to close the supplied handle on failure. - Encapsulate and isolate logic for local vnodes, connections, and filesystems into distinct classes. Minimize surface area between "safe C++" API and "raw C" API. - Add reference counting to local vnodes, which will safely permit usage of their remote objects, even if the node is unlinked. - Reimplement "flat namespace" exporting logic to track a prefix string in a single StringBuffer, populated once. This version is more efficient, as it does not require re-constructing the path back to root when each remote node is encountered. - Add multiple tests for exporting, shadowing, re-binding, destruction, etc. TEST=Multiple tests added in /boot/sys/namespace-test Change-Id: I5f908e3837061c352dc4b749dd6892015e8a2969
Pink + Purple == Fuchsia (a new operating system)
Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.
Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.
See Getting Started.
See the documentation.