blob: 8f6c6ff4386c0697ca680deea4e98fc6522dd175 [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;
using fuchsia.storage.metrics as metrics;
// Describes metrics about the running Minfs instance.
struct Metrics {
metrics.FsMetrics fs_metrics;
// 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_cache_hit;
};
// Describes a contiguous run of allocated blocks.
struct BlockRegion {
uint64 offset;
uint64 length;
};
[Layout = "Simple"]
protocol 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);
};