func (uc *unfinishedUploadChunk) managedNotifyStandbyWorkers() {
	uc.mu.Lock()
	standbyWorkers := make([]*worker, len(uc.workersStandby))
	copy(standbyWorkers, uc.workersStandby)
	uc.workersStandby = uc.workersStandby[:0]
	uc.mu.Unlock()
	for i := 0; i < len(standbyWorkers); i++ {
		standbyWorkers[i].managedQueueUploadChunk(uc)
	}
}
managedNotifyStandbyWorkers is called when a worker fails to upload a piece, meaning
that the standby workers may now be needed to help the piece finish
uploading.
package renter
import (
	"io"
	"os"
	"sync"
	"github.com/NebulousLabs/Sia/crypto"
	"github.com/NebulousLabs/errors"
)
type uploadChunkID struct {
	fileUID string  
	index   uint64  
}
type unfinishedUploadChunk struct {
	id         uploadChunkID
	localPath  string
	renterFile *file
	index          uint64
	length         uint64
	memoryNeeded   uint64  
	memoryReleased uint64  
	minimumPieces  int     
	offset         int64   
	piecesNeeded   int     
	logicalChunkData  [][]byte
	physicalChunkData [][]byte
	mu               sync.Mutex
	pieceUsage       []bool               
	piecesCompleted  int                  
	piecesRegistered int                  
	released         bool                 
	unusedHosts      map[string]struct{}  
	workersRemaining int                  
	workersStandby   []*worker            
}