mirror of
https://github.com/torvalds/linux.git
synced 2026-05-13 00:28:54 +02:00
Add complete infrastructure for per-subvolume I/O metrics collection and reporting to the MDS. This enables administrators to monitor I/O patterns at the subvolume granularity, which is useful for multi-tenant CephFS deployments. This patch adds: - CEPHFS_FEATURE_SUBVOLUME_METRICS feature flag for MDS negotiation - CEPH_SUBVOLUME_ID_NONE constant (0) for unknown/unset state - Red-black tree based metrics tracker for efficient per-subvolume aggregation with kmem_cache for entry allocations - Wire format encoding matching the MDS C++ AggregatedIOMetrics struct - Integration with the existing CLIENT_METRICS message - Recording of I/O operations from file read/write and writeback paths - Debugfs interfaces for monitoring (metrics/subvolumes, metrics/metric_features) Metrics tracked per subvolume include: - Read/write operation counts - Read/write byte counts - Read/write latency sums (for average calculation) The metrics are periodically sent to the MDS as part of the existing metrics reporting infrastructure when the MDS advertises support for the SUBVOLUME_METRICS feature. CEPH_SUBVOLUME_ID_NONE enforces subvolume_id immutability. Following the FUSE client convention, 0 means unknown/unset. Once an inode has a valid (non-zero) subvolume_id, it should not change during the inode's lifetime. Signed-off-by: Alex Markuze <amarkuze@redhat.com> Reviewed-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
16 lines
433 B
Makefile
16 lines
433 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for CEPH filesystem.
|
|
#
|
|
|
|
obj-$(CONFIG_CEPH_FS) += ceph.o
|
|
|
|
ceph-y := super.o inode.o dir.o file.o locks.o addr.o ioctl.o \
|
|
export.o caps.o snap.o xattr.o quota.o io.o \
|
|
mds_client.o mdsmap.o strings.o ceph_frag.o \
|
|
debugfs.o util.o metric.o subvolume_metrics.o
|
|
|
|
ceph-$(CONFIG_CEPH_FSCACHE) += cache.o
|
|
ceph-$(CONFIG_CEPH_FS_POSIX_ACL) += acl.o
|
|
ceph-$(CONFIG_FS_ENCRYPTION) += crypto.o
|