MCPcopy Create free account
hub / github.com/davidgiven/fluxengine / flushvol

Function flushvol

dep/hfsutils/libhfs/volume.c:122–155  ·  view source on GitHub ↗

* NAME: flushvol() * DESCRIPTION: flush all pending changes (B*-tree, MDB, VBM) to volume */

Source from the content-addressed store, hash-verified

120 * DESCRIPTION: flush all pending changes (B*-tree, MDB, VBM) to volume
121 */
122static
123int flushvol(hfsvol *vol, int umount)
124{
125 if (vol->flags & HFS_VOL_READONLY)
126 goto done;
127
128 if ((vol->ext.flags & HFS_BT_UPDATE_HDR) &&
129 bt_writehdr(&vol->ext) == -1)
130 goto fail;
131
132 if ((vol->cat.flags & HFS_BT_UPDATE_HDR) &&
133 bt_writehdr(&vol->cat) == -1)
134 goto fail;
135
136 if ((vol->flags & HFS_VOL_UPDATE_VBM) &&
137 v_writevbm(vol) == -1)
138 goto fail;
139
140 if (umount && ! (vol->mdb.drAtrb & HFS_ATRB_UMOUNTED))
141 {
142 vol->mdb.drAtrb |= HFS_ATRB_UMOUNTED;
143 vol->flags |= HFS_VOL_UPDATE_MDB;
144 }
145
146 if ((vol->flags & (HFS_VOL_UPDATE_MDB | HFS_VOL_UPDATE_ALTMDB)) &&
147 v_writemdb(vol) == -1)
148 goto fail;
149
150done:
151 return 0;
152
153fail:
154 return -1;
155}
156
157/*
158 * NAME: vol->flush()

Callers 2

v_flushFunction · 0.85
v_closeFunction · 0.85

Calls 3

bt_writehdrFunction · 0.85
v_writevbmFunction · 0.85
v_writemdbFunction · 0.85

Tested by

no test coverage detected