func()

in lib/store/base/file_op.go [155:188]


func (op *localFileOp) lockHelper(
	name string, l lockLevel, f func(name string, entry FileEntry)) (err error) {
	if _, err = op.reloadFileEntryHelper(name); err != nil {
		return err
	}
	var loaded bool
	switch l {
	case _lockLevelPeek:
		loaded = op.s.fileMap.LoadForPeek(name, func(name string, entry FileEntry) {
			if err = op.verifyStateHelper(name, entry); err != nil {
				return
			}
			f(name, entry)
		})
	case _lockLevelRead:
		loaded = op.s.fileMap.LoadForRead(name, func(name string, entry FileEntry) {
			if err = op.verifyStateHelper(name, entry); err != nil {
				return
			}
			f(name, entry)
		})
	case _lockLevelWrite:
		loaded = op.s.fileMap.LoadForWrite(name, func(name string, entry FileEntry) {
			if err = op.verifyStateHelper(name, entry); err != nil {
				return
			}
			f(name, entry)
		})
	}
	if !loaded {
		return os.ErrNotExist
	}
	return err
}