Commit 80736395 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 80987dcc
...@@ -127,6 +127,27 @@ will be our future approach after we teach NEO about object deduplication. ...@@ -127,6 +127,27 @@ will be our future approach after we teach NEO about object deduplication.
# #
# TODO add top-level overview # TODO add top-level overview
# #
# zfile (ZBigFile)
# .blksize
# .blktab LOBTree #blk -> ZBlk*
#
# ._v_file _ZBigFile
# ._v_filehset weakset(_ZBigFileH) created for zfile
#
# zfileh (_ZBigFileH)
#
# ZBigFile is kept as Live persistent because XXX
#
#
# DB -> ZBlk.blkdata (-> memory-page)
# (DB <- ) ZBlk.blkdata <- memory-page
#
# (DB -> invalidate ZBlk.blkdata -> invalidate memory-page)
# + FIXME topology changes are not handled correctly
# + FIXME ZBlk is ghostified
#
#
#
# As file pages are changed in RAM with changes being managed by virtmem # As file pages are changed in RAM with changes being managed by virtmem
# subsystem, we need to propagate the changes to ZODB objects back at some time. # subsystem, we need to propagate the changes to ZODB objects back at some time.
# #
...@@ -630,6 +651,9 @@ class ZBigFile(LivePersistent): ...@@ -630,6 +651,9 @@ class ZBigFile(LivePersistent):
# - True -> use wcfs # - True -> use wcfs
# - False -> don't use wcfs # - False -> don't use wcfs
# - not set -> behave according to global default # - not set -> behave according to global default
#
# XXX several fileh could be opened for one ZBigFile. Is it useful at all?
# normally in one zconn there is only one zfileh opened for zfile.
def fileh_open(self, _use_wcfs=None): def fileh_open(self, _use_wcfs=None):
if _use_wcfs is None: if _use_wcfs is None:
_use_wcfs = self._default_use_wcfs() _use_wcfs = self._default_use_wcfs()
...@@ -730,13 +754,12 @@ Connection.open = Connection_open ...@@ -730,13 +754,12 @@ Connection.open = Connection_open
@implementer(ISynchronizer) @implementer(ISynchronizer)
class _ZBigFileH(object): class _ZBigFileH(object):
# .zfile ZBigFile we were opened for # .zfile ZBigFile we were opened for
# # .wcfileh handle for ZBigFile in wcfs | None # .wcfileh handle for ZBigFile in wcfs | None
# .zfileh handle for ZBigFile (overlayed over .wcfileh if .wcfileh != ø) # .zfileh handle for ZBigFile (overlayed over .wcfileh if .wcfileh != ø)
# def __init__(self, zfile, wcfileh): def __init__(self, zfile, wcfileh):
def __init__(self, zfile, wc): # wc: wcfs.WCFS | None
self.zfile = zfile self.zfile = zfile
# self.wcfileh = wcfileh self.wcfileh = wcfileh
self.zfileh = zfile._v_file.fileh_open() # XXX pass wcfileh in self.zfileh = zfile._v_file.fileh_open() # XXX pass wcfileh in
# FIXME zfile._p_jar could be None (ex. ZBigFile is newly created # FIXME zfile._p_jar could be None (ex. ZBigFile is newly created
......
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