1// Copyright 2018 The Fuchsia Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5library fuchsia.minfs; 6 7using zx; 8 9// Describes metrics about the running Minfs instance. 10struct Metrics { 11 uint64 create_calls; 12 uint64 create_calls_success; 13 uint64 create_ticks; 14 15 uint64 read_calls; 16 uint64 read_size; 17 uint64 read_ticks; 18 19 uint64 write_calls; 20 uint64 write_size; 21 uint64 write_ticks; 22 23 uint64 truncate_calls; 24 uint64 truncate_ticks; 25 26 uint64 unlink_calls; 27 uint64 unlink_calls_success; 28 uint64 unlink_ticks; 29 30 uint64 rename_calls; 31 uint64 rename_calls_success; 32 uint64 rename_ticks; 33 34 // Minfs initializes entire VMOs at once. 35 // The following fields track this information. 36 37 uint64 initialized_vmos; 38 uint32 init_dnum_count; // Top-level direct blocks only 39 uint32 init_inum_count; // Top-level indirect blocks only 40 uint32 init_dinum_count; 41 uint64 init_user_data_size; 42 uint64 init_user_data_ticks; 43 44 // Minfs looks up Vnodes by ino internally (using "VnodeGet"). 45 // The following fields track this information. 46 47 uint64 vnodes_opened; 48 uint64 vnodes_opened_cache_hit; 49 uint64 vnode_open_ticks; 50 51 // Minfs may look up Vnodes by name (using "LookupInternal"). 52 // The following fields track this information. 53 54 uint64 lookup_calls; 55 uint64 lookup_calls_success; 56 uint64 lookup_ticks; 57}; 58 59[Layout="Simple"] 60interface Minfs { 61 // Acquires metrics about the currently running filesystem. 62 0x8A000001: GetMetrics() -> (zx.status status, Metrics? metrics); 63 64 // Toggle the metrics collection system on or off. 65 0x8A000002: ToggleMetrics(bool enable) -> (zx.status status); 66}; 67