contentenc: move parallel encryption into encryptBlocksParallel
Make the logic self-contained in the new helper function.
This commit is contained in:
parent
a92db18fe7
commit
9aeb2a3df6
@ -204,13 +204,9 @@ func (be *ContentEnc) DecryptBlock(ciphertext []byte, blockNo uint64, fileID []b
|
||||
// 2 seems to work ok for now.
|
||||
const encryptMaxSplit = 2
|
||||
|
||||
// EncryptBlocks is like EncryptBlock but takes multiple plaintext blocks.
|
||||
// Returns a byte slice from CReqPool - so don't forget to return it
|
||||
// to the pool.
|
||||
func (be *ContentEnc) EncryptBlocks(plaintextBlocks [][]byte, firstBlockNo uint64, fileID []byte) []byte {
|
||||
ciphertextBlocks := make([][]byte, len(plaintextBlocks))
|
||||
// For large writes, we parallelize encryption.
|
||||
if len(plaintextBlocks) >= 32 {
|
||||
// encryptBlocksParallel splits the plaintext into parts and encrypts them
|
||||
// in parallel.
|
||||
func (be *ContentEnc) encryptBlocksParallel(plaintextBlocks [][]byte, ciphertextBlocks [][]byte, firstBlockNo uint64, fileID []byte) {
|
||||
ncpu := runtime.NumCPU()
|
||||
if ncpu > encryptMaxSplit {
|
||||
ncpu = encryptMaxSplit
|
||||
@ -231,6 +227,16 @@ func (be *ContentEnc) EncryptBlocks(plaintextBlocks [][]byte, firstBlockNo uint6
|
||||
}(i)
|
||||
}
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
// EncryptBlocks is like EncryptBlock but takes multiple plaintext blocks.
|
||||
// Returns a byte slice from CReqPool - so don't forget to return it
|
||||
// to the pool.
|
||||
func (be *ContentEnc) EncryptBlocks(plaintextBlocks [][]byte, firstBlockNo uint64, fileID []byte) []byte {
|
||||
ciphertextBlocks := make([][]byte, len(plaintextBlocks))
|
||||
// For large writes, we parallelize encryption.
|
||||
if len(plaintextBlocks) >= 32 && runtime.NumCPU() >= 2 {
|
||||
be.encryptBlocksParallel(plaintextBlocks, ciphertextBlocks, firstBlockNo, fileID)
|
||||
} else {
|
||||
be.doEncryptBlocks(plaintextBlocks, ciphertextBlocks, firstBlockNo, fileID)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user