pub fn writeManifest(self: *Manifest) !void self: *Manifest1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172 pub fn writeManifest(self: *Manifest) !void {
assert(self.have_exclusive_lock);
const io = self.cache.io;
const manifest_file = self.manifest_file.?;
if (self.manifest_dirty) {
self.manifest_dirty = false;
var buffer: [4000]u8 = undefined;
var fw = manifest_file.writer(io, &buffer);
writeDirtyManifestToStream(self, &fw) catch |err| switch (err) {
error.WriteFailed => return fw.err.?,
else => |e| return e,
};
}
if (self.want_shared_lock) {
try self.downgradeToSharedLock();
}
}
If
want_shared_lockis true, this function automatically downgrades the lock from exclusive to shared.