code: func (buh *blobUploadHandler) StartBlobUpload(w http.ResponseWriter, r *http.Request) {
  	var options []distribution.BlobCreateOption
  
  	fromRepo := r.FormValue("from")
  	mountDigest := r.FormValue("mount")
  
  	if mountDigest != "" && fromRepo != "" {
  		opt, err := buh.createBlobMountOption(fromRepo, mountDigest)
  		if opt != nil && err == nil {
  			options = append(options, opt)
  		}
  	}
  
  	blobs := buh.Repository.Blobs(buh)
  	upload, err := blobs.Create(buh, options...)
  
  	if err != nil {
  		if ebm, ok := err.(distribution.ErrBlobMounted); ok {
  			if err := buh.writeBlobCreatedHeaders(w, ebm.Descriptor); err != nil {
  				buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err))
  			}
  		} else if err == distribution.ErrUnsupported {
  			buh.Errors = append(buh.Errors, errcode.ErrorCodeUnsupported)
  		} else {
  			buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err))
  		}
  		return
  	}
  
  	buh.Upload = upload
  
  	if err := buh.blobUploadResponse(w, r, true); err != nil {
  		buh.Errors = append(buh.Errors, errcode.ErrorCodeUnknown.WithDetail(err))
  		return
  	}
  
  	w.Header().Set("Docker-Upload-UUID", buh.Upload.ID())
  	w.WriteHeader(http.StatusAccepted)
  }
docs: // StartBlobUpload begins the blob upload process and allocates a server-side
  // blob writer session, optionally mounting the blob from a separate repository.