blob: 7da4300f6ee0124571d085e957da8c18770cfcb2 [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.
#ifndef SRC_STORAGE_MINFS_METRICS_H_
#define SRC_STORAGE_MINFS_METRICS_H_
#include <fbl/macros.h>
#include <storage-metrics/fs-metrics.h>
using storage_metrics::FsMetrics;
namespace minfs {
class MinfsMetrics : public FsMetrics {
public:
MinfsMetrics() = default;
explicit MinfsMetrics(const ::llcpp::fuchsia::minfs::Metrics* metrics);
// Not copyable or movable
MinfsMetrics(const MinfsMetrics&) = delete;
MinfsMetrics& operator=(const MinfsMetrics&) = delete;
MinfsMetrics(MinfsMetrics&&) = delete;
MinfsMetrics& operator=(MinfsMetrics&&) = delete;
~MinfsMetrics() = default;
// Copies to fields of fidl structure the corresponding fields of MinfsMetrics
void CopyToFidl(::llcpp::fuchsia::minfs::Metrics* metrics) const;
// Prints the fields of MinfsMetrics and FsMetrics to file |stream|. Passes
// |success| to FsMetrics::Dump. See FsMetrics::Dump.
void Dump(FILE* stream, std::optional<bool> success = std::nullopt) const;
std::atomic<uint64_t> initialized_vmos;
std::atomic<uint32_t> init_dnum_count; // Top-level direct blocks only
std::atomic<uint32_t> init_inum_count; // Top-level indirect blocks only
std::atomic<uint32_t> init_dinum_count;
std::atomic<uint64_t> init_user_data_size;
std::atomic<uint64_t> init_user_data_ticks;
std::atomic<uint64_t> vnodes_opened_cache_hit;
};
} // namespace minfs
#endif // SRC_STORAGE_MINFS_METRICS_H_