syntax = "proto3";

package containerd.snapshot.v1;

import "gogoproto/gogo.proto";

enum Kind {
	option (gogoproto.goproto_enum_prefix) = false;
	option (gogoproto.enum_customname) = "Kind";

	UNKNOWN = 0 [(gogoproto.enumvalue_customname) = "KindUnknown"];
	VIEW = 1 [(gogoproto.enumvalue_customname) = "KindView"];
	ACTIVE = 2 [(gogoproto.enumvalue_customname) = "KindActive"];
	COMMITTED = 3 [(gogoproto.enumvalue_customname) = "KindCommitted"];
}

// Snapshot defines the storage type for a snapshot in the
// metadata store.
message Snapshot {
	uint64 id = 1;
	string parent = 2;
	Kind kind = 4;

	// inodes stores the number inodes in use for the snapshot.
	//
	// Only valid for committed snapshots.
	int64 inodes = 6;

	// Size reports the disk used by the snapshot, excluding the parents.
	//
	// Only valid for committed snapshots, active snapshots must read the
	// current usage from the disk.
	int64 size = 7;
}
