blob: e5f1f3c6b4b88b9a09b0fd79bb3e8aca9f1d9d88 [file] [log] [blame]
// 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;
};
// Describes a contiguous run of allocated blocks.
struct BlockRegion {
uint64 offset;
uint64 length;
};
[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);
// Retrieve information about allocated regions on the filesystem.
GetAllocatedRegions() -> (zx.status status, handle<vmo>? regions, uint64 count);
};