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
ce13601e
Commit
ce13601e
authored
Oct 30, 2019
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
2b17189e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
4 deletions
+10
-4
wcfs/internal/wcfs_virtmem.cpp
wcfs/internal/wcfs_virtmem.cpp
+10
-4
No files found.
wcfs/internal/wcfs_virtmem.cpp
View file @
ce13601e
...
@@ -114,7 +114,9 @@ struct Conn {
...
@@ -114,7 +114,9 @@ struct Conn {
sync
::
Mutex
_filemu
;
sync
::
Mutex
_filemu
;
dict
<
Oid
,
_File
*>
_filetab
;
// {} foid -> _file
dict
<
Oid
,
_File
*>
_filetab
;
// {} foid -> _file
public:
error
close
();
error
close
();
void
resync
(
Tid
at
);
private:
private:
void
_pinner
(
IContext
*
ctx
);
void
_pinner
(
IContext
*
ctx
);
...
@@ -368,7 +370,10 @@ void Conn::resync(Tid at) { // XXX void -> err?
...
@@ -368,7 +370,10 @@ void Conn::resync(Tid at) { // XXX void -> err?
// XXX locking
// XXX locking
for
foid
,
f
in
wconn
.
_filetab
.
items
()
:
for
(
auto
_
:
wconn
.
_filetab
)
{
Oid
foid
=
_
.
first
;
_File
*
f
=
_
.
second
;
// XXX if file has no mappings and was not used during whole prev
// XXX if file has no mappings and was not used during whole prev
// cycle - forget and stop watching it
// cycle - forget and stop watching it
...
@@ -379,13 +384,13 @@ void Conn::resync(Tid at) { // XXX void -> err?
...
@@ -379,13 +384,13 @@ void Conn::resync(Tid at) { // XXX void -> err?
assert
f
.
headfsize
<=
headfsize
// head/file size ↑=
assert
f
.
headfsize
<=
headfsize
// head/file size ↑=
assert
headfsize
%
f
.
blksize
==
0
assert
headfsize
%
f
.
blksize
==
0
for
mmap
in
f
.
mmaps
:
for
mmap
in
f
.
mmaps
:
print
(
'
resync
->
%
s
:
unzero
[
%
d
:%
d
)
'
%
(
at
,
f
.
headfsize
//f.blksize, headfsize//f.blksize))
print
f
(
" resync -> %s: unzero [%d:%d)"
%
(
at
,
f
.
headfsize
//f.blksize, headfsize//f.blksize));
memunzero
=
mmap
.
mem
[
f
.
headfsize
-
mmap
.
blk_start
*
f
.
blksize
:
memunzero
=
mmap
.
mem
[
f
.
headfsize
-
mmap
.
blk_start
*
f
.
blksize
:
headfsize
-
mmap
.
blk_start
*
f
.
blksize
]
headfsize
-
mmap
.
blk_start
*
f
.
blksize
]
if
len
(
memunzero
)
>
0
:
if
len
(
memunzero
)
>
0
:
mm
.
map_into_ro
(
memunzero
,
f
.
headf
.
fileno
(),
f
.
headfsize
)
mm
.
map_into_ro
(
memunzero
,
f
.
headf
.
fileno
(),
f
.
headfsize
)
f
.
headfsize
=
headfsize
f
.
headfsize
=
headfsize
;
_
=
wconn
.
_wlink
.
sendReq
(
context
.
background
(),
b
"watch %s @%s"
%
(
h
(
foid
),
h
(
at
)))
_
=
wconn
.
_wlink
.
sendReq
(
context
.
background
(),
b
"watch %s @%s"
%
(
h
(
foid
),
h
(
at
)))
...
@@ -393,8 +398,9 @@ void Conn::resync(Tid at) { // XXX void -> err?
...
@@ -393,8 +398,9 @@ void Conn::resync(Tid at) { // XXX void -> err?
// XXX unregister f from _filetab
// XXX unregister f from _filetab
// XXX vvv -> errctx?
// XXX vvv -> errctx?
raise
RuntimeError
(
"resync @%s -> @%s: f<%s>: %s"
%
(
h
(
wconn
.
at
),
h
(
at
),
h
(
foid
),
_
))
raise
RuntimeError
(
"resync @%s -> @%s: f<%s>: %s"
%
(
h
(
wconn
.
at
),
h
(
at
),
h
(
foid
),
_
))
}
wconn
.
at
=
at
wconn
.
at
=
at
;
}
}
// _remmapblk remmaps mapping memory for file[blk] to be viewing database as of @at state.
// _remmapblk remmaps mapping memory for file[blk] to be viewing database as of @at state.
...
...
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