Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
neoppod
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Levin Zimmermann
neoppod
Commits
097387c1
Commit
097387c1
authored
Jun 26, 2018
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
791f818f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
15 deletions
+15
-15
go/wcfs/wcfs.go
go/wcfs/wcfs.go
+15
-15
No files found.
go/wcfs/wcfs.go
View file @
097387c1
...
...
@@ -70,15 +70,15 @@
//
// bigfile/<bigfileX>/head/
// data ; latest bigfile data
//
serial ; last update to data was at this
transaction
//
at ; data is bigfile view as of this ZODB
transaction
// invalidations ; channel that describes invalidated data regions
//
// where /data represents latest bigfile data as stored in upstream ZODB. As
there
//
can be some lag receiving updates from the database, /serial
describes
// precisely
currently exposed bigfile revision. Whenever bigfile data is changed in
//
upstream ZODB, information about the changes is first propagated to
//
/invalidations, and only after that /data and /serial are updated. See
// "Invalidation protocol" for details.
// where /data represents latest bigfile data as stored in upstream ZODB. As
//
there can be some lag receiving updates from the database, /at
describes
// precisely
ZODB state for which bigfile data is currently exposed. Whenever
//
bigfile data is changed in upstream ZODB, information about the changes is
//
first propagated to /invalidations, and only after that /data is
//
updated. See
"Invalidation protocol" for details.
//
// @<tidX>/ has the following structure:
//
...
...
@@ -139,18 +139,18 @@
// and waits until they all confirm that changed file part can be updated in
// global OS cache.
//
// The client
s
in turn can now re-mmap invalidated regions to bigfile@Cat
// The client in turn can now re-mmap invalidated regions to bigfile@Cat
//
// # mmapped at addresses corresponding to δR(Sat_prev, Sat)
// mmap(bigfile/<bigfileX>/@<Cat>/data, δR(Sat_prev, Sat), MAP_FIXED)
//
// and must send ack back to the server when
they are
done:
// and must send ack back to the server when
it is
done:
//
// C: ack
//
//
w
hen clients are done with bigfile/<bigfileX>/@<Cat>/data (i.e. Cat
//
W
hen clients are done with bigfile/<bigfileX>/@<Cat>/data (i.e. Cat
// transaction ends and array is unmapped), the server sees number of opened
// files to bigfile/<bigfileX>/@<Cat>/data and automatically destroys
// files to bigfile/<bigfileX>/@<Cat>/data
is zero,
and automatically destroys
// bigfile/<bigfileX>/@<Cat>/ directory after reasonable timeout.
//
//
...
...
@@ -163,11 +163,11 @@
//
// To avoid this problem it should be possible for wcfs to stop a client with
// ptrace and change its address space in a style similar to e.g.
// VirtualAllocEx on
w
indows. Here is hacky example how this could be done on Linux:
// VirtualAllocEx on
W
indows. Here is hacky example how this could be done on Linux:
//
// https://gist.github.com/rofl0r/1073739/63f0f788a4923e26fcf743dd9a8411d4916f0ac0
//
//
t
his way there should be no possibility for a client to block wcfs
//
T
his way there should be no possibility for a client to block wcfs
// indefinitely waiting for client's ack.
//
// Similarly for initiall mmapings client could first mmap head/data, then open
...
...
@@ -202,8 +202,8 @@
// there is no need to consult /proc/self/pagemap.
//
// The advantage of this scheme over mmap(MAP_PRIVATE) is that in case
// there are several
mappings of the same bigfile with overlapping in-file
// ranges, changes in one mapping will be visible in another mapping.
// there are several
in-process mappings of the same bigfile with overlapping
//
in-file
ranges, changes in one mapping will be visible in another mapping.
// Contrary: whenever a MAP_PRIVATE mapping is modified, the kernel COWs
// faulted page into a page completely private to this mapping, so that other
// MAP_PRIVATE mappings of this file, including ones created from the same
...
...
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