[svn-r2208] Big.html --> BigDataSmMach.html
Coding.html --> NamingScheme.html CodeReview.html ExternalFiles.html compat.html --> H4-H5Compat.html heap.txt --> HeapMgmt.html IOPipe.html Lib_Maint.html --> LibMaint.html MemoryManagement.html move.html --> MoveDStruct.html ObjectHeader.txt storage.html --> RawDStorage.html symtab --> SymbolTables.html Version.html Above files moved from doc/html/ to doc/html/TechNotes/ for into new "HDF5 Technical Notes" document. Filenames changed as indicated.
This commit is contained in:
66
doc/html/TechNotes/MoveDStruct.html
Normal file
66
doc/html/TechNotes/MoveDStruct.html
Normal file
@@ -0,0 +1,66 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Relocating a File Data Structure</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Relocating a File Data Structure</h1>
|
||||
|
||||
<p>Since file data structures can be cached in memory by the H5AC
|
||||
package it becomes problematic to move such a data structure in
|
||||
the file. One cannot just copy a portion of the file from one
|
||||
location to another because:
|
||||
|
||||
<ol>
|
||||
<li>the file might not contain the latest information, and</li>
|
||||
<li>the H5AC package might not realize that the object's
|
||||
address has changed and attempt to write the object to disk
|
||||
at the old address.</li>
|
||||
</ol>
|
||||
|
||||
<p>Here's a correct method to move data from one location to
|
||||
another. The example code assumes that one is moving a B-link
|
||||
tree node from <code>old_addr</code> to <code>new_addr</code>.
|
||||
|
||||
<ol>
|
||||
<li>Make sure the disk is up-to-date with respect to the
|
||||
cache. There is no need to remove the item from the cache,
|
||||
hence the final argument to <code>H5AC_flush</code> is
|
||||
<code>FALSE</code>.
|
||||
<br><br>
|
||||
<code>
|
||||
H5AC_flush (f, H5AC_BT, old_addr, FALSE);<br>
|
||||
</code>
|
||||
<br>
|
||||
</li>
|
||||
|
||||
<li>Read the data from the old address and write it to the new
|
||||
address.
|
||||
<br><br>
|
||||
<code>
|
||||
H5F_block_read (f, old_addr, size, buf);<br>
|
||||
H5F_block_write (f, new_addr, size, buf);<br>
|
||||
</code>
|
||||
<br>
|
||||
</li>
|
||||
|
||||
<li>Notify the cache that the address of the object changed.
|
||||
<br><br>
|
||||
<code>
|
||||
H5AC_rename (f, H5AC_BT, old_addr, new_addr);<br>
|
||||
</code>
|
||||
<br>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
<address><a href="mailto:robb@maya.nuance.com">Robb Matzke</a></address>
|
||||
<!-- Created: Mon Jul 14 15:09:06 EST 1997 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Mon Jul 14 15:38:29 EST
|
||||
<!-- hhmts end -->
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user