AlistGo/alist · error
ref: storage is not %s
Error message
ref: storage is not %s
What it means
For a reference storage, ref.InitReference(refStorage) returned an errs.NotSupport error, meaning the referenced storage's driver is not of the type the reference driver requires (e.g. a 'alias'-style reference can only point at a storage of the same/compatible driver). The message names the driver type the reference actually is.
Source
Thrown at internal/op/storage.go:144
err = utils.Json.UnmarshalFromString(driverStorage.Addition, storageDriver.GetAddition())
if err == nil {
if ref, ok := storageDriver.(driver.Reference); ok {
if strings.HasPrefix(driverStorage.Remark, "ref:/") {
refMountPath := driverStorage.Remark
i := strings.Index(refMountPath, "\n")
if i > 0 {
refMountPath = refMountPath[4:i]
} else {
refMountPath = refMountPath[4:]
}
var refStorage driver.Driver
refStorage, err = GetStorageByMountPath(refMountPath)
if err != nil {
err = fmt.Errorf("ref: %w", err)
} else {
err = ref.InitReference(refStorage)
if err != nil && errs.IsNotSupportError(err) {
err = fmt.Errorf("ref: storage is not %s", storageDriver.Config().Name)
}
}
}
}
}
if err == nil {
err = storageDriver.Init(ctx)
}
storagesMap.Store(driverStorage.MountPath, storageDriver)
if err != nil {
driverStorage.SetStatus(err.Error())
err = errors.Wrap(err, "failed init storage")
} else {
driverStorage.SetStatus(WORK)
}
MustSaveDriverStorage(storageDriver)
return err
}View on GitHub (pinned to 843d9dc814)
Solutions
- Point the reference storage at a mount backed by the same driver type named in the error
- Or use the actual driver the target storage uses when creating the reference entry
- Upgrade/downgrade to an AList version whose reference semantics match your setup
Defensive patterns
Strategy: validation
Validate before calling
// ensure the reference target uses the same driver as the reference storage
if target.Config().Name != refDriver.Config().Name {
return errors.New("reference target must use the same storage driver")
} Prevention
- Match driver types between reference and target storage when configuring
- Test reference storages right after creation so mismatches surface early
- Document which drivers support being referenced in your deployment
When it happens
Trigger: Creating a reference storage of driver type X whose ref:/ path points at a storage of driver type Y (e.g. an Onedrive reference pointing at a local or S3 mount), so InitReference rejects it with NotSupport.
Common situations: Mixing driver types when setting up reference storages after reading old documentation; AList version changes that tightened which drivers support cross-driver references.
Related errors
- ref: %w
- owner and repo are required
- committer email is required
- committer name is required
- author email is required
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/64d6e77480cd152b.
Report an issue: GitHub.