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
}