mirror of
				https://github.com/prometheus/node_exporter.git
				synced 2025-08-20 18:33:52 -07:00 
			
		
		
		
	Add Btrfs collector (#1512)
* Add procfs/btrfs to vendor folder * Add Btrfs collector Resolves #1100 Signed-off-by: Silke Hofstra <silke@slxh.eu>
This commit is contained in:
		
							parent
							
								
									ca1ac435ea
								
							
						
					
					
						commit
						8faa843fc4
					
				| 
						 | 
					@ -23,6 +23,7 @@
 | 
				
			||||||
* [FEATURE] Add new cooling_device metrics to thermal zone collector #1445
 | 
					* [FEATURE] Add new cooling_device metrics to thermal zone collector #1445
 | 
				
			||||||
* [FEATURE] Add new softnet collector #1576
 | 
					* [FEATURE] Add new softnet collector #1576
 | 
				
			||||||
* [FEATURE] Add RAPL collector #1523
 | 
					* [FEATURE] Add RAPL collector #1523
 | 
				
			||||||
 | 
					* [FEATURE] Add Btrfs collector #1512
 | 
				
			||||||
* [ENHANCEMENT] Collect InfiniBand port state and physical state #1357
 | 
					* [ENHANCEMENT] Collect InfiniBand port state and physical state #1357
 | 
				
			||||||
* [ENHANCEMENT] Include additional XFS runtime statistics. #1423
 | 
					* [ENHANCEMENT] Include additional XFS runtime statistics. #1423
 | 
				
			||||||
* [ENHANCEMENT] Report non-fatal collection errors in the exporter metric. #1439
 | 
					* [ENHANCEMENT] Report non-fatal collection errors in the exporter metric. #1439
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										189
									
								
								collector/btrfs_linux.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										189
									
								
								collector/btrfs_linux.go
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,189 @@
 | 
				
			||||||
 | 
					// Copyright 2019 The Prometheus Authors
 | 
				
			||||||
 | 
					// Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					// you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					// You may obtain a copy of the License at
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					// distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// +build !nobtrfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package collector
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/go-kit/kit/log"
 | 
				
			||||||
 | 
						"github.com/prometheus/client_golang/prometheus"
 | 
				
			||||||
 | 
						"github.com/prometheus/procfs/btrfs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// A btrfsCollector is a Collector which gathers metrics from Btrfs filesystems.
 | 
				
			||||||
 | 
					type btrfsCollector struct {
 | 
				
			||||||
 | 
						fs     btrfs.FS
 | 
				
			||||||
 | 
						logger log.Logger
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						registerCollector("btrfs", defaultEnabled, NewBtrfsCollector)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewBtrfsCollector returns a new Collector exposing Btrfs statistics.
 | 
				
			||||||
 | 
					func NewBtrfsCollector(logger log.Logger) (Collector, error) {
 | 
				
			||||||
 | 
						fs, err := btrfs.NewFS(*sysPath)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("failed to open sysfs: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &btrfsCollector{
 | 
				
			||||||
 | 
							fs:     fs,
 | 
				
			||||||
 | 
							logger: logger,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Update retrieves and exports Btrfs statistics.
 | 
				
			||||||
 | 
					// It implements Collector.
 | 
				
			||||||
 | 
					func (c *btrfsCollector) Update(ch chan<- prometheus.Metric) error {
 | 
				
			||||||
 | 
						stats, err := c.fs.Stats()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf("failed to retrieve Btrfs stats: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, s := range stats {
 | 
				
			||||||
 | 
							c.updateBtrfsStats(ch, s)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// btrfsMetric represents a single Btrfs metric that is converted into a Prometheus Metric.
 | 
				
			||||||
 | 
					type btrfsMetric struct {
 | 
				
			||||||
 | 
						name            string
 | 
				
			||||||
 | 
						desc            string
 | 
				
			||||||
 | 
						value           float64
 | 
				
			||||||
 | 
						extraLabel      []string
 | 
				
			||||||
 | 
						extraLabelValue []string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// updateBtrfsStats collects statistics for one bcache ID.
 | 
				
			||||||
 | 
					func (c *btrfsCollector) updateBtrfsStats(ch chan<- prometheus.Metric, s *btrfs.Stats) {
 | 
				
			||||||
 | 
						const subsystem = "btrfs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Basic information about the filesystem.
 | 
				
			||||||
 | 
						devLabels := []string{"uuid"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Retrieve the metrics.
 | 
				
			||||||
 | 
						metrics := c.getMetrics(s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Convert all gathered metrics to Prometheus Metrics and add to channel.
 | 
				
			||||||
 | 
						for _, m := range metrics {
 | 
				
			||||||
 | 
							labels := append(devLabels, m.extraLabel...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							desc := prometheus.NewDesc(
 | 
				
			||||||
 | 
								prometheus.BuildFQName(namespace, subsystem, m.name),
 | 
				
			||||||
 | 
								m.desc,
 | 
				
			||||||
 | 
								labels,
 | 
				
			||||||
 | 
								nil,
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							labelValues := []string{s.UUID}
 | 
				
			||||||
 | 
							if len(m.extraLabelValue) > 0 {
 | 
				
			||||||
 | 
								labelValues = append(labelValues, m.extraLabelValue...)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							ch <- prometheus.MustNewConstMetric(
 | 
				
			||||||
 | 
								desc,
 | 
				
			||||||
 | 
								prometheus.GaugeValue,
 | 
				
			||||||
 | 
								m.value,
 | 
				
			||||||
 | 
								labelValues...,
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// getMetrics returns metrics for the given Btrfs statistics.
 | 
				
			||||||
 | 
					func (c *btrfsCollector) getMetrics(s *btrfs.Stats) []btrfsMetric {
 | 
				
			||||||
 | 
						metrics := []btrfsMetric{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:            "info",
 | 
				
			||||||
 | 
								desc:            "Filesystem information",
 | 
				
			||||||
 | 
								value:           1,
 | 
				
			||||||
 | 
								extraLabel:      []string{"label"},
 | 
				
			||||||
 | 
								extraLabelValue: []string{s.Label},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:  "global_rsv_size_bytes",
 | 
				
			||||||
 | 
								desc:  "Size of global reserve.",
 | 
				
			||||||
 | 
								value: float64(s.Allocation.GlobalRsvSize),
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Information about devices.
 | 
				
			||||||
 | 
						for n, dev := range s.Devices {
 | 
				
			||||||
 | 
							metrics = append(metrics, btrfsMetric{
 | 
				
			||||||
 | 
								name:            "device_size_bytes",
 | 
				
			||||||
 | 
								desc:            "Size of a device that is part of the filesystem.",
 | 
				
			||||||
 | 
								value:           float64(dev.Size),
 | 
				
			||||||
 | 
								extraLabel:      []string{"device"},
 | 
				
			||||||
 | 
								extraLabelValue: []string{n},
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Information about data, metadata and system data.
 | 
				
			||||||
 | 
						metrics = append(metrics, c.getAllocationStats("data", s.Allocation.Data)...)
 | 
				
			||||||
 | 
						metrics = append(metrics, c.getAllocationStats("metadata", s.Allocation.Metadata)...)
 | 
				
			||||||
 | 
						metrics = append(metrics, c.getAllocationStats("system", s.Allocation.System)...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return metrics
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// getAllocationStats returns allocation metrics for the given Btrfs Allocation statistics.
 | 
				
			||||||
 | 
					func (c *btrfsCollector) getAllocationStats(a string, s *btrfs.AllocationStats) []btrfsMetric {
 | 
				
			||||||
 | 
						metrics := []btrfsMetric{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:            "reserved_bytes",
 | 
				
			||||||
 | 
								desc:            "Amount of space reserved for a data type",
 | 
				
			||||||
 | 
								value:           float64(s.ReservedBytes),
 | 
				
			||||||
 | 
								extraLabel:      []string{"block_group_type"},
 | 
				
			||||||
 | 
								extraLabelValue: []string{a},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Add all layout statistics.
 | 
				
			||||||
 | 
						for layout, stats := range s.Layouts {
 | 
				
			||||||
 | 
							metrics = append(metrics, c.getLayoutStats(a, layout, stats)...)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return metrics
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// getLayoutStats returns metrics for a data layout.
 | 
				
			||||||
 | 
					func (c *btrfsCollector) getLayoutStats(a, l string, s *btrfs.LayoutUsage) []btrfsMetric {
 | 
				
			||||||
 | 
						return []btrfsMetric{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:            "used_bytes",
 | 
				
			||||||
 | 
								desc:            "Amount of used space by a layout/data type",
 | 
				
			||||||
 | 
								value:           float64(s.UsedBytes),
 | 
				
			||||||
 | 
								extraLabel:      []string{"block_group_type", "mode"},
 | 
				
			||||||
 | 
								extraLabelValue: []string{a, l},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:            "size_bytes",
 | 
				
			||||||
 | 
								desc:            "Amount of space allocated for a layout/data type",
 | 
				
			||||||
 | 
								value:           float64(s.TotalBytes),
 | 
				
			||||||
 | 
								extraLabel:      []string{"block_group_type", "mode"},
 | 
				
			||||||
 | 
								extraLabelValue: []string{a, l},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:            "allocation_ratio",
 | 
				
			||||||
 | 
								desc:            "Data allocation ratio for a layout/data type",
 | 
				
			||||||
 | 
								value:           s.Ratio,
 | 
				
			||||||
 | 
								extraLabel:      []string{"block_group_type", "mode"},
 | 
				
			||||||
 | 
								extraLabelValue: []string{a, l},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										118
									
								
								collector/btrfs_linux_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								collector/btrfs_linux_test.go
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,118 @@
 | 
				
			||||||
 | 
					// Copyright 2019 The Prometheus Authors
 | 
				
			||||||
 | 
					// Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					// you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					// You may obtain a copy of the License at
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					// distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// +build !nobtrfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package collector
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/prometheus/procfs/btrfs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var expectedBtrfsMetrics = [][]btrfsMetric{
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							{name: "info", value: 1, extraLabel: []string{"label"}, extraLabelValue: []string{"fixture"}},
 | 
				
			||||||
 | 
							{name: "global_rsv_size_bytes", value: 1.6777216e+07},
 | 
				
			||||||
 | 
							{name: "device_size_bytes", value: 1.073741824e+10, extraLabel: []string{"device"}, extraLabelValue: []string{"loop25"}},
 | 
				
			||||||
 | 
							{name: "device_size_bytes", value: 1.073741824e+10, extraLabel: []string{"device"}, extraLabelValue: []string{"loop26"}},
 | 
				
			||||||
 | 
							{name: "reserved_bytes", value: 0, extraLabel: []string{"block_group_type"}, extraLabelValue: []string{"data"}},
 | 
				
			||||||
 | 
							{name: "used_bytes", value: 8.08189952e+08, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"data", "raid0"}},
 | 
				
			||||||
 | 
							{name: "size_bytes", value: 2.147483648e+09, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"data", "raid0"}},
 | 
				
			||||||
 | 
							{name: "allocation_ratio", value: 1, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"data", "raid0"}},
 | 
				
			||||||
 | 
							{name: "reserved_bytes", value: 0, extraLabel: []string{"block_group_type"}, extraLabelValue: []string{"metadata"}},
 | 
				
			||||||
 | 
							{name: "used_bytes", value: 933888, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"metadata", "raid1"}},
 | 
				
			||||||
 | 
							{name: "size_bytes", value: 1.073741824e+09, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"metadata", "raid1"}},
 | 
				
			||||||
 | 
							{name: "allocation_ratio", value: 2, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"metadata", "raid1"}},
 | 
				
			||||||
 | 
							{name: "reserved_bytes", value: 0, extraLabel: []string{"block_group_type"}, extraLabelValue: []string{"system"}},
 | 
				
			||||||
 | 
							{name: "used_bytes", value: 16384, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"system", "raid1"}},
 | 
				
			||||||
 | 
							{name: "size_bytes", value: 8.388608e+06, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"system", "raid1"}},
 | 
				
			||||||
 | 
							{name: "allocation_ratio", value: 2, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"system", "raid1"}},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							{name: "info", value: 1, extraLabel: []string{"label"}, extraLabelValue: []string{""}},
 | 
				
			||||||
 | 
							{name: "global_rsv_size_bytes", value: 1.6777216e+07},
 | 
				
			||||||
 | 
							{name: "device_size_bytes", value: 1.073741824e+10, extraLabel: []string{"device"}, extraLabelValue: []string{"loop22"}},
 | 
				
			||||||
 | 
							{name: "device_size_bytes", value: 1.073741824e+10, extraLabel: []string{"device"}, extraLabelValue: []string{"loop23"}},
 | 
				
			||||||
 | 
							{name: "device_size_bytes", value: 1.073741824e+10, extraLabel: []string{"device"}, extraLabelValue: []string{"loop24"}},
 | 
				
			||||||
 | 
							{name: "device_size_bytes", value: 1.073741824e+10, extraLabel: []string{"device"}, extraLabelValue: []string{"loop25"}},
 | 
				
			||||||
 | 
							{name: "reserved_bytes", value: 0, extraLabel: []string{"block_group_type"}, extraLabelValue: []string{"data"}},
 | 
				
			||||||
 | 
							{name: "used_bytes", value: 0, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"data", "raid5"}},
 | 
				
			||||||
 | 
							{name: "size_bytes", value: 6.44087808e+08, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"data", "raid5"}},
 | 
				
			||||||
 | 
							{name: "allocation_ratio", value: 1.3333333333333333, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"data", "raid5"}},
 | 
				
			||||||
 | 
							{name: "reserved_bytes", value: 0, extraLabel: []string{"block_group_type"}, extraLabelValue: []string{"metadata"}},
 | 
				
			||||||
 | 
							{name: "used_bytes", value: 114688, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"metadata", "raid6"}},
 | 
				
			||||||
 | 
							{name: "size_bytes", value: 4.29391872e+08, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"metadata", "raid6"}},
 | 
				
			||||||
 | 
							{name: "allocation_ratio", value: 2, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"metadata", "raid6"}},
 | 
				
			||||||
 | 
							{name: "reserved_bytes", value: 0, extraLabel: []string{"block_group_type"}, extraLabelValue: []string{"system"}},
 | 
				
			||||||
 | 
							{name: "used_bytes", value: 16384, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"system", "raid6"}},
 | 
				
			||||||
 | 
							{name: "size_bytes", value: 1.6777216e+07, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"system", "raid6"}},
 | 
				
			||||||
 | 
							{name: "allocation_ratio", value: 2, extraLabel: []string{"block_group_type", "mode"}, extraLabelValue: []string{"system", "raid6"}},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func checkMetric(exp, got *btrfsMetric) bool {
 | 
				
			||||||
 | 
						if exp.name != got.name ||
 | 
				
			||||||
 | 
							exp.value != got.value ||
 | 
				
			||||||
 | 
							len(exp.extraLabel) != len(got.extraLabel) ||
 | 
				
			||||||
 | 
							len(exp.extraLabelValue) != len(got.extraLabelValue) {
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for i := range exp.extraLabel {
 | 
				
			||||||
 | 
							if exp.extraLabel[i] != got.extraLabel[i] {
 | 
				
			||||||
 | 
								return false
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Devices (loopXX) can appear in random order, so just check the first 4 characters.
 | 
				
			||||||
 | 
							if strings.HasPrefix(got.extraLabelValue[i], "loop") &&
 | 
				
			||||||
 | 
								exp.extraLabelValue[i][:4] == got.extraLabelValue[i][:4] {
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if exp.extraLabelValue[i] != got.extraLabelValue[i] {
 | 
				
			||||||
 | 
								return false
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return true
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestBtrfs(t *testing.T) {
 | 
				
			||||||
 | 
						fs, _ := btrfs.NewFS("fixtures/sys")
 | 
				
			||||||
 | 
						collector := &btrfsCollector{fs: fs}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						stats, err := collector.fs.Stats()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatalf("Failed to retrieve Btrfs stats: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(stats) != len(expectedBtrfsMetrics) {
 | 
				
			||||||
 | 
							t.Fatalf("Unexpected number of Btrfs stats: expected %v, got %v", len(expectedBtrfsMetrics), len(stats))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for i, s := range stats {
 | 
				
			||||||
 | 
							metrics := collector.getMetrics(s)
 | 
				
			||||||
 | 
							if len(metrics) != len(expectedBtrfsMetrics[i]) {
 | 
				
			||||||
 | 
								t.Fatalf("Unexpected number of Btrfs metrics: expected %v, got %v", len(expectedBtrfsMetrics[i]), len(metrics))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for j, m := range metrics {
 | 
				
			||||||
 | 
								exp := expectedBtrfsMetrics[i][j]
 | 
				
			||||||
 | 
								if !checkMetric(&exp, &m) {
 | 
				
			||||||
 | 
									t.Errorf("Incorrect btrfs metric: expected %#v, got: %#v", exp, m)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -140,6 +140,54 @@ node_bonding_slaves{master="int"} 2
 | 
				
			||||||
# HELP node_boot_time_seconds Node boot time, in unixtime.
 | 
					# HELP node_boot_time_seconds Node boot time, in unixtime.
 | 
				
			||||||
# TYPE node_boot_time_seconds gauge
 | 
					# TYPE node_boot_time_seconds gauge
 | 
				
			||||||
node_boot_time_seconds 1.418183276e+09
 | 
					node_boot_time_seconds 1.418183276e+09
 | 
				
			||||||
 | 
					# HELP node_btrfs_allocation_ratio Data allocation ratio for a layout/data type
 | 
				
			||||||
 | 
					# TYPE node_btrfs_allocation_ratio gauge
 | 
				
			||||||
 | 
					node_btrfs_allocation_ratio{block_group_type="data",mode="raid0",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 1
 | 
				
			||||||
 | 
					node_btrfs_allocation_ratio{block_group_type="data",mode="raid5",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 1.3333333333333333
 | 
				
			||||||
 | 
					node_btrfs_allocation_ratio{block_group_type="metadata",mode="raid1",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 2
 | 
				
			||||||
 | 
					node_btrfs_allocation_ratio{block_group_type="metadata",mode="raid6",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 2
 | 
				
			||||||
 | 
					node_btrfs_allocation_ratio{block_group_type="system",mode="raid1",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 2
 | 
				
			||||||
 | 
					node_btrfs_allocation_ratio{block_group_type="system",mode="raid6",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 2
 | 
				
			||||||
 | 
					# HELP node_btrfs_device_size_bytes Size of a device that is part of the filesystem.
 | 
				
			||||||
 | 
					# TYPE node_btrfs_device_size_bytes gauge
 | 
				
			||||||
 | 
					node_btrfs_device_size_bytes{device="loop22",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 1.073741824e+10
 | 
				
			||||||
 | 
					node_btrfs_device_size_bytes{device="loop23",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 1.073741824e+10
 | 
				
			||||||
 | 
					node_btrfs_device_size_bytes{device="loop24",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 1.073741824e+10
 | 
				
			||||||
 | 
					node_btrfs_device_size_bytes{device="loop25",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 1.073741824e+10
 | 
				
			||||||
 | 
					node_btrfs_device_size_bytes{device="loop25",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 1.073741824e+10
 | 
				
			||||||
 | 
					node_btrfs_device_size_bytes{device="loop26",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 1.073741824e+10
 | 
				
			||||||
 | 
					# HELP node_btrfs_global_rsv_size_bytes Size of global reserve.
 | 
				
			||||||
 | 
					# TYPE node_btrfs_global_rsv_size_bytes gauge
 | 
				
			||||||
 | 
					node_btrfs_global_rsv_size_bytes{uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 1.6777216e+07
 | 
				
			||||||
 | 
					node_btrfs_global_rsv_size_bytes{uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 1.6777216e+07
 | 
				
			||||||
 | 
					# HELP node_btrfs_info Filesystem information
 | 
				
			||||||
 | 
					# TYPE node_btrfs_info gauge
 | 
				
			||||||
 | 
					node_btrfs_info{label="",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 1
 | 
				
			||||||
 | 
					node_btrfs_info{label="fixture",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 1
 | 
				
			||||||
 | 
					# HELP node_btrfs_reserved_bytes Amount of space reserved for a data type
 | 
				
			||||||
 | 
					# TYPE node_btrfs_reserved_bytes gauge
 | 
				
			||||||
 | 
					node_btrfs_reserved_bytes{block_group_type="data",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 0
 | 
				
			||||||
 | 
					node_btrfs_reserved_bytes{block_group_type="data",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 0
 | 
				
			||||||
 | 
					node_btrfs_reserved_bytes{block_group_type="metadata",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 0
 | 
				
			||||||
 | 
					node_btrfs_reserved_bytes{block_group_type="metadata",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 0
 | 
				
			||||||
 | 
					node_btrfs_reserved_bytes{block_group_type="system",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 0
 | 
				
			||||||
 | 
					node_btrfs_reserved_bytes{block_group_type="system",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 0
 | 
				
			||||||
 | 
					# HELP node_btrfs_size_bytes Amount of space allocated for a layout/data type
 | 
				
			||||||
 | 
					# TYPE node_btrfs_size_bytes gauge
 | 
				
			||||||
 | 
					node_btrfs_size_bytes{block_group_type="data",mode="raid0",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 2.147483648e+09
 | 
				
			||||||
 | 
					node_btrfs_size_bytes{block_group_type="data",mode="raid5",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 6.44087808e+08
 | 
				
			||||||
 | 
					node_btrfs_size_bytes{block_group_type="metadata",mode="raid1",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 1.073741824e+09
 | 
				
			||||||
 | 
					node_btrfs_size_bytes{block_group_type="metadata",mode="raid6",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 4.29391872e+08
 | 
				
			||||||
 | 
					node_btrfs_size_bytes{block_group_type="system",mode="raid1",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 8.388608e+06
 | 
				
			||||||
 | 
					node_btrfs_size_bytes{block_group_type="system",mode="raid6",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 1.6777216e+07
 | 
				
			||||||
 | 
					# HELP node_btrfs_used_bytes Amount of used space by a layout/data type
 | 
				
			||||||
 | 
					# TYPE node_btrfs_used_bytes gauge
 | 
				
			||||||
 | 
					node_btrfs_used_bytes{block_group_type="data",mode="raid0",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 8.08189952e+08
 | 
				
			||||||
 | 
					node_btrfs_used_bytes{block_group_type="data",mode="raid5",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 0
 | 
				
			||||||
 | 
					node_btrfs_used_bytes{block_group_type="metadata",mode="raid1",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 933888
 | 
				
			||||||
 | 
					node_btrfs_used_bytes{block_group_type="metadata",mode="raid6",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 114688
 | 
				
			||||||
 | 
					node_btrfs_used_bytes{block_group_type="system",mode="raid1",uuid="0abb23a9-579b-43e6-ad30-227ef47fcb9d"} 16384
 | 
				
			||||||
 | 
					node_btrfs_used_bytes{block_group_type="system",mode="raid6",uuid="7f07c59f-6136-449c-ab87-e1cf2328731b"} 16384
 | 
				
			||||||
# HELP node_buddyinfo_blocks Count of free blocks according to size.
 | 
					# HELP node_buddyinfo_blocks Count of free blocks according to size.
 | 
				
			||||||
# TYPE node_buddyinfo_blocks gauge
 | 
					# TYPE node_buddyinfo_blocks gauge
 | 
				
			||||||
node_buddyinfo_blocks{node="0",size="0",zone="DMA"} 1
 | 
					node_buddyinfo_blocks{node="0",size="0",zone="DMA"} 1
 | 
				
			||||||
| 
						 | 
					@ -2560,6 +2608,7 @@ node_schedstat_waiting_seconds_total{cpu="1"} 364107.263788241
 | 
				
			||||||
node_scrape_collector_success{collector="arp"} 1
 | 
					node_scrape_collector_success{collector="arp"} 1
 | 
				
			||||||
node_scrape_collector_success{collector="bcache"} 1
 | 
					node_scrape_collector_success{collector="bcache"} 1
 | 
				
			||||||
node_scrape_collector_success{collector="bonding"} 1
 | 
					node_scrape_collector_success{collector="bonding"} 1
 | 
				
			||||||
 | 
					node_scrape_collector_success{collector="btrfs"} 1
 | 
				
			||||||
node_scrape_collector_success{collector="buddyinfo"} 1
 | 
					node_scrape_collector_success{collector="buddyinfo"} 1
 | 
				
			||||||
node_scrape_collector_success{collector="conntrack"} 1
 | 
					node_scrape_collector_success{collector="conntrack"} 1
 | 
				
			||||||
node_scrape_collector_success{collector="cpu"} 1
 | 
					node_scrape_collector_success{collector="cpu"} 1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3233,6 +3233,601 @@ Lines: 1
 | 
				
			||||||
0
 | 
					0
 | 
				
			||||||
Mode: 644
 | 
					Mode: 644
 | 
				
			||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_may_use
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_readonly
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_reserved
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					808189952
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/disk_total
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					2147483648
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/disk_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					808189952
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/flags
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/raid0
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/raid0/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					2147483648
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/raid0/used_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					808189952
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					2147483648
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/total_bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/global_rsv_reserved
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/global_rsv_size
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_may_use
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_readonly
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					131072
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_reserved
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					933888
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/disk_total
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					2147483648
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/disk_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1867776
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/flags
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					4
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/raid1
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/raid1/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1073741824
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/raid1/used_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					933888
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1073741824
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/total_bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_may_use
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_readonly
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_reserved
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16384
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/disk_total
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/disk_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					32768
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/flags
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					2
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/raid1
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/raid1/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					8388608
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/raid1/used_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16384
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					8388608
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/total_bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/clone_alignment
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					4096
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices/loop25
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices/loop25/size
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					20971520
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices/loop26
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices/loop26/size
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					20971520
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features/big_metadata
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features/extended_iref
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features/mixed_backref
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features/skinny_metadata
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/label
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					fixture
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/metadata_uuid
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0abb23a9-579b-43e6-ad30-227ef47fcb9d
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/nodesize
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16384
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/quota_override
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/sectorsize
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					4096
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_may_use
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_readonly
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_reserved
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/disk_total
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					644087808
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/disk_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/flags
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/raid5
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/raid5/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					644087808
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/raid5/used_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					644087808
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/total_bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/global_rsv_reserved
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/global_rsv_size
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_may_use
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_readonly
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					262144
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_reserved
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					114688
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/disk_total
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					429391872
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/disk_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					114688
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/flags
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					4
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/raid6
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/raid6/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					429391872
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/raid6/used_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					114688
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					429391872
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/total_bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_may_use
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_readonly
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_reserved
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16384
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/disk_total
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/disk_used
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16384
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/flags
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					2
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/raid6
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/raid6/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/raid6/used_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16384
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/total_bytes
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16777216
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/total_bytes_pinned
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/clone_alignment
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					4096
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop22
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop22/size
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					20971520
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop23
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop23/size
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					20971520
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop24
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop24/size
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					20971520
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop25
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop25/size
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					20971520
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Directory: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features
 | 
				
			||||||
 | 
					Mode: 755
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/big_metadata
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/extended_iref
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/mixed_backref
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/raid56
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/skinny_metadata
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					1
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/label
 | 
				
			||||||
 | 
					Lines: 0
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/metadata_uuid
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					7f07c59f-6136-449c-ab87-e1cf2328731b
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/nodesize
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					16384
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/quota_override
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					0
 | 
				
			||||||
 | 
					Mode: 644
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
 | 
					Path: sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/sectorsize
 | 
				
			||||||
 | 
					Lines: 1
 | 
				
			||||||
 | 
					4096
 | 
				
			||||||
 | 
					Mode: 444
 | 
				
			||||||
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
Directory: sys/fs/xfs
 | 
					Directory: sys/fs/xfs
 | 
				
			||||||
Mode: 755
 | 
					Mode: 755
 | 
				
			||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
					# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ set -euf -o pipefail
 | 
				
			||||||
enabled_collectors=$(cat << COLLECTORS
 | 
					enabled_collectors=$(cat << COLLECTORS
 | 
				
			||||||
  arp
 | 
					  arp
 | 
				
			||||||
  bcache
 | 
					  bcache
 | 
				
			||||||
 | 
					  btrfs
 | 
				
			||||||
  buddyinfo
 | 
					  buddyinfo
 | 
				
			||||||
  conntrack
 | 
					  conntrack
 | 
				
			||||||
  cpu
 | 
					  cpu
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										67
									
								
								vendor/github.com/prometheus/procfs/btrfs/btrfs.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								vendor/github.com/prometheus/procfs/btrfs/btrfs.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,67 @@
 | 
				
			||||||
 | 
					// Copyright 2019 The Prometheus Authors
 | 
				
			||||||
 | 
					// Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					// you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					// You may obtain a copy of the License at
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					// distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Package btrfs provides access to statistics exposed by Btrfs filesystems.
 | 
				
			||||||
 | 
					package btrfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Stats contains statistics for a single Btrfs filesystem.
 | 
				
			||||||
 | 
					// See Linux fs/btrfs/sysfs.c for more information.
 | 
				
			||||||
 | 
					type Stats struct {
 | 
				
			||||||
 | 
						UUID, Label    string
 | 
				
			||||||
 | 
						Allocation     Allocation
 | 
				
			||||||
 | 
						Devices        map[string]*Device
 | 
				
			||||||
 | 
						Features       []string
 | 
				
			||||||
 | 
						CloneAlignment uint64
 | 
				
			||||||
 | 
						NodeSize       uint64
 | 
				
			||||||
 | 
						QuotaOverride  uint64
 | 
				
			||||||
 | 
						SectorSize     uint64
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Allocation contains allocation statistics for data, metadata and system data.
 | 
				
			||||||
 | 
					type Allocation struct {
 | 
				
			||||||
 | 
						GlobalRsvReserved, GlobalRsvSize uint64
 | 
				
			||||||
 | 
						Data, Metadata, System           *AllocationStats
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// AllocationStats contains allocation statistics for a data type.
 | 
				
			||||||
 | 
					type AllocationStats struct {
 | 
				
			||||||
 | 
						// Usage statistics
 | 
				
			||||||
 | 
						DiskUsedBytes    uint64
 | 
				
			||||||
 | 
						DiskTotalBytes   uint64
 | 
				
			||||||
 | 
						MayUseBytes      uint64
 | 
				
			||||||
 | 
						PinnedBytes      uint64
 | 
				
			||||||
 | 
						TotalPinnedBytes uint64
 | 
				
			||||||
 | 
						ReadOnlyBytes    uint64
 | 
				
			||||||
 | 
						ReservedBytes    uint64
 | 
				
			||||||
 | 
						UsedBytes        uint64
 | 
				
			||||||
 | 
						TotalBytes       uint64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Flags marking filesystem state
 | 
				
			||||||
 | 
						// See Linux fs/btrfs/ctree.h for more information.
 | 
				
			||||||
 | 
						Flags uint64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Additional disk usage statistics depending on the disk layout.
 | 
				
			||||||
 | 
						// At least one of these will exist and not be nil.
 | 
				
			||||||
 | 
						Layouts map[string]*LayoutUsage
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LayoutUsage contains additional usage statistics for a disk layout.
 | 
				
			||||||
 | 
					type LayoutUsage struct {
 | 
				
			||||||
 | 
						UsedBytes, TotalBytes uint64
 | 
				
			||||||
 | 
						Ratio                 float64
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Device contains information about a device that is part of a Btrfs filesystem.
 | 
				
			||||||
 | 
					type Device struct {
 | 
				
			||||||
 | 
						Size uint64
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										251
									
								
								vendor/github.com/prometheus/procfs/btrfs/get.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										251
									
								
								vendor/github.com/prometheus/procfs/btrfs/get.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,251 @@
 | 
				
			||||||
 | 
					// Copyright 2019 The Prometheus Authors
 | 
				
			||||||
 | 
					// Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					// you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					// You may obtain a copy of the License at
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					// distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package btrfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"io/ioutil"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"path"
 | 
				
			||||||
 | 
						"path/filepath"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/prometheus/procfs/internal/fs"
 | 
				
			||||||
 | 
						"github.com/prometheus/procfs/internal/util"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SectorSize contains the Linux sector size.
 | 
				
			||||||
 | 
					// > Linux always considers sectors to be 512 bytes long independently
 | 
				
			||||||
 | 
					// > of the devices real block size.
 | 
				
			||||||
 | 
					const SectorSize = 512
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FS represents the pseudo-filesystem sys, which provides an interface to
 | 
				
			||||||
 | 
					// kernel data structures.
 | 
				
			||||||
 | 
					type FS struct {
 | 
				
			||||||
 | 
						sys *fs.FS
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewDefaultFS returns a new Bcache using the default sys fs mount point. It will error
 | 
				
			||||||
 | 
					// if the mount point can't be read.
 | 
				
			||||||
 | 
					func NewDefaultFS() (FS, error) {
 | 
				
			||||||
 | 
						return NewFS(fs.DefaultSysMountPoint)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewFS returns a new Btrfs filesystem using the given sys fs mount point. It will error
 | 
				
			||||||
 | 
					// if the mount point can't be read.
 | 
				
			||||||
 | 
					func NewFS(mountPoint string) (FS, error) {
 | 
				
			||||||
 | 
						if strings.TrimSpace(mountPoint) == "" {
 | 
				
			||||||
 | 
							mountPoint = fs.DefaultSysMountPoint
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						sys, err := fs.NewFS(mountPoint)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return FS{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return FS{&sys}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Stats retrieves Btrfs filesystem runtime statistics for each mounted Btrfs filesystem.
 | 
				
			||||||
 | 
					func (fs FS) Stats() ([]*Stats, error) {
 | 
				
			||||||
 | 
						matches, err := filepath.Glob(fs.sys.Path("fs/btrfs/*-*"))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						stats := make([]*Stats, 0, len(matches))
 | 
				
			||||||
 | 
						for _, uuidPath := range matches {
 | 
				
			||||||
 | 
							s, err := GetStats(uuidPath)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Set the UUID from the path when it could not be retrieved from the filesystem.
 | 
				
			||||||
 | 
							if s.UUID == "" {
 | 
				
			||||||
 | 
								s.UUID = filepath.Base(uuidPath)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							stats = append(stats, s)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return stats, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GetStats collects all Btrfs statistics from sysfs
 | 
				
			||||||
 | 
					func GetStats(uuidPath string) (*Stats, error) {
 | 
				
			||||||
 | 
						r := &reader{path: uuidPath}
 | 
				
			||||||
 | 
						s := r.readFilesystemStats()
 | 
				
			||||||
 | 
						if r.err != nil {
 | 
				
			||||||
 | 
							return nil, r.err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return s, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type reader struct {
 | 
				
			||||||
 | 
						path     string
 | 
				
			||||||
 | 
						err      error
 | 
				
			||||||
 | 
						devCount int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// readFile reads a file relative to the path of the reader.
 | 
				
			||||||
 | 
					// Non-existing files are ignored.
 | 
				
			||||||
 | 
					func (r *reader) readFile(n string) string {
 | 
				
			||||||
 | 
						b, err := util.SysReadFile(path.Join(r.path, n))
 | 
				
			||||||
 | 
						if err != nil && !os.IsNotExist(err) {
 | 
				
			||||||
 | 
							r.err = err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return strings.TrimSpace(string(b))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// readValues reads a number of numerical values into an uint64 slice.
 | 
				
			||||||
 | 
					func (r *reader) readValue(n string) (v uint64) {
 | 
				
			||||||
 | 
						// Read value from file
 | 
				
			||||||
 | 
						s := r.readFile(n)
 | 
				
			||||||
 | 
						if r.err != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Convert number
 | 
				
			||||||
 | 
						v, _ = strconv.ParseUint(s, 10, 64)
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// listFiles returns a list of files for a directory of the reader.
 | 
				
			||||||
 | 
					func (r *reader) listFiles(p string) []string {
 | 
				
			||||||
 | 
						files, err := ioutil.ReadDir(path.Join(r.path, p))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							r.err = err
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						names := make([]string, len(files))
 | 
				
			||||||
 | 
						for i, f := range files {
 | 
				
			||||||
 | 
							names[i] = f.Name()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return names
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// readAllocationStats reads Btrfs allocation data for the current path.
 | 
				
			||||||
 | 
					func (r *reader) readAllocationStats(d string) (a *AllocationStats) {
 | 
				
			||||||
 | 
						// Create a reader for this subdirectory
 | 
				
			||||||
 | 
						sr := &reader{path: path.Join(r.path, d), devCount: r.devCount}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Get the stats
 | 
				
			||||||
 | 
						a = &AllocationStats{
 | 
				
			||||||
 | 
							// Read basic allocation stats
 | 
				
			||||||
 | 
							MayUseBytes:      sr.readValue("bytes_may_use"),
 | 
				
			||||||
 | 
							PinnedBytes:      sr.readValue("bytes_pinned"),
 | 
				
			||||||
 | 
							ReadOnlyBytes:    sr.readValue("bytes_readonly"),
 | 
				
			||||||
 | 
							ReservedBytes:    sr.readValue("bytes_reserved"),
 | 
				
			||||||
 | 
							UsedBytes:        sr.readValue("bytes_used"),
 | 
				
			||||||
 | 
							DiskUsedBytes:    sr.readValue("disk_used"),
 | 
				
			||||||
 | 
							DiskTotalBytes:   sr.readValue("disk_total"),
 | 
				
			||||||
 | 
							Flags:            sr.readValue("flags"),
 | 
				
			||||||
 | 
							TotalBytes:       sr.readValue("total_bytes"),
 | 
				
			||||||
 | 
							TotalPinnedBytes: sr.readValue("total_bytes_pinned"),
 | 
				
			||||||
 | 
							Layouts:          sr.readLayouts(),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Pass any error back
 | 
				
			||||||
 | 
						r.err = sr.err
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// readLayouts reads all Btrfs layout statistics for the current path
 | 
				
			||||||
 | 
					func (r *reader) readLayouts() map[string]*LayoutUsage {
 | 
				
			||||||
 | 
						files, err := ioutil.ReadDir(r.path)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							r.err = err
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						m := make(map[string]*LayoutUsage)
 | 
				
			||||||
 | 
						for _, f := range files {
 | 
				
			||||||
 | 
							if f.IsDir() {
 | 
				
			||||||
 | 
								m[f.Name()] = r.readLayout(f.Name())
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return m
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// readLayout reads the Btrfs layout statistics for an allocation layout.
 | 
				
			||||||
 | 
					func (r *reader) readLayout(p string) (l *LayoutUsage) {
 | 
				
			||||||
 | 
						l = new(LayoutUsage)
 | 
				
			||||||
 | 
						l.TotalBytes = r.readValue(path.Join(p, "total_bytes"))
 | 
				
			||||||
 | 
						l.UsedBytes = r.readValue(path.Join(p, "used_bytes"))
 | 
				
			||||||
 | 
						l.Ratio = r.calcRatio(p)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// calcRatio returns the calculated ratio for a layout mode.
 | 
				
			||||||
 | 
					func (r *reader) calcRatio(p string) float64 {
 | 
				
			||||||
 | 
						switch p {
 | 
				
			||||||
 | 
						case "single", "raid0":
 | 
				
			||||||
 | 
							return 1
 | 
				
			||||||
 | 
						case "dup", "raid1", "raid10":
 | 
				
			||||||
 | 
							return 2
 | 
				
			||||||
 | 
						case "raid5":
 | 
				
			||||||
 | 
							return float64(r.devCount) / (float64(r.devCount) - 1)
 | 
				
			||||||
 | 
						case "raid6":
 | 
				
			||||||
 | 
							return float64(r.devCount) / (float64(r.devCount) - 2)
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return 0
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// readDeviceInfo returns the information for all devices associated with this filesystem.
 | 
				
			||||||
 | 
					func (r *reader) readDeviceInfo(d string) map[string]*Device {
 | 
				
			||||||
 | 
						devs := r.listFiles("devices")
 | 
				
			||||||
 | 
						info := make(map[string]*Device, len(devs))
 | 
				
			||||||
 | 
						for _, n := range devs {
 | 
				
			||||||
 | 
							info[n] = &Device{
 | 
				
			||||||
 | 
								Size: SectorSize * r.readValue("devices/"+n+"/size"),
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return info
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// readFilesystemStats reads Btrfs statistics for a filesystem.
 | 
				
			||||||
 | 
					func (r *reader) readFilesystemStats() (s *Stats) {
 | 
				
			||||||
 | 
						// First get disk info, and add it to reader
 | 
				
			||||||
 | 
						devices := r.readDeviceInfo("devices")
 | 
				
			||||||
 | 
						r.devCount = len(devices)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						s = &Stats{
 | 
				
			||||||
 | 
							// Read basic filesystem information
 | 
				
			||||||
 | 
							Label:          r.readFile("label"),
 | 
				
			||||||
 | 
							UUID:           r.readFile("metadata_uuid"),
 | 
				
			||||||
 | 
							Features:       r.listFiles("features"),
 | 
				
			||||||
 | 
							CloneAlignment: r.readValue("clone_alignment"),
 | 
				
			||||||
 | 
							NodeSize:       r.readValue("nodesize"),
 | 
				
			||||||
 | 
							QuotaOverride:  r.readValue("quota_override"),
 | 
				
			||||||
 | 
							SectorSize:     r.readValue("sectorsize"),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Device info
 | 
				
			||||||
 | 
							Devices: devices,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Read allocation data
 | 
				
			||||||
 | 
							Allocation: Allocation{
 | 
				
			||||||
 | 
								GlobalRsvReserved: r.readValue("allocation/global_rsv_reserved"),
 | 
				
			||||||
 | 
								GlobalRsvSize:     r.readValue("allocation/global_rsv_size"),
 | 
				
			||||||
 | 
								Data:              r.readAllocationStats("allocation/data"),
 | 
				
			||||||
 | 
								Metadata:          r.readAllocationStats("allocation/metadata"),
 | 
				
			||||||
 | 
								System:            r.readAllocationStats("allocation/system"),
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| 
						 | 
					@ -62,6 +62,7 @@ github.com/prometheus/common/version
 | 
				
			||||||
# github.com/prometheus/procfs v0.0.10
 | 
					# github.com/prometheus/procfs v0.0.10
 | 
				
			||||||
github.com/prometheus/procfs
 | 
					github.com/prometheus/procfs
 | 
				
			||||||
github.com/prometheus/procfs/bcache
 | 
					github.com/prometheus/procfs/bcache
 | 
				
			||||||
 | 
					github.com/prometheus/procfs/btrfs
 | 
				
			||||||
github.com/prometheus/procfs/internal/fs
 | 
					github.com/prometheus/procfs/internal/fs
 | 
				
			||||||
github.com/prometheus/procfs/internal/util
 | 
					github.com/prometheus/procfs/internal/util
 | 
				
			||||||
github.com/prometheus/procfs/nfs
 | 
					github.com/prometheus/procfs/nfs
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue