func()

in opts.go [98:134]


func (o *Options) Validate() error {
	if o.Flags.check(FlagUpdMaxSize) {
		if o.Readonly {
			return errOf(InvalidConfig).
				report("can not update max size on in readonly mode")
		}

		if !o.Flags.check(FlagUnboundMaxSize) && o.MaxSize > 0 && o.MaxSize < minRequiredFileSize {
			return errOf(InvalidConfig).
				reportf("max size must be at least %v bytes ", minRequiredFileSize)
		}
	}

	if metaSz := o.InitMetaArea; metaSz > 0 && o.MaxSize > 0 && o.PageSize > 0 {
		const headerPages = 2
		totalPages := o.MaxSize / uint64(o.PageSize)
		avail := totalPages - headerPages
		if uint64(metaSz) >= avail {
			return errOf(InvalidConfig).
				reportf("meta area of %v pages exceeds the available pages %v", metaSz, avail)
		}
	}

	if o.PageSize != 0 {
		if !isPowerOf2(uint64(o.PageSize)) {
			return errOf(InvalidConfig).
				reportf("pageSize %v is not power of 2", o.PageSize)
		}

		if o.PageSize < minPageSize {
			return errOf(InvalidConfig).
				reportf("pageSize must be >= %v", minPageSize)
		}
	}

	return nil
}