Pools
{zfs.pools.length === 0 &&
ZFS is present but no pools are imported.
}
Snapshot schedules
setEditing({ ...BLANK, dataset: zfs.pools[0]?.name ?? '' })}>+ New schedule
{ov.external &&
setEditing(adopt(ov.external!, zfs.pools[0]?.name ?? ''))} />}
{ov.policies.length === 0 && !ov.external && Nothing is taking snapshots on a schedule. Snapshots are written the way zfSnap writes them, with the retention in the name, so anything already here is understood.
}
{ov.policies.map(({ policy, cron, next, last }) => (
setEditing(policy)} />
))}
Snapshots
{zfs.datasets.reduce((a, d) => a + d.snapshots, 0)} across {zfs.datasets.length} datasets · open one to browse, take or delete
DatasetSnapshotsThey use
Dataset usesReferencedMount
{zfs.datasets.map((d) => )}
{editing && p.name)} onClose={() => setEditing(null)} onSaved={() => { setEditing(null); load() }} />}
)
}