code: func (s *store) CommitPvtDataOfOldBlocks(blocksPvtData map[uint64][]*ledger.TxPvtData) error {
  	if s.isLastUpdatedOldBlocksSet {
  		return &ErrIllegalCall{`The lastUpdatedOldBlocksList is set. It means that the
  		stateDB may not be in sync with the pvtStore`}
  	}
  
  	// (1) construct dataEntries for all pvtData
  	dataEntries := constructDataEntriesFromBlocksPvtData(blocksPvtData)
  
  	// (2) construct update entries (i.e., dataEntries, expiryEntries, missingDataEntries) from the above created data entries
  	logger.Debugf("Constructing pvtdatastore entries for pvtData of [%d] old blocks", len(blocksPvtData))
  	updateEntries, err := s.constructUpdateEntriesFromDataEntries(dataEntries)
  	if err != nil {
  		return err
  	}
  
  	// (3) create a db update batch from the update entries
  	logger.Debug("Constructing update batch from pvtdatastore entries")
  	batch, err := constructUpdateBatchFromUpdateEntries(updateEntries)
  	if err != nil {
  		return err
  	}
  
  	// (4) commit the update entries to the pvtStore
  	logger.Debug("Committing the update batch to pvtdatastore")
  	if err := s.commitBatch(batch); err != nil {
  		return err
  	}
  	s.isLastUpdatedOldBlocksSet = true
  
  	return nil
  }
docs: // CommitPvtDataOfOldBlocks commits the pvtData (i.e., previously missing data) of old blocks.
  // The parameter `blocksPvtData` refers a list of old block's pvtdata which are missing in the pvtstore.
  // Given a list of old block's pvtData, `CommitPvtDataOfOldBlocks` performs the following four
  // operations
  // (1) construct dataEntries for all pvtData
  // (2) construct update entries (i.e., dataEntries, expiryEntries, missingDataEntries, and
  //     lastUpdatedOldBlocksList) from the above created data entries
  // (3) create a db update batch from the update entries
  // (4) commit the update entries to the pvtStore