/** * @param loc location of root inode in the page * @return dirtied root inode with exclusive latch held */ private static _Node prepareMultilevelWrite(_LocalDatabase db, long page, int loc) throws IOException { final _Node inode; final long inodeId = p_uint48GetLE(page, loc); if (inodeId == 0) { // Writing into a sparse value. Allocate a node and point to it. inode = db.allocDirtyFragmentNode(); p_clear(inode.mPage, 0, pageSize(db, inode.mPage)); } else { inode = db.nodeMapLoadFragmentExclusive(inodeId, true); try { if (!db.markFragmentDirty(inode)) { // Already dirty, so no need to update the pointer. return inode; } } catch (Throwable e) { inode.releaseExclusive(); throw e; } } p_int48PutLE(page, loc, inode.mId); return inode; }
/** * @param loc location of root inode in the page * @return dirtied root inode with exclusive latch held */ private _Node prepareMultilevelWrite(long page, int loc) throws IOException { final _Node inode; setPtr: { final long inodeId = p_uint48GetLE(page, loc); if (inodeId == 0) { // Writing into a sparse value. Allocate a node and point to it. inode = mDatabase.allocDirtyFragmentNode(); p_clear(inode.mPage, 0, pageSize(inode.mPage)); } else { _LocalDatabase db = mDatabase; inode = db.nodeMapLoadFragmentExclusive(inodeId, true); try { if (!db.markFragmentDirty(inode)) { // Already dirty, so no need to update the pointer. break setPtr; } } catch (Throwable e) { inode.releaseExclusive(); throw e; } } p_int48PutLE(page, loc, inode.mId); } return inode; }
/** * @param loc location of root inode in the page * @return dirtied root inode with exclusive latch held */ private _Node prepareMultilevelWrite(long page, int loc) throws IOException { final _Node inode; setPtr: { final long inodeId = p_uint48GetLE(page, loc); if (inodeId == 0) { // Writing into a sparse value. Allocate a node and point to it. inode = mDatabase.allocDirtyFragmentNode(); p_clear(inode.mPage, 0, pageSize(inode.mPage)); } else { _LocalDatabase db = mDatabase; inode = db.nodeMapLoadFragmentExclusive(inodeId, true); try { if (!db.markFragmentDirty(inode)) { // Already dirty, so no need to update the pointer. break setPtr; } } catch (Throwable e) { inode.releaseExclusive(); throw e; } } p_int48PutLE(page, loc, inode.mId); } return inode; }
try { for (int i=0; i<childNodeCount; i++) { _Node childNode = allocDirtyFragmentNode(); p_int48PutLE(page, poffset, childNode.mId); poffset += 6;
try { for (int i=0; i<childNodeCount; i++) { _Node childNode = allocDirtyFragmentNode(); p_int48PutLE(page, poffset, childNode.mId); poffset += 6;
try { for (int i=0; i<childNodeCount; i++) { _Node childNode = allocDirtyFragmentNode(); p_int48PutLE(page, poffset, childNode.mId); poffset += 6;
_Node inode = tree.mDatabase.allocDirtyFragmentNode(); _Node upper = tree.mDatabase.allocDirtyFragmentNode(); long upage = upper.mPage; p_int48PutLE(upage, 0, inode.mId);
childNode = db.allocDirtyFragmentNode(); if (partial) {
_Node inode = tree.mDatabase.allocDirtyFragmentNode(); _Node upper = tree.mDatabase.allocDirtyFragmentNode(); long upage = upper.mPage; p_int48PutLE(upage, 0, inode.mId);
childNode = db.allocDirtyFragmentNode(); if (partial) {
_Node fNode = db.allocDirtyFragmentNode(); p_clear(fNode.mPage, 0, pageSize); fNodes[i] = fNode;
int voffset = remainder; while (true) { _Node node = allocDirtyFragmentNode(); try { encodeInt48LE(newValue, poffset, node.mId); int voffset = 0; while (true) { _Node node = allocDirtyFragmentNode(); try { encodeInt48LE(newValue, poffset, node.mId); } else { int levels = calculateInodeLevels(vlength); _Node inode = allocDirtyFragmentNode(); try { encodeInt48LE(newValue, offset, inode.mId);
int voffset = remainder; while (true) { _Node node = allocDirtyFragmentNode(); try { encodeInt48LE(newValue, poffset, node.mId); int voffset = 0; while (true) { _Node node = allocDirtyFragmentNode(); try { encodeInt48LE(newValue, poffset, node.mId); } else { int levels = calculateInodeLevels(vlength); _Node inode = allocDirtyFragmentNode(); try { encodeInt48LE(newValue, offset, inode.mId);
txn.pushUnalloc(cursor.mTree.mId, cursor.mKey, pos, len); childNode = db.allocDirtyFragmentNode(); if (ppos > 0 || len < pageSize) { if (childNodeId == 0) { childNode = db.allocDirtyFragmentNode();
int voffset = remainder; while (true) { _Node node = allocDirtyFragmentNode(); try { encodeInt48LE(newValue, poffset, node.mId); int voffset = 0; while (true) { _Node node = allocDirtyFragmentNode(); try { encodeInt48LE(newValue, poffset, node.mId); } else { int levels = calculateInodeLevels(vlength); _Node inode = allocDirtyFragmentNode(); try { encodeInt48LE(newValue, offset, inode.mId);
rightNode = db.allocDirtyFragmentNode(); p_clear(rightNode.mPage, fInlineLen, pageSize); shrinkage = 2 + fInlineLen - 6; _Node inode; try { inode = db.allocDirtyFragmentNode(); } catch (Throwable e) { node.releaseExclusive();
_Node upper = mDatabase.allocDirtyFragmentNode(); long upage = upper.mPage; p_int48PutLE(upage, 0, inode.mId); if (fNodeId == 0) { final _Node fNode = mDatabase.allocDirtyFragmentNode(); try { p_int48PutLE(page, loc, fNode.mId);
_Node upper = mDatabase.allocDirtyFragmentNode(); long upage = upper.mPage; p_int48PutLE(upage, 0, inode.mId); if (fNodeId == 0) { final _Node fNode = mDatabase.allocDirtyFragmentNode(); try { p_int48PutLE(page, loc, fNode.mId);
for (int i=0; i<newNodes.length; i++) { try { newNodes[i] = db.allocDirtyFragmentNode(); } catch (Throwable e) { try { txn.pushUnalloc(cursor.mTree.mId, cursor.mKey, pos, amt); final _Node fNode = db.allocDirtyFragmentNode(); try { p_int48PutLE(page, loc, fNode.mId);