Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
W
wendelin.core
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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Joshua
wendelin.core
Commits
38ea1ad3
Commit
38ea1ad3
authored
Jun 27, 2019
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
926c30b4
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
12 additions
and
5 deletions
+12
-5
wcfs/notes.txt
wcfs/notes.txt
+3
-0
wcfs/wcfs.go
wcfs/wcfs.go
+6
-5
wcfs/wcfs_test.py
wcfs/wcfs_test.py
+3
-0
No files found.
wcfs/notes.txt
View file @
38ea1ad3
...
...
@@ -141,6 +141,9 @@ Starting from Linux 5.1 mmap_sem should be generally released while doing any IO
but before that the analysis remains FUSE-specific.
The property that changing mmapping while under pagefault is possible is
verified by wcfs testsuite in `test_wcfs_remmap_on_pin` test.
Client cannot be ptraced while under pagefault
==============================================
...
...
wcfs/wcfs.go
View file @
38ea1ad3
...
...
@@ -359,18 +359,18 @@ package main
// using just cheap revmax estimate can frequently result in all watches
// being skipped.
//
// 7.2) for all registered client@at watche
r
s of head/bigfile/file:
// 7.2) for all registered client@at watches of head/bigfile/file:
//
// - rev'(blk) ≤ at: -> do nothing
// - rev'(blk) > at:
// - if blk ∈ watch
er
.pinned -> do nothing
// - if blk ∈ watch.pinned -> do nothing
// - rev = max(δtail.by(#blk) : _ ≤ at) || min(rev ∈ δtail : rev ≤ at) || at
// - watch
er
.pin(file, #blk, @rev)
// - watch
er
.pinned += blk
// - watch.pin(file, #blk, @rev)
// - watch.pinned += blk
//
// where
//
// watch
er
.pin(file, #blk, @rev)
// watch.pin(file, #blk, @rev)
//
// sends pin message according to "Invalidation protocol", and is assumed
// to cause
...
...
@@ -1004,6 +1004,7 @@ func (f *BigFile) invalidateBlk(ctx context.Context, blk int64) (err error) {
delete
(
f
.
loading
,
blk
)
}
// XXX skip retrieve/store if len(f.watches) == 0
// try to retrieve cache of current head/data[blk], if we got nothing from f.loading
if
blkdata
==
nil
{
blkdata
=
make
([]
byte
,
blksize
)
...
...
wcfs/wcfs_test.py
View file @
38ea1ad3
...
...
@@ -1682,6 +1682,9 @@ def test_wcfs_watch_vs_access():
# verify that on pin message, while under pagefault, we can mmap @at/f[blk]
# into where head/f[blk] was mmaped; the result of original pagefaulting read
# must be from newly insterted mapping.
#
# TODO same with two mappings to the same file, but only one changing blk mmap
# -> one read gets changed data, one read gets data from @head.
@
func
def
test_wcfs_remmap_on_pin
():
t
=
tDB
();
zf
=
t
.
zfile
...
...
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