Commit e3a6a970 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent a189bd99
...@@ -25,10 +25,14 @@ invalidating pagecache - e.g. it will invalidate whole cache on file size change ...@@ -25,10 +25,14 @@ invalidating pagecache - e.g. it will invalidate whole cache on file size change
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/fuse/inode.c?id=e0bc833d10#n233 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/fuse/inode.c?id=e0bc833d10#n233
we can currently workaround it with using writeback mode (see !is_wb in the (XXX no) we can currently workaround it with using writeback mode (see !is_wb in the
link above), but better we have proper FUSE flag for filesystem server to link above), but better we have proper FUSE flag for filesystem server to
tell the kernel it is fully responsible for invalidating pagecache. tell the kernel it is fully responsible for invalidating pagecache.
XXX ^^^ we cannot workaround with writeback mode - in writeback mode the kernel
does not trust us for size that we report via getattr, and thus we cannot even
update the file from being 0 size to having some data.
Invalidations to wcfs clients are delayed until block access Invalidations to wcfs clients are delayed until block access
============================================================ ============================================================
......
...@@ -809,7 +809,7 @@ retry: ...@@ -809,7 +809,7 @@ retry:
zhead.txnCtx = ctx zhead.txnCtx = ctx
// 2. restat invalidated ZBigFile // 2. restat invalidated ZBigFile
// XXX -> parallel? // XXX -> parallel
// XXX locking // XXX locking
for file := range toinvalidate { for file := range toinvalidate {
size, treePath, err := file.zfile.Size(ctx) size, treePath, err := file.zfile.Size(ctx)
......
...@@ -377,6 +377,8 @@ def test_wcfs(): ...@@ -377,6 +377,8 @@ def test_wcfs():
t.commit() t.commit()
t.wcsync() # sync wcfs to ZODB t.wcsync() # sync wcfs to ZODB
print(t.stat(zf))
assert f.cached() == [0,0,0] # initially not cached assert f.cached() == [0,0,0] # initially not cached
f.assertData ([b'',b'',s], mtime=t.head) f.assertData ([b'',b'',s], mtime=t.head)
# XXX assertCache all present? # XXX assertCache all present?
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment