blob: 16f57ef8e33a6eaa3837bec43e36e0dfae2f777c [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;
/// Describes metrics about the running Minfs instance.
[ForDeprecatedCBindings]
struct Metrics {
fuchsia.storage.metrics.FsMetrics fs_metrics;
/// Minfs initializes entire VMOs at once.
/// The following fields track this information.
uint64 initialized_vmos;
/// Top-level direct blocks only
uint32 init_dnum_count;
/// Top-level indirect blocks only
uint32 init_inum_count;
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;
/// The number of bytes in dirty cache for which we have not issued writes yet.
/// The number is filesystem block aligned.
uint64 dirty_bytes;
};
struct MountState {
/// True if the fileystem is operational in readonly state. There may have been
/// writes during mount or during replaying journal.
bool readonly_after_initialization;
/// True if the mounted filesystem is collecting metrics.
bool collect_metrics;
/// True if the mounted filesystem is in verbose mode.
bool verbose;
/// True if the journalled writes were allowed during mount.
bool repair_filesystem;
/// True if the journaling is enabled.
bool use_journal;
/// True is dirty cache is enabled for minfs.
bool dirty_cache_enabled;
};
/// Describes a contiguous run of allocated blocks.
[ForDeprecatedCBindings]
struct BlockRegion {
uint64 offset;
uint64 length;
};
[ForDeprecatedCBindings]
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, zx.handle:VMO? regions, uint64 count);
/// Get mount state.
GetMountState() -> (zx.status status, MountState? mount_state);
};