// listPath will return the requested entries.
// If no more entries are in the listing io.EOF is returned,
// otherwise nil or an unexpected error is returned.
// The listPathOptions given will be checked and modified internally.
// Required important fields are Bucket, Prefix, Separator.
// Other important fields are Limit, Marker.
// List ID always derived from the Marker.
xl-storage-format-utils.go
func getFileInfo(xlMetaBuf []byte, volume, path, versionID string) (FileInfo, error) {
if isXL2V1Format(xlMetaBuf) {
var xlMeta xlMetaV2
if err := xlMeta.Load(xlMetaBuf); err != nil {
return FileInfo{}, err
}
return xlMeta.ToFileInfo(volume, path, versionID)
}
xlMeta := &xlMetaV1Object{}
var json = jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal(xlMetaBuf, xlMeta); err != nil {
return FileInfo{}, errFileCorrupt
}
fi, err := xlMeta.ToFileInfo(volume, path)
if err == errFileNotFound && versionID != "" {
return fi, errFileVersionNotFound
}
fi.XLV1 = true // indicates older version
return fi, err
}
处理文件信息获取错误及版本管理

该代码段涉及从字节缓冲中解析存储格式,以获取文件信息。当尝试获取文件信息时,可能会遇到如文件未找到或版本未找到的错误。它支持使用不同版本的元数据格式,并且在处理过程中会检查并修改内部选项。如果文件不存在但提供了版本ID,则特定版本的文件可能未找到。
3639

被折叠的 条评论
为什么被折叠?



