syntax = "proto3";

package containerd.snapshot.v1;

import "gogoproto/gogo.proto";

// Kind defines the kind of snapshot.
enum Kind {
	option (gogoproto.goproto_enum_prefix) = false;
	option (gogoproto.enum_customname) = "Kind";

	// KindActive represents an active snapshot
	ACTIVE = 0 [(gogoproto.enumvalue_customname) = "KindActive"];

	// KindCommitted represents a committed immutable snapshot
	COMMITTED = 1 [(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;
	bool readonly = 5;

	// 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;
}
