You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: volumes_linux.go
    path of file: ./repos/moby/daemon
    
    the code of the file until where you have to start completion: package daemon

import (
	"strings"

	"github.com/docker/docker/api/types/mount"
	"github.com/docker/docker/errdefs"
	"github.com/pkg/errors"
)

// validateBindDaemonRoot ensures that if a given mountpoint's source is within
// the daemon root path, that the propagation is setup to prevent a container
// from holding private references to a mount within the daemon root, which
// can cause 
    
func (daemon *Daemon) validateBindDaemonRoot(m mount.Mount) (bool, error) {
	if m.Type != mount.TypeBind {
		return false, nil
	}

	// check if the source is within the daemon root, or if the daemon root is within the source
	if !strings.HasPrefix(m.Source, daemon.root) && !strings.HasPrefix(daemon.root, m.Source) {
		return false, nil
	}

	if m.BindOptions == nil {
		return true, nil
	}

	switch m.BindOptions.Propagation {
	case mount.PropagationRSlave, mount.PropagationRShared, "":
		return m.BindOptions.Propagation == "", nil
	default:
	}

	return false, errdefs.InvalidParameter(errors.Errorf(`invalid mount config: must use either propagation mode "rslave" or "rshared" when mount source is within the daemon root, daemon root: %q, bind mount source: %q, propagation: %q`, daemon.root, m.Source, m.BindOptions.Propagation))
}