...

Package io

import "k8s.io/utils/io"
Overview
Index

Overview ▾

Variables

ErrLimitReached means that the read limit is reached.

var ErrLimitReached = errors.New("the read limit is reached")

func ConsistentRead

func ConsistentRead(filename string, attempts int) ([]byte, error)

ConsistentRead repeatedly reads a file until it gets the same content twice. This is useful when reading files in /proc that are larger than page size and kernel may modify them between individual read() syscalls. It returns InconsistentReadError when it cannot get a consistent read in given nr. of attempts. Caller should retry, kernel is probably under heavy mount/unmount load.

func IsInconsistentReadError

func IsInconsistentReadError(err error) bool

func ReadAtMost

func ReadAtMost(r io.Reader, limit int64) ([]byte, error)

ReadAtMost reads up to `limit` bytes from `r`, and reports an error when `limit` bytes are read.

type InconsistentReadError

InconsistentReadError is returned from ConsistentRead when it cannot get a consistent read in given nr. of attempts. Caller should retry, kernel is probably under heavy mount/unmount load.

type InconsistentReadError struct {
    // contains filtered or unexported fields
}

func (InconsistentReadError) Error

func (i InconsistentReadError) Error() string