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

  1. Point the reference storage at a mount backed by the same driver type named in the error
  2. Or use the actual driver the target storage uses when creating the reference entry
  3. 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

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


AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15). Data as JSON: /api/errors/64d6e77480cd152b. Report an issue: GitHub.