| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.minfs; |
| |
| using zx; |
| |
| // Describes metrics about the running Minfs instance. |
| struct Metrics { |
| uint64 create_calls; |
| uint64 create_calls_success; |
| uint64 create_ticks; |
| |
| uint64 read_calls; |
| uint64 read_size; |
| uint64 read_ticks; |
| |
| uint64 write_calls; |
| uint64 write_size; |
| uint64 write_ticks; |
| |
| uint64 truncate_calls; |
| uint64 truncate_ticks; |
| |
| uint64 unlink_calls; |
| uint64 unlink_calls_success; |
| uint64 unlink_ticks; |
| |
| uint64 rename_calls; |
| uint64 rename_calls_success; |
| uint64 rename_ticks; |
| |
| // Minfs initializes entire VMOs at once. |
| // The following fields track this information. |
| |
| uint64 initialized_vmos; |
| uint32 init_dnum_count; // Top-level direct blocks only |
| uint32 init_inum_count; // Top-level indirect blocks only |
| uint32 init_dinum_count; |
| uint64 init_user_data_size; |
| uint64 init_user_data_ticks; |
| |
| // Minfs looks up Vnodes by ino internally (using "VnodeGet"). |
| // The following fields track this information. |
| |
| uint64 vnodes_opened; |
| uint64 vnodes_opened_cache_hit; |
| uint64 vnode_open_ticks; |
| |
| // Minfs may look up Vnodes by name (using "LookupInternal"). |
| // The following fields track this information. |
| |
| uint64 lookup_calls; |
| uint64 lookup_calls_success; |
| uint64 lookup_ticks; |
| }; |
| |
| [Layout="Simple"] |
| interface Minfs { |
| // Acquires metrics about the currently running filesystem. |
| GetMetrics() -> (zx.status status, Metrics? metrics); |
| |
| // Toggle the metrics collection system on or off. |
| ToggleMetrics(bool enable) -> (zx.status status); |
| }; |