Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
2f855bfa
Unverified
Commit
2f855bfa
authored
5 years ago
by
Péter Szilágyi
Committed by
GitHub
5 years ago
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #19591 from karalabe/64bit-align
core/rawdb, eth/downloader: align 64bit atomic fields
parents
8cce6203
f35975ea
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
17 additions
and
5 deletions
+17
-5
freezer.go
core/rawdb/freezer.go
+5
-1
freezer_table.go
core/rawdb/freezer_table.go
+5
-1
downloader.go
eth/downloader/downloader.go
+7
-3
No files found.
core/rawdb/freezer.go
View file @
2f855bfa
...
...
@@ -66,8 +66,12 @@ const (
// reserving it for go-ethereum. This would also reduce the memory requirements
// of Geth, and thus also GC overhead.
type
freezer
struct
{
// WARNING: The `frozen` field is accessed atomically. On 32 bit platforms, only
// 64-bit aligned fields can be atomic. The struct is guaranteed to be so aligned,
// so take advantage of that (https://golang.org/pkg/sync/atomic/#pkg-note-BUG).
frozen
uint64
// Number of blocks already frozen
tables
map
[
string
]
*
freezerTable
// Data tables for storing everything
frozen
uint64
// Number of blocks already frozen
instanceLock
fileutil
.
Releaser
// File-system lock to prevent double opens
}
...
...
This diff is collapsed.
Click to expand it.
core/rawdb/freezer_table.go
View file @
2f855bfa
...
...
@@ -73,6 +73,11 @@ func (i *indexEntry) marshallBinary() []byte {
// It consists of a data file (snappy encoded arbitrary data blobs) and an indexEntry
// file (uncompressed 64 bit indices into the data file).
type
freezerTable
struct
{
// WARNING: The `items` field is accessed atomically. On 32 bit platforms, only
// 64-bit aligned fields can be atomic. The struct is guaranteed to be so aligned,
// so take advantage of that (https://golang.org/pkg/sync/atomic/#pkg-note-BUG).
items
uint64
// Number of items stored in the table (including items removed from tail)
noCompression
bool
// if true, disables snappy compression. Note: does not work retroactively
maxFileSize
uint32
// Max file size for data-files
name
string
...
...
@@ -86,7 +91,6 @@ type freezerTable struct {
// In the case that old items are deleted (from the tail), we use itemOffset
// to count how many historic items have gone missing.
items
uint64
// Number of items stored in the table (including items removed from tail)
itemOffset
uint32
// Offset (number of discarded items)
headBytes
uint32
// Number of bytes written to the head file
...
...
This diff is collapsed.
Click to expand it.
eth/downloader/downloader.go
View file @
2f855bfa
...
...
@@ -98,6 +98,13 @@ var (
)
type
Downloader
struct
{
// WARNING: The `rttEstimate` and `rttConfidence` fields are accessed atomically.
// On 32 bit platforms, only 64-bit aligned fields can be atomic. The struct is
// guaranteed to be so aligned, so take advantage of that. For more information,
// see https://golang.org/pkg/sync/atomic/#pkg-note-BUG.
rttEstimate
uint64
// Round trip time to target for download requests
rttConfidence
uint64
// Confidence in the estimated RTT (unit: millionths to allow atomic ops)
mode
SyncMode
// Synchronisation mode defining the strategy used (per sync cycle)
mux
*
event
.
TypeMux
// Event multiplexer to announce sync operation events
...
...
@@ -109,9 +116,6 @@ type Downloader struct {
stateDB
ethdb
.
Database
// Database to state sync into (and deduplicate via)
stateBloom
*
trie
.
SyncBloom
// Bloom filter for fast trie node existence checks
rttEstimate
uint64
// Round trip time to target for download requests
rttConfidence
uint64
// Confidence in the estimated RTT (unit: millionths to allow atomic ops)
// Statistics
syncStatsChainOrigin
uint64
// Origin block number where syncing started at
syncStatsChainHeight
uint64
// Highest block number known when syncing started
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment