@volter/browser-wali 0.1.170 → 0.1.172

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,15 @@
1
1
  import { closeSharedPipe, pollSharedPipe, readSharedPipe, readSharedPipeSync, sharedPipeGeneration, sharedPipeAvailable, writeSharedPipeSync, } from "./process-bridge.js";
2
2
  import { WaliDescriptionRegistry, WaliProcessDescriptorTable } from "./descriptors.js";
3
3
  import { gatherWaliWriteVector } from "./write-vector.js";
4
+ import { hostWait } from "./host-idle.js";
5
+ import { waliSignalWaitState } from "./signal-interruption.js";
4
6
  const PIPE_FD_MIN = 10_000;
5
7
  const PIPE_FD_MAX = 19_999;
6
8
  const PIPE_SLOT_COUNT = 64;
7
9
  const PIPE_PAYLOAD_BYTES = 64 * 1024;
8
- const PIPE_CONTROL_WORDS = 8;
10
+ const PIPE_CONTROL_WORDS = 10;
11
+ const FIFO_READER_OPEN = 8;
12
+ const FIFO_WRITER_OPEN = 9;
9
13
  const PIPE_READER_REFS = 3;
10
14
  const PIPE_WRITER_REFS = 4;
11
15
  const O_NONBLOCK = 0x800;
@@ -25,10 +29,21 @@ export function createWaliSharedPipeState(table = new WaliProcessDescriptorTable
25
29
  slots: new SharedArrayBuffer(PIPE_SLOT_COUNT * Int32Array.BYTES_PER_ELEMENT),
26
30
  controls: new SharedArrayBuffer(PIPE_SLOT_COUNT * PIPE_CONTROL_WORDS * Int32Array.BYTES_PER_ELEMENT),
27
31
  payloads: new SharedArrayBuffer(PIPE_SLOT_COUNT * PIPE_PAYLOAD_BYTES),
32
+ fifoWaits: new SharedArrayBuffer(65_536 * Int32Array.BYTES_PER_ELEMENT),
28
33
  };
29
34
  localTables.set(state.table, table);
30
35
  return state;
31
36
  }
37
+ const namedSlots = new WeakMap();
38
+ /** Storage inode retained by a named pipe description, including after unlink. */
39
+ export function waliNamedPipeInode(table, fd) {
40
+ const description = table.get(fd);
41
+ return description?.kind === "pipe" ? description.value.inode : undefined;
42
+ }
43
+ export function waliNamedPipePath(table, fd) {
44
+ const description = table.get(fd);
45
+ return description?.kind === "pipe" ? description.value.path : undefined;
46
+ }
32
47
  const localTables = new WeakMap();
33
48
  /** The table's and descriptions' views, made once per state rather than per poll. */
34
49
  const entryViews = new WeakMap();
@@ -75,15 +90,30 @@ export function pollWaliSharedPipeState(state, fd, events) {
75
90
  const entry = pipeEntry(state, fd);
76
91
  if (entry === 0)
77
92
  return;
93
+ const id = Atomics.load(new Int32Array(state.table), fd);
94
+ return pollPipeEntry(state, entry, id, events);
95
+ }
96
+ function pollPipeEntry(state, entry, id, events) {
78
97
  const slot = Math.abs(entry) - 1;
79
- return pollSharedPipe({
80
- control: state.controls,
81
- payload: state.payloads,
82
- role: entry > 0 ? "reader" : "writer",
83
- controlOffset: slot * PIPE_CONTROL_WORDS * Int32Array.BYTES_PER_ELEMENT,
84
- payloadOffset: slot * PIPE_PAYLOAD_BYTES,
85
- payloadLength: PIPE_PAYLOAD_BYTES,
86
- }, events);
98
+ const handle = {
99
+ control: state.controls, payload: state.payloads, role: entry > 0 ? "reader" : "writer",
100
+ controlOffset: slot * PIPE_CONTROL_WORDS * 4, payloadOffset: slot * PIPE_PAYLOAD_BYTES, payloadLength: PIPE_PAYLOAD_BYTES,
101
+ };
102
+ let ready = pollSharedPipe(handle, events);
103
+ if (Atomics.load(new Int32Array(state.slots), slot) === 2) {
104
+ const flags = Atomics.load(new Int32Array(state.descriptions), id * 3 + 1);
105
+ if ((flags & 3) === 2)
106
+ ready |= pollSharedPipe({ ...handle, role: "writer" }, events);
107
+ else if (entry > 0 && (ready & 0x10)) {
108
+ // A nonblocking reader reports EOF but not POLLHUP until a writer
109
+ // has connected since its open (Linux fifo_poll / f_version).
110
+ const mark = Atomics.load(new Int32Array(state.fifoWaits), id);
111
+ const control = new Int32Array(state.controls, slot * PIPE_CONTROL_WORDS * 4, PIPE_CONTROL_WORDS);
112
+ if (mark && Atomics.load(control, FIFO_WRITER_OPEN) === ((mark - 1) | 0))
113
+ ready &= ~0x10;
114
+ }
115
+ }
116
+ return ready;
87
117
  }
88
118
  export function waliSharedPipeGeneration(state, fd) {
89
119
  if (!Number.isSafeInteger(fd) || fd < 0 || fd >= 65_536)
@@ -98,17 +128,19 @@ export function waliSharedPipeGeneration(state, fd) {
98
128
  controlOffset: (Math.abs(entry) - 1) * PIPE_CONTROL_WORDS * Int32Array.BYTES_PER_ELEMENT,
99
129
  });
100
130
  }
101
- /** Process-wide anonymous pipes shared by the root Wasm instance and every pthread. */
131
+ /** Anonymous and named pipes shared by every process and pthread in one kernel. */
102
132
  export class WaliSharedPipeHost {
103
133
  memory;
104
134
  state;
105
135
  remote;
136
+ waitForNamedOpen;
106
137
  table;
107
138
  slots;
108
- constructor(memory, state, table, remote) {
139
+ constructor(memory, state, table, remote, waitForNamedOpen = false) {
109
140
  this.memory = memory;
110
141
  this.state = state;
111
142
  this.remote = remote;
143
+ this.waitForNamedOpen = waitForNamedOpen;
112
144
  this.table = table ?? localTables.get(state.table);
113
145
  this.slots = new Int32Array(state.slots);
114
146
  }
@@ -121,13 +153,19 @@ export class WaliSharedPipeHost {
121
153
  }
122
154
  pollDescriptor(fd, events) {
123
155
  const entry = this.entry(fd);
124
- return entry === 0 ? undefined : pollSharedPipe(this.handle(entry), events);
156
+ if (entry === 0)
157
+ return;
158
+ const id = Atomics.load(new Int32Array(this.state.table), fd);
159
+ return pollPipeEntry(this.state, entry, id, events);
125
160
  }
126
161
  /** proc/self/fd reopens the pipe inode with new access/status flags, not dup's description. */
127
162
  reopen(fd, flags) {
128
163
  const entry = this.entry(fd);
129
164
  if (!entry || !this.table)
130
165
  return -9n;
166
+ const named = this.table && waliNamedPipeInode(this.table, fd);
167
+ if (named)
168
+ return this.openNamed(named.retain(), flags, waliNamedPipePath(this.table, fd));
131
169
  if ((flags & 3) === 2)
132
170
  return -95n; // A bidirectional pipe description needs two endpoint references.
133
171
  const slot = Math.abs(entry) - 1;
@@ -140,6 +178,131 @@ export class WaliSharedPipeHost {
140
178
  Atomics.store(this.table.registry.pipeMetadata, this.table.entries[next].description * 3 + 1, flags & O_NONBLOCK);
141
179
  return BigInt(next);
142
180
  }
181
+ // Emscripten WasmFS refuses FIFO creation. Linux fs/pipe.c fifo_open
182
+ // supplies these rendezvous rules (https://man7.org/linux/man-pages/man7/fifo.7.html);
183
+ // storage and the shared pipe remain this kernel's seam.
184
+ /** Called only by the descriptor owner; waiting happens in the guest realm. */
185
+ openNamed(inode, flags, path) {
186
+ if (!this.table || (flags & 3) === 3 || (flags & 0x200000)) {
187
+ inode.close();
188
+ return -95n;
189
+ }
190
+ let names = namedSlots.get(this.state.controls);
191
+ if (!names) {
192
+ names = new Map();
193
+ namedSlots.set(this.state.controls, names);
194
+ }
195
+ const stat = inode.stat();
196
+ const key = `${stat.dev ?? 1}:${stat.ino}`;
197
+ let slot = names.get(key);
198
+ if (slot === undefined) {
199
+ slot = this.allocateSlot();
200
+ if (slot < 0) {
201
+ inode.close();
202
+ return -24n;
203
+ }
204
+ this.control(slot).fill(0);
205
+ Atomics.store(this.slots, slot, 2);
206
+ names.set(key, slot);
207
+ }
208
+ const control = this.control(slot);
209
+ const access = flags & 3;
210
+ const reading = access !== 1, writing = access !== 0;
211
+ if (access === 1 && (flags & O_NONBLOCK) && Atomics.load(control, PIPE_READER_REFS) === 0) {
212
+ if (Atomics.load(control, PIPE_WRITER_REFS) === 0) {
213
+ names.delete(key);
214
+ Atomics.store(this.slots, slot, 0);
215
+ }
216
+ inode.close();
217
+ return -6n;
218
+ }
219
+ const fd = this.freeDescriptor(0);
220
+ if (fd < 0) {
221
+ if (Atomics.load(control, PIPE_READER_REFS) === 0 && Atomics.load(control, PIPE_WRITER_REFS) === 0) {
222
+ names.delete(key);
223
+ Atomics.store(this.slots, slot, 0);
224
+ }
225
+ inode.close();
226
+ return -24n;
227
+ }
228
+ const entry = (reading ? 1 : -1) * (slot + 1);
229
+ const peerIndex = reading ? FIFO_WRITER_OPEN : FIFO_READER_OPEN;
230
+ const peerRefs = reading ? PIPE_WRITER_REFS : PIPE_READER_REFS;
231
+ const unpaired = access !== 2 && Atomics.load(control, peerRefs) === 0;
232
+ const baseline = Atomics.load(control, peerIndex);
233
+ const release = () => {
234
+ if (reading)
235
+ closeSharedPipe(this.handle(slot + 1));
236
+ if (writing)
237
+ closeSharedPipe(this.handle(-(slot + 1)));
238
+ inode.close();
239
+ if (Atomics.load(control, PIPE_READER_REFS) === 0 && Atomics.load(control, PIPE_WRITER_REFS) === 0) {
240
+ names.delete(key);
241
+ Atomics.store(this.slots, slot, 0);
242
+ }
243
+ };
244
+ const description = (() => {
245
+ try {
246
+ return this.table.registry.create("pipe", { pipe: slot, side: reading ? "reader" : "writer", inode, path }, release);
247
+ }
248
+ catch (error) {
249
+ inode.close();
250
+ if (Atomics.load(control, PIPE_READER_REFS) === 0 && Atomics.load(control, PIPE_WRITER_REFS) === 0) {
251
+ names.delete(key);
252
+ Atomics.store(this.slots, slot, 0);
253
+ }
254
+ throw error;
255
+ }
256
+ })();
257
+ Atomics.store(this.table.registry.pipeMetadata, description.id * 3, entry);
258
+ Atomics.store(this.table.registry.pipeMetadata, description.id * 3 + 1, flags & (O_NONBLOCK | 3));
259
+ Atomics.store(new Int32Array(this.state.fifoWaits), description.id, unpaired ? baseline + 1 : 0);
260
+ this.table.set(fd, description, flags & O_CLOEXEC ? 1 : 0);
261
+ if (reading) {
262
+ Atomics.add(control, PIPE_READER_REFS, 1);
263
+ Atomics.add(control, FIFO_READER_OPEN, 1);
264
+ Atomics.notify(control, FIFO_READER_OPEN);
265
+ }
266
+ if (writing) {
267
+ Atomics.add(control, PIPE_WRITER_REFS, 1);
268
+ Atomics.add(control, FIFO_WRITER_OPEN, 1);
269
+ Atomics.notify(control, FIFO_WRITER_OPEN);
270
+ }
271
+ Atomics.add(control, 5, 1);
272
+ Atomics.add(control, 6, 1);
273
+ Atomics.notify(control, 5);
274
+ Atomics.notify(control, 6);
275
+ return BigInt(fd);
276
+ }
277
+ finishOpen(fd) {
278
+ const entry = this.entry(fd);
279
+ if (!entry || Atomics.load(this.slots, Math.abs(entry) - 1) !== 2 || (this.statusFlags(fd) & (O_NONBLOCK | 3)) === 2
280
+ || (this.statusFlags(fd) & O_NONBLOCK))
281
+ return BigInt(fd);
282
+ const id = Atomics.load(new Int32Array(this.state.table), fd);
283
+ const waits = new Int32Array(this.state.fifoWaits);
284
+ const mark = Atomics.load(waits, id);
285
+ if (!mark)
286
+ return BigInt(fd);
287
+ const control = this.control(Math.abs(entry) - 1);
288
+ const index = entry > 0 ? FIFO_WRITER_OPEN : FIFO_READER_OPEN;
289
+ while (Atomics.load(control, index) === ((mark - 1) | 0)) {
290
+ const signal = waliSignalWaitState();
291
+ if (signal.pending) {
292
+ if (this.remote)
293
+ this.remote.syscall("SYS_close", [fd]);
294
+ else
295
+ this.table.close(fd);
296
+ return -4n;
297
+ }
298
+ hostWait(control, index, (mark - 1) | 0, undefined, undefined, {
299
+ resource: `FIFO ${entry > 0 ? "reader" : "writer"} open: opposite endpoint opens`, deadline: null,
300
+ interrupt: { words: control, index }, guards: signal.guards,
301
+ });
302
+ }
303
+ Atomics.store(waits, id, 0);
304
+ return BigInt(fd);
305
+ }
143
306
  // Emscripten libsyscall.js descriptor dispatch (MIT), 862dc0d4; pipe
144
307
  // counts and status remain in our kernel's shared description/table.
145
308
  ioctl(fd, request, argument) {
@@ -182,6 +345,7 @@ export class WaliSharedPipeHost {
182
345
  // Each call tests the descriptor and calls the pipe's or the fallback's
183
346
  // handler with its own arguments: two closures and an argument array per
184
347
  // call were most of what this layer cost a file's syscall (2026-09-28).
348
+ SYS_ftruncate: (fd, length) => this.isPipeFd(Number(fd)) ? -22n : fallback.SYS_ftruncate?.(fd, length) ?? -38n,
185
349
  SYS_fsync: (fd) => this.isPipeFd(Number(fd)) ? -22n : fallback.SYS_fsync?.(fd) ?? -38n,
186
350
  SYS_fdatasync: (fd) => this.isPipeFd(Number(fd)) ? -22n : fallback.SYS_fdatasync?.(fd) ?? -38n,
187
351
  SYS_close: (fd) => this.isPipeFd(Number(fd)) ? this.close(Number(fd)) : fallback.SYS_close?.(fd) ?? -38n,
@@ -202,7 +366,10 @@ export class WaliSharedPipeHost {
202
366
  SYS_writev: (fd, pointer, count) => this.isPipeFd(Number(fd)) ? this.writev(Number(fd), Number(pointer), Number(count))
203
367
  : fallback.SYS_writev?.(fd, pointer, count) ?? -38n,
204
368
  SYS_lseek: (fd, offset, whence) => this.isPipeFd(Number(fd)) ? -29n : fallback.SYS_lseek?.(fd, offset, whence) ?? -38n,
205
- SYS_fstat: (fd, pointer) => this.isPipeFd(Number(fd)) ? this.fstat(Number(fd), Number(pointer)) : fallback.SYS_fstat?.(fd, pointer) ?? -38n,
369
+ SYS_fstat: (fd, pointer) => this.isPipeFd(Number(fd))
370
+ ? Atomics.load(this.slots, Math.abs(this.entry(Number(fd))) - 1) === 2
371
+ ? fallback.SYS_fstat?.(fd, pointer) ?? -38n : this.fstat(Number(fd), Number(pointer))
372
+ : fallback.SYS_fstat?.(fd, pointer) ?? -38n,
206
373
  SYS_dup: (fd) => this.isPipeFd(Number(fd)) ? this.duplicate(Number(fd)) : fallback.SYS_dup?.(fd) ?? -38n,
207
374
  SYS_dup2: (fd, target) => this.isPipeFd(Number(fd)) ? this.duplicate(Number(fd), Number(target), 3, false, fallback)
208
375
  : fallback.SYS_dup2?.(fd, target) ?? -38n,
@@ -215,6 +382,16 @@ export class WaliSharedPipeHost {
215
382
  : fallback.SYS_fcntl?.(fd, command, argument) ?? -38n,
216
383
  SYS_poll: (pointer, count, timeout) => this.poll(Number(pointer), Number(count), Number(timeout), () => delegate("SYS_poll", [pointer, count, timeout])),
217
384
  };
385
+ if (this.waitForNamedOpen) {
386
+ for (const name of ["SYS_open", "SYS_openat"]) {
387
+ const open = result[name];
388
+ if (open)
389
+ result[name] = (...args) => {
390
+ const value = BigInt(open(...args) ?? -38n);
391
+ return value < 0n ? value : this.finishOpen(Number(value));
392
+ };
393
+ }
394
+ }
218
395
  if (this.remote) {
219
396
  for (const name of ["SYS_pipe", "SYS_pipe2", "SYS_close", "SYS_dup", "SYS_dup2", "SYS_dup3", "SYS_fcntl"]) {
220
397
  const local = result[name];
@@ -258,6 +435,8 @@ export class WaliSharedPipeHost {
258
435
  return -22n;
259
436
  if (!this.validRange(pointer, length))
260
437
  return -14n;
438
+ if ((this.statusFlags(fd) & 3) === 1)
439
+ return -9n;
261
440
  const read = this.statusFlags(fd) & O_NONBLOCK ? readSharedPipe : readSharedPipeSync;
262
441
  const value = read(this.handle(this.entry(fd)), length);
263
442
  if (typeof value === "bigint")
@@ -270,7 +449,9 @@ export class WaliSharedPipeHost {
270
449
  return -22n;
271
450
  if (!this.validRange(pointer, length))
272
451
  return -14n;
273
- return writeSharedPipeSync(this.handle(this.entry(fd)), this.bytes().slice(pointer, pointer + length), Boolean(this.statusFlags(fd) & O_NONBLOCK));
452
+ if (this.entry(fd) > 0 && (this.statusFlags(fd) & 3) !== 2)
453
+ return -9n;
454
+ return writeSharedPipeSync(this.writeHandle(fd), this.bytes().slice(pointer, pointer + length), Boolean(this.statusFlags(fd) & O_NONBLOCK));
274
455
  }
275
456
  readv(fd, pointer, count) {
276
457
  if (!Number.isSafeInteger(count) || count < 0 || count > 1024)
@@ -296,6 +477,8 @@ export class WaliSharedPipeHost {
296
477
  }
297
478
  // One read consumes the currently available bytes. Reading each iovec
298
479
  // separately could park after already consuming data from the first.
480
+ if ((this.statusFlags(fd) & 3) === 1)
481
+ return -9n;
299
482
  const read = this.statusFlags(fd) & O_NONBLOCK ? readSharedPipe : readSharedPipeSync;
300
483
  const value = read(this.handle(this.entry(fd)), total);
301
484
  if (typeof value === "bigint")
@@ -312,8 +495,10 @@ export class WaliSharedPipeHost {
312
495
  return BigInt(value.byteLength);
313
496
  }
314
497
  writev(fd, pointer, count) {
498
+ if (this.entry(fd) > 0 && (this.statusFlags(fd) & 3) !== 2)
499
+ return -9n;
315
500
  const value = gatherWaliWriteVector(this.memory(), pointer, count);
316
- return typeof value === "bigint" ? value : writeSharedPipeSync(this.handle(this.entry(fd)), value, Boolean(this.statusFlags(fd) & O_NONBLOCK));
501
+ return typeof value === "bigint" ? value : writeSharedPipeSync(this.writeHandle(fd), value, Boolean(this.statusFlags(fd) & O_NONBLOCK));
317
502
  }
318
503
  fstat(fd, pointer) {
319
504
  if (!this.validRange(pointer, 144))
@@ -350,7 +535,7 @@ export class WaliSharedPipeHost {
350
535
  if (command === F_GETFL)
351
536
  return BigInt(this.statusFlags(fd) | (this.entry(fd) < 0 ? 1 : 0));
352
537
  if (command === F_SETFL) {
353
- Atomics.store(new Int32Array(this.state.descriptions), entry.description * 3 + 1, argument & O_NONBLOCK);
538
+ Atomics.store(new Int32Array(this.state.descriptions), entry.description * 3 + 1, (this.statusFlags(fd) & 3) | (argument & O_NONBLOCK));
354
539
  return 0n;
355
540
  }
356
541
  return -22n;
@@ -421,6 +606,7 @@ export class WaliSharedPipeHost {
421
606
  return fd;
422
607
  }
423
608
  entry(fd) { return pipeEntry(this.state, fd); }
609
+ writeHandle(fd) { return this.handle(-Math.abs(this.entry(fd))); }
424
610
  handle(entry) {
425
611
  const slot = Math.abs(entry) - 1;
426
612
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"shared-pipes.js","sourceRoot":"","sources":["../src/shared-pipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared-pipes.js","sourceRoot":"","sources":["../src/shared-pipes.ts"],"names":[],"mappings":"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"}
@@ -202,6 +202,7 @@ export declare class SnapshotWaliFileSystem implements WaliFileSystem {
202
202
  private takeSpare;
203
203
  writeFileSync(path: string, data: string | Uint8Array): void;
204
204
  createFileSync(path: string, mode: number): void;
205
+ createFifoSync(path: string, mode: number): void;
205
206
  mkdirSync(path: string, options?: {
206
207
  recursive?: boolean;
207
208
  }): void;
@@ -220,6 +221,8 @@ export declare class SnapshotWaliFileSystem implements WaliFileSystem {
220
221
  content?: Uint8Array;
221
222
  }): void;
222
223
  chmodSync(path: string, mode: number): void;
224
+ chownSync(path: string, owner: number, group: number): void;
225
+ private changeOwnership;
223
226
  utimesSync(path: string, atime: number | Date, mtime: number | Date): void;
224
227
  utimesMsSync(path: string, atimeMs: number, mtimeMs: number, ctimeMs?: number): void;
225
228
  private mutate;
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-filesystem.d.ts","sourceRoot":"","sources":["../src/snapshot-filesystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot-filesystem.d.ts","sourceRoot":"","sources":["../src/snapshot-filesystem.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { realtimeMilliseconds } from "./monotonic-clock.js";
2
+ import { WALI_USER_ID, WALI_GROUP_ID, waliOwnershipAllowed } from "./credentials.js";
2
3
  import { PROJECT_ROOTS } from "@volter/browser-runtime/browser-pack-store.js";
3
4
  import { encodeBase64, decodeBase64 } from "@volter/browser-runtime/browser-base64.js";
4
5
  /**
@@ -535,7 +536,7 @@ export class SnapshotWaliFileSystem {
535
536
  statNode(node) {
536
537
  const size = node.content?.byteLength ?? node.size ?? 0;
537
538
  return {
538
- isFile: () => node.type === "file",
539
+ isFile: () => node.type === "file" && (node.mode & 0o170000) !== 0o010000,
539
540
  isDirectory: () => node.type === "directory",
540
541
  size,
541
542
  mode: node.mode,
@@ -543,8 +544,8 @@ export class SnapshotWaliFileSystem {
543
544
  atimeMs: node.atimeMs,
544
545
  ctimeMs: node.ctimeMs ?? node.mtimeMs,
545
546
  nlink: node.type === "file" ? this.nodes.pathsFor(node).size : 1,
546
- uid: 1000,
547
- gid: 1000,
547
+ uid: WALI_USER_ID,
548
+ gid: WALI_GROUP_ID,
548
549
  dev: 1,
549
550
  ino: node.ino,
550
551
  rdev: 0,
@@ -587,11 +588,12 @@ export class SnapshotWaliFileSystem {
587
588
  chmod: (mode) => {
588
589
  check();
589
590
  this.mutate(() => {
590
- node.mode = mode & 0o7777;
591
+ node.mode = (node.mode & 0o170000) | (mode & 0o7777);
591
592
  node.ctimeMs = realtimeMilliseconds();
592
593
  this.markNodeMutation(node);
593
594
  });
594
595
  },
596
+ chown: (owner, group) => { check(); this.changeOwnership(node, owner, group); },
595
597
  retain: () => { check(); return this.retainNode(node); },
596
598
  close: () => {
597
599
  if (closed)
@@ -870,6 +872,13 @@ export class SnapshotWaliFileSystem {
870
872
  this.nodes.get(normalize(path)).mode = mode & 0o7777;
871
873
  });
872
874
  }
875
+ createFifoSync(path, mode) {
876
+ this.mutate(() => {
877
+ this.createFileSync(path, mode);
878
+ // createFileSync initializes permissions; set kind before publication.
879
+ this.nodes.get(normalize(path)).mode |= 0o010000;
880
+ });
881
+ }
873
882
  mkdirSync(path, options) {
874
883
  this.mutate(() => {
875
884
  const normalized = normalize(path);
@@ -1049,11 +1058,25 @@ export class SnapshotWaliFileSystem {
1049
1058
  const node = this.node(normalized);
1050
1059
  if (!node)
1051
1060
  throw new Error(`ENOENT: no such file or directory, chmod '${normalized}'`);
1052
- node.mode = mode & 0o7777;
1061
+ node.mode = (node.mode & 0o170000) | (mode & 0o7777);
1053
1062
  node.ctimeMs = realtimeMilliseconds();
1054
1063
  this.markMutation(normalized);
1055
1064
  });
1056
1065
  }
1066
+ chownSync(path, owner, group) {
1067
+ const normalized = normalize(path), node = this.node(normalized);
1068
+ if (!node)
1069
+ throw new Error(`ENOENT: no such file or directory, chown '${normalized}'`);
1070
+ this.changeOwnership(node, owner, group);
1071
+ }
1072
+ changeOwnership(node, owner, group) {
1073
+ if (!waliOwnershipAllowed(owner, group))
1074
+ throw new Error("EPERM: ownership change requires privilege");
1075
+ this.mutate(() => {
1076
+ node.ctimeMs = realtimeMilliseconds();
1077
+ this.markNodeMutation(node);
1078
+ });
1079
+ }
1057
1080
  utimesSync(path, atime, mtime) {
1058
1081
  this.utimesMsSync(path, Number(atime), Number(mtime));
1059
1082
  }