blob: f1ae0f30394852433d2b6e27823ba8d1ad25f1ca [file] [log] [blame]
// Copyright 2019 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.
/// Stats for calls. These stats track completed calls - they may or may not have
/// succeeded. Unless specified otherwise , time units are in nanoseconds and
/// data transferred is in bytes
struct CallStatRaw {
/// Minimum time taken by a request to be served.
uint64 minimum_latency;
/// Maximum time taken by a request to be served.
uint64 maximum_latency;
/// Total time spent to serve requests.
uint64 total_time_spent;
/// Total number of calls.
uint64 total_calls;
/// byte_transferred may mean different things in different context. For
/// example, read and write may use it for bytes read/written, whereas
/// create/lseek may use bytes_transferred for file name length or number
/// of bytes lseek-ed from current position.
/// bytes_transferred has special meaning if the succeeded or failed.
/// On success:
/// Partitally succeeded calls, bytes fetched is less than bytes requested,
/// can be considered as successful. To keep latency and time_spent numbers
/// accurate, on success, bytes transferred is number bytes returned to
/// caller. It is NOT the number of bytes fetched from underlying subsystem
/// and it is NOT number of bytes requested by the caller.
/// On failure:
/// On failure, bytes_transferred is the number of bytes requested by the
/// caller.
uint64 bytes_transferred;
struct CallStat {
/// CallStat keeps track of the successful commands and failed commands
/// seperately as successful commands may generate completely different stats
/// than failed commands - a write() to read-only file handle may fail
/// in nanoseconds and if the stats tracked together, it will skew the
/// numbers.
CallStatRaw success;
CallStatRaw failure;
struct FsMetrics {
/// Call stats for create
CallStat create;
/// Call stats for read
CallStat read;
/// Call stats for write
CallStat write;
/// Call stats for truncate
CallStat truncate;
/// Call stats for unlink
CallStat unlink;
/// Call stats for rename
CallStat rename;
/// Call stats for directory lookups
CallStat lookup;
/// Call stats for open. This may or may
/// not include directory lookup during open
CallStat open;