@k13engineering/linux-fuse 0.0.7 → 0.1.0

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.
@@ -64,7 +64,9 @@ import {
64
64
  FOPEN_DIRECT_IO,
65
65
  FOPEN_KEEP_CACHE,
66
66
  FOPEN_NONSEEKABLE,
67
+ FUSE_COMPAT_SETXATTR_IN_SIZE,
67
68
  FUSE_GETATTR_FH,
69
+ FUSE_SETXATTR_EXT,
68
70
  opcode,
69
71
  } from "./constants.js";
70
72
  /*import type { TParsedMessageFromKernel, TParsedMessageToKernel } from "./message.ts";*/
@@ -993,7 +995,7 @@ const fuseAttrToPayloadValue = ({ attr }/*: { attr: TFuseAttr }*/) => {
993
995
  mtimensec: attr.mtimeNsec % 1_000_000_000n,
994
996
  ctime: attr.ctimeNsec / 1_000_000_000n,
995
997
  ctimensec: attr.ctimeNsec % 1_000_000_000n,
996
- padding: 0n,
998
+ flags: 0n,
997
999
  };
998
1000
  };
999
1001
 
@@ -1278,6 +1280,13 @@ const interpretXAttrPayload = /*<TForOpcode extends "GETXATTR" | "LISTXATTR">*/(
1278
1280
 
1279
1281
  const createMessageFromKernelInterpreter = () => {
1280
1282
 
1283
+ // the layout of some requests depends on the flags the server replied to INIT with
1284
+ let extendedSetxattr = false;
1285
+
1286
+ const applyInitResult = ({ result }/*: { result: Extract<TFuseResponse, { forOpcode: "INIT", errorCode: undefined }>["result"] }*/) => {
1287
+ extendedSetxattr = hasFlag({ bitmask: result.flags, flag: FUSE_SETXATTR_EXT });
1288
+ };
1289
+
1281
1290
  /*type TInterpretFunc<T extends string> = (
1282
1291
  args: { unique: bigint, nodeId: bigint, requester: TRequesterInfo, payload: Uint8Array }
1283
1292
  ) => TGenericInterpretResult<Extract<TFuseRequest, { opcode: T }>>;*/
@@ -1517,7 +1526,13 @@ const createMessageFromKernelInterpreter = () => {
1517
1526
  };
1518
1527
 
1519
1528
  const interpretSymlink/*: TInterpretFunc<"SYMLINK">*/ = ({ unique, nodeId, requester, payload }) => {
1520
- const { first: name, second: target } = decodeCStringPair(payload);
1529
+ const { error, first: name, second: target } = decodeCStringPair(payload);
1530
+ if (error !== undefined) {
1531
+ return {
1532
+ error: Error("Invalid payload for SYMLINK request. Expected nul-terminated name and target.", { cause: error }),
1533
+ interpreted: undefined,
1534
+ };
1535
+ }
1521
1536
 
1522
1537
  return {
1523
1538
  error: undefined,
@@ -1629,7 +1644,16 @@ const createMessageFromKernelInterpreter = () => {
1629
1644
  const { newdir, flags } = supportsFlags
1630
1645
  ? fuseRename2InParser.parse({ data: payload.subarray(0, fuseRename2InParser.size) })
1631
1646
  : { ...fuseRenameInParser.parse({ data: payload.subarray(0, fuseRenameInParser.size) }), flags: 0n };
1632
- const { first: oldName, second: newName } = decodeCStringPair(payload.subarray(headerSize));
1647
+ const { error, first: oldName, second: newName } = decodeCStringPair(payload.subarray(headerSize));
1648
+ if (error !== undefined) {
1649
+ return {
1650
+ error: Error(
1651
+ `Invalid payload for ${supportsFlags ? "RENAME2" : "RENAME"} request. Expected nul-terminated old and new name.`,
1652
+ { cause: error }
1653
+ ),
1654
+ interpreted: undefined,
1655
+ };
1656
+ }
1633
1657
 
1634
1658
  return {
1635
1659
  error: undefined,
@@ -1953,17 +1977,23 @@ const createMessageFromKernelInterpreter = () => {
1953
1977
  };
1954
1978
 
1955
1979
  const interpretSetXAttr/*: TInterpretFunc<"SETXATTR">*/ = ({ unique, nodeId, requester, payload }) => {
1956
- if (payload.length < fuseSetxattrInParser.size) {
1980
+ // without FUSE_SETXATTR_EXT the kernel only sends the first fields of struct fuse_setxattr_in
1981
+ const headerSize = extendedSetxattr ? fuseSetxattrInParser.size : FUSE_COMPAT_SETXATTR_IN_SIZE;
1982
+ if (payload.length < headerSize) {
1957
1983
  return {
1958
1984
  error: Error(
1959
- `Invalid payload size for SETXATTR request. Expected at least ${fuseSetxattrInParser.size} bytes, got ${payload.length} bytes.`
1985
+ `Invalid payload size for SETXATTR request. Expected at least ${headerSize} bytes, got ${payload.length} bytes.`
1960
1986
  ),
1961
1987
  interpreted: undefined,
1962
1988
  };
1963
1989
  }
1964
1990
 
1965
- const { size, flags, setxattr_flags } = fuseSetxattrInParser.parse({ data: payload.subarray(0, fuseSetxattrInParser.size) });
1966
- const trailing = payload.subarray(fuseSetxattrInParser.size);
1991
+ // the fields missing from the compat header are zero, as the kernel would have sent them
1992
+ const header = new Uint8Array(fuseSetxattrInParser.size);
1993
+ header.set(payload.subarray(0, headerSize));
1994
+
1995
+ const { size, flags, setxattr_flags } = fuseSetxattrInParser.parse({ data: header });
1996
+ const trailing = payload.subarray(headerSize);
1967
1997
  const nameTerminator = trailing.indexOf(0);
1968
1998
  if (nameTerminator === -1) {
1969
1999
  return {
@@ -2465,466 +2495,466 @@ const createMessageFromKernelInterpreter = () => {
2465
2495
  };
2466
2496
 
2467
2497
  switch (parsedMessageFromKernel.header.opcode) {
2468
- case BigInt(opcode.INIT): {
2469
- return interpretInit({
2470
- unique,
2471
- nodeId,
2472
- requester,
2473
- payload: parsedMessageFromKernel.payload,
2474
- });
2475
- }
2498
+ case BigInt(opcode.INIT): {
2499
+ return interpretInit({
2500
+ unique,
2501
+ nodeId,
2502
+ requester,
2503
+ payload: parsedMessageFromKernel.payload,
2504
+ });
2505
+ }
2476
2506
 
2477
- case BigInt(opcode.FORGET): {
2478
- return interpretForget({
2479
- unique,
2480
- nodeId,
2481
- requester,
2482
- payload: parsedMessageFromKernel.payload,
2483
- });
2484
- }
2507
+ case BigInt(opcode.FORGET): {
2508
+ return interpretForget({
2509
+ unique,
2510
+ nodeId,
2511
+ requester,
2512
+ payload: parsedMessageFromKernel.payload,
2513
+ });
2514
+ }
2485
2515
 
2486
- case BigInt(opcode.BATCH_FORGET): {
2487
- return interpretBatchForget({
2488
- unique,
2489
- nodeId,
2490
- requester,
2491
- payload: parsedMessageFromKernel.payload,
2492
- });
2493
- }
2516
+ case BigInt(opcode.BATCH_FORGET): {
2517
+ return interpretBatchForget({
2518
+ unique,
2519
+ nodeId,
2520
+ requester,
2521
+ payload: parsedMessageFromKernel.payload,
2522
+ });
2523
+ }
2494
2524
 
2495
- case BigInt(opcode.GETATTR): {
2496
- return interpretGetAttr({
2497
- unique,
2498
- nodeId,
2499
- requester,
2500
- payload: parsedMessageFromKernel.payload,
2501
- });
2502
- }
2525
+ case BigInt(opcode.GETATTR): {
2526
+ return interpretGetAttr({
2527
+ unique,
2528
+ nodeId,
2529
+ requester,
2530
+ payload: parsedMessageFromKernel.payload,
2531
+ });
2532
+ }
2503
2533
 
2504
- case BigInt(opcode.SETATTR): {
2505
- return interpretSetAttr({
2506
- unique,
2507
- nodeId,
2508
- requester,
2509
- payload: parsedMessageFromKernel.payload,
2510
- });
2511
- }
2534
+ case BigInt(opcode.SETATTR): {
2535
+ return interpretSetAttr({
2536
+ unique,
2537
+ nodeId,
2538
+ requester,
2539
+ payload: parsedMessageFromKernel.payload,
2540
+ });
2541
+ }
2512
2542
 
2513
- case BigInt(opcode.LISTXATTR): {
2514
- return interpretListXAttrRequest({
2515
- unique,
2516
- nodeId,
2517
- requester,
2518
- payload: parsedMessageFromKernel.payload,
2519
- });
2520
- }
2543
+ case BigInt(opcode.LISTXATTR): {
2544
+ return interpretListXAttrRequest({
2545
+ unique,
2546
+ nodeId,
2547
+ requester,
2548
+ payload: parsedMessageFromKernel.payload,
2549
+ });
2550
+ }
2521
2551
 
2522
- case BigInt(opcode.GETXATTR): {
2523
- return interpretGetXAttr({
2524
- unique,
2525
- nodeId,
2526
- requester,
2527
- payload: parsedMessageFromKernel.payload,
2528
- });
2529
- }
2552
+ case BigInt(opcode.GETXATTR): {
2553
+ return interpretGetXAttr({
2554
+ unique,
2555
+ nodeId,
2556
+ requester,
2557
+ payload: parsedMessageFromKernel.payload,
2558
+ });
2559
+ }
2530
2560
 
2531
- case BigInt(opcode.READLINK): {
2532
- return interpretReadLink({
2533
- unique,
2534
- nodeId,
2535
- requester,
2536
- payload: parsedMessageFromKernel.payload,
2537
- });
2538
- }
2561
+ case BigInt(opcode.READLINK): {
2562
+ return interpretReadLink({
2563
+ unique,
2564
+ nodeId,
2565
+ requester,
2566
+ payload: parsedMessageFromKernel.payload,
2567
+ });
2568
+ }
2539
2569
 
2540
- case BigInt(opcode.SYMLINK): {
2541
- return interpretSymlink({
2542
- unique,
2543
- nodeId,
2544
- requester,
2545
- payload: parsedMessageFromKernel.payload,
2546
- });
2547
- }
2570
+ case BigInt(opcode.SYMLINK): {
2571
+ return interpretSymlink({
2572
+ unique,
2573
+ nodeId,
2574
+ requester,
2575
+ payload: parsedMessageFromKernel.payload,
2576
+ });
2577
+ }
2548
2578
 
2549
- case BigInt(opcode.MKNOD): {
2550
- return interpretMknod({
2551
- unique,
2552
- nodeId,
2553
- requester,
2554
- payload: parsedMessageFromKernel.payload,
2555
- });
2556
- }
2579
+ case BigInt(opcode.MKNOD): {
2580
+ return interpretMknod({
2581
+ unique,
2582
+ nodeId,
2583
+ requester,
2584
+ payload: parsedMessageFromKernel.payload,
2585
+ });
2586
+ }
2557
2587
 
2558
- case BigInt(opcode.MKDIR): {
2559
- return interpretMkdir({
2560
- unique,
2561
- nodeId,
2562
- requester,
2563
- payload: parsedMessageFromKernel.payload,
2564
- });
2565
- }
2588
+ case BigInt(opcode.MKDIR): {
2589
+ return interpretMkdir({
2590
+ unique,
2591
+ nodeId,
2592
+ requester,
2593
+ payload: parsedMessageFromKernel.payload,
2594
+ });
2595
+ }
2566
2596
 
2567
- case BigInt(opcode.UNLINK): {
2568
- return interpretUnlink({
2569
- unique,
2570
- nodeId,
2571
- requester,
2572
- payload: parsedMessageFromKernel.payload,
2573
- });
2574
- }
2597
+ case BigInt(opcode.UNLINK): {
2598
+ return interpretUnlink({
2599
+ unique,
2600
+ nodeId,
2601
+ requester,
2602
+ payload: parsedMessageFromKernel.payload,
2603
+ });
2604
+ }
2575
2605
 
2576
- case BigInt(opcode.RMDIR): {
2577
- return interpretRmDir({
2578
- unique,
2579
- nodeId,
2580
- requester,
2581
- payload: parsedMessageFromKernel.payload,
2582
- });
2583
- }
2606
+ case BigInt(opcode.RMDIR): {
2607
+ return interpretRmDir({
2608
+ unique,
2609
+ nodeId,
2610
+ requester,
2611
+ payload: parsedMessageFromKernel.payload,
2612
+ });
2613
+ }
2584
2614
 
2585
- case BigInt(opcode.RENAME): {
2586
- return interpretRename({
2587
- unique,
2588
- nodeId,
2589
- requester,
2590
- payload: parsedMessageFromKernel.payload,
2591
- supportsFlags: false,
2592
- });
2593
- }
2615
+ case BigInt(opcode.RENAME): {
2616
+ return interpretRename({
2617
+ unique,
2618
+ nodeId,
2619
+ requester,
2620
+ payload: parsedMessageFromKernel.payload,
2621
+ supportsFlags: false,
2622
+ });
2623
+ }
2594
2624
 
2595
- case BigInt(opcode.RENAME2): {
2596
- return interpretRename({
2597
- unique,
2598
- nodeId,
2599
- requester,
2600
- payload: parsedMessageFromKernel.payload,
2601
- supportsFlags: true,
2602
- });
2603
- }
2625
+ case BigInt(opcode.RENAME2): {
2626
+ return interpretRename({
2627
+ unique,
2628
+ nodeId,
2629
+ requester,
2630
+ payload: parsedMessageFromKernel.payload,
2631
+ supportsFlags: true,
2632
+ });
2633
+ }
2604
2634
 
2605
- case BigInt(opcode.OPENDIR): {
2606
- return interpretOpenDir({
2607
- unique,
2608
- nodeId,
2609
- requester,
2610
- payload: parsedMessageFromKernel.payload,
2611
- });
2612
- }
2635
+ case BigInt(opcode.OPENDIR): {
2636
+ return interpretOpenDir({
2637
+ unique,
2638
+ nodeId,
2639
+ requester,
2640
+ payload: parsedMessageFromKernel.payload,
2641
+ });
2642
+ }
2613
2643
 
2614
- case BigInt(opcode.LINK): {
2615
- return interpretLink({
2616
- unique,
2617
- nodeId,
2618
- requester,
2619
- payload: parsedMessageFromKernel.payload,
2620
- });
2621
- }
2644
+ case BigInt(opcode.LINK): {
2645
+ return interpretLink({
2646
+ unique,
2647
+ nodeId,
2648
+ requester,
2649
+ payload: parsedMessageFromKernel.payload,
2650
+ });
2651
+ }
2622
2652
 
2623
- case BigInt(opcode.READDIR): {
2624
- return interpretReadDir({
2625
- unique,
2626
- nodeId,
2627
- requester,
2628
- payload: parsedMessageFromKernel.payload,
2629
- });
2630
- }
2653
+ case BigInt(opcode.READDIR): {
2654
+ return interpretReadDir({
2655
+ unique,
2656
+ nodeId,
2657
+ requester,
2658
+ payload: parsedMessageFromKernel.payload,
2659
+ });
2660
+ }
2631
2661
 
2632
- case BigInt(opcode.RELEASE): {
2633
- return interpretRelease({
2634
- unique,
2635
- nodeId,
2636
- requester,
2637
- payload: parsedMessageFromKernel.payload,
2638
- });
2639
- }
2662
+ case BigInt(opcode.RELEASE): {
2663
+ return interpretRelease({
2664
+ unique,
2665
+ nodeId,
2666
+ requester,
2667
+ payload: parsedMessageFromKernel.payload,
2668
+ });
2669
+ }
2640
2670
 
2641
- case BigInt(opcode.RELEASEDIR): {
2642
- return interpretReleaseDir({
2643
- unique,
2644
- nodeId,
2645
- requester,
2646
- payload: parsedMessageFromKernel.payload,
2647
- });
2648
- }
2671
+ case BigInt(opcode.RELEASEDIR): {
2672
+ return interpretReleaseDir({
2673
+ unique,
2674
+ nodeId,
2675
+ requester,
2676
+ payload: parsedMessageFromKernel.payload,
2677
+ });
2678
+ }
2649
2679
 
2650
- case BigInt(opcode.FSYNCDIR): {
2651
- return interpretFsync({
2652
- unique,
2653
- nodeId,
2654
- requester,
2655
- payload: parsedMessageFromKernel.payload,
2656
- forOpcode: "FSYNCDIR",
2657
- });
2658
- }
2680
+ case BigInt(opcode.FSYNCDIR): {
2681
+ return interpretFsync({
2682
+ unique,
2683
+ nodeId,
2684
+ requester,
2685
+ payload: parsedMessageFromKernel.payload,
2686
+ forOpcode: "FSYNCDIR",
2687
+ });
2688
+ }
2659
2689
 
2660
- case BigInt(opcode.STATFS): {
2661
- return interpretStatFs({
2662
- unique,
2663
- nodeId,
2664
- requester,
2665
- payload: parsedMessageFromKernel.payload,
2666
- });
2667
- }
2690
+ case BigInt(opcode.STATFS): {
2691
+ return interpretStatFs({
2692
+ unique,
2693
+ nodeId,
2694
+ requester,
2695
+ payload: parsedMessageFromKernel.payload,
2696
+ });
2697
+ }
2668
2698
 
2669
- case BigInt(opcode.LOOKUP): {
2670
- return interpretLookup({
2671
- unique,
2672
- nodeId,
2673
- requester,
2674
- payload: parsedMessageFromKernel.payload,
2675
- });
2676
- }
2699
+ case BigInt(opcode.LOOKUP): {
2700
+ return interpretLookup({
2701
+ unique,
2702
+ nodeId,
2703
+ requester,
2704
+ payload: parsedMessageFromKernel.payload,
2705
+ });
2706
+ }
2677
2707
 
2678
- case BigInt(opcode.OPEN): {
2679
- return interpretOpen({
2680
- unique,
2681
- nodeId,
2682
- requester,
2683
- payload: parsedMessageFromKernel.payload,
2684
- });
2685
- }
2708
+ case BigInt(opcode.OPEN): {
2709
+ return interpretOpen({
2710
+ unique,
2711
+ nodeId,
2712
+ requester,
2713
+ payload: parsedMessageFromKernel.payload,
2714
+ });
2715
+ }
2686
2716
 
2687
- case BigInt(opcode.READ): {
2688
- return interpretRead({
2689
- unique,
2690
- nodeId,
2691
- requester,
2692
- payload: parsedMessageFromKernel.payload,
2693
- });
2694
- }
2717
+ case BigInt(opcode.READ): {
2718
+ return interpretRead({
2719
+ unique,
2720
+ nodeId,
2721
+ requester,
2722
+ payload: parsedMessageFromKernel.payload,
2723
+ });
2724
+ }
2695
2725
 
2696
- case BigInt(opcode.WRITE): {
2697
- return interpretWrite({
2698
- unique,
2699
- nodeId,
2700
- requester,
2701
- payload: parsedMessageFromKernel.payload,
2702
- });
2703
- }
2726
+ case BigInt(opcode.WRITE): {
2727
+ return interpretWrite({
2728
+ unique,
2729
+ nodeId,
2730
+ requester,
2731
+ payload: parsedMessageFromKernel.payload,
2732
+ });
2733
+ }
2704
2734
 
2705
- case BigInt(opcode.FLUSH): {
2706
- return interpretFlush({
2707
- unique,
2708
- nodeId,
2709
- requester,
2710
- payload: parsedMessageFromKernel.payload,
2711
- });
2712
- }
2735
+ case BigInt(opcode.FLUSH): {
2736
+ return interpretFlush({
2737
+ unique,
2738
+ nodeId,
2739
+ requester,
2740
+ payload: parsedMessageFromKernel.payload,
2741
+ });
2742
+ }
2713
2743
 
2714
- case BigInt(opcode.FSYNC): {
2715
- return interpretFsync({
2716
- unique,
2717
- nodeId,
2718
- requester,
2719
- payload: parsedMessageFromKernel.payload,
2720
- forOpcode: "FSYNC",
2721
- });
2722
- }
2744
+ case BigInt(opcode.FSYNC): {
2745
+ return interpretFsync({
2746
+ unique,
2747
+ nodeId,
2748
+ requester,
2749
+ payload: parsedMessageFromKernel.payload,
2750
+ forOpcode: "FSYNC",
2751
+ });
2752
+ }
2723
2753
 
2724
- case BigInt(opcode.ACCESS): {
2725
- return interpretAccess({
2726
- unique,
2727
- nodeId,
2728
- requester,
2729
- payload: parsedMessageFromKernel.payload,
2730
- });
2731
- }
2754
+ case BigInt(opcode.ACCESS): {
2755
+ return interpretAccess({
2756
+ unique,
2757
+ nodeId,
2758
+ requester,
2759
+ payload: parsedMessageFromKernel.payload,
2760
+ });
2761
+ }
2732
2762
 
2733
- case BigInt(opcode.SETXATTR): {
2734
- return interpretSetXAttr({
2735
- unique,
2736
- nodeId,
2737
- requester,
2738
- payload: parsedMessageFromKernel.payload,
2739
- });
2740
- }
2763
+ case BigInt(opcode.SETXATTR): {
2764
+ return interpretSetXAttr({
2765
+ unique,
2766
+ nodeId,
2767
+ requester,
2768
+ payload: parsedMessageFromKernel.payload,
2769
+ });
2770
+ }
2741
2771
 
2742
- case BigInt(opcode.REMOVEXATTR): {
2743
- return interpretRemoveXAttr({
2744
- unique,
2745
- nodeId,
2746
- requester,
2747
- payload: parsedMessageFromKernel.payload,
2748
- });
2749
- }
2772
+ case BigInt(opcode.REMOVEXATTR): {
2773
+ return interpretRemoveXAttr({
2774
+ unique,
2775
+ nodeId,
2776
+ requester,
2777
+ payload: parsedMessageFromKernel.payload,
2778
+ });
2779
+ }
2750
2780
 
2751
- case BigInt(opcode.CREATE): {
2752
- return interpretCreate({
2753
- unique,
2754
- nodeId,
2755
- requester,
2756
- payload: parsedMessageFromKernel.payload,
2757
- });
2758
- }
2781
+ case BigInt(opcode.CREATE): {
2782
+ return interpretCreate({
2783
+ unique,
2784
+ nodeId,
2785
+ requester,
2786
+ payload: parsedMessageFromKernel.payload,
2787
+ });
2788
+ }
2759
2789
 
2760
- case BigInt(opcode.DESTROY): {
2761
- return interpretDestroy({
2762
- unique,
2763
- nodeId,
2764
- requester,
2765
- payload: parsedMessageFromKernel.payload,
2766
- });
2767
- }
2790
+ case BigInt(opcode.DESTROY): {
2791
+ return interpretDestroy({
2792
+ unique,
2793
+ nodeId,
2794
+ requester,
2795
+ payload: parsedMessageFromKernel.payload,
2796
+ });
2797
+ }
2768
2798
 
2769
- case BigInt(opcode.GETLK): {
2770
- return interpretLk({
2771
- unique,
2772
- nodeId,
2773
- requester,
2774
- payload: parsedMessageFromKernel.payload,
2775
- forOpcode: "GETLK",
2776
- });
2777
- }
2799
+ case BigInt(opcode.GETLK): {
2800
+ return interpretLk({
2801
+ unique,
2802
+ nodeId,
2803
+ requester,
2804
+ payload: parsedMessageFromKernel.payload,
2805
+ forOpcode: "GETLK",
2806
+ });
2807
+ }
2778
2808
 
2779
- case BigInt(opcode.SETLK): {
2780
- return interpretLk({
2781
- unique,
2782
- nodeId,
2783
- requester,
2784
- payload: parsedMessageFromKernel.payload,
2785
- forOpcode: "SETLK",
2786
- });
2787
- }
2809
+ case BigInt(opcode.SETLK): {
2810
+ return interpretLk({
2811
+ unique,
2812
+ nodeId,
2813
+ requester,
2814
+ payload: parsedMessageFromKernel.payload,
2815
+ forOpcode: "SETLK",
2816
+ });
2817
+ }
2788
2818
 
2789
- case BigInt(opcode.SETLKW): {
2790
- return interpretLk({
2791
- unique,
2792
- nodeId,
2793
- requester,
2794
- payload: parsedMessageFromKernel.payload,
2795
- forOpcode: "SETLKW",
2796
- });
2797
- }
2819
+ case BigInt(opcode.SETLKW): {
2820
+ return interpretLk({
2821
+ unique,
2822
+ nodeId,
2823
+ requester,
2824
+ payload: parsedMessageFromKernel.payload,
2825
+ forOpcode: "SETLKW",
2826
+ });
2827
+ }
2798
2828
 
2799
- case BigInt(opcode.INTERRUPT): {
2800
- return interpretInterrupt({
2801
- unique,
2802
- nodeId,
2803
- requester,
2804
- payload: parsedMessageFromKernel.payload,
2805
- });
2806
- }
2829
+ case BigInt(opcode.INTERRUPT): {
2830
+ return interpretInterrupt({
2831
+ unique,
2832
+ nodeId,
2833
+ requester,
2834
+ payload: parsedMessageFromKernel.payload,
2835
+ });
2836
+ }
2807
2837
 
2808
- case BigInt(opcode.BMAP): {
2809
- return interpretBmap({
2810
- unique,
2811
- nodeId,
2812
- requester,
2813
- payload: parsedMessageFromKernel.payload,
2814
- });
2815
- }
2838
+ case BigInt(opcode.BMAP): {
2839
+ return interpretBmap({
2840
+ unique,
2841
+ nodeId,
2842
+ requester,
2843
+ payload: parsedMessageFromKernel.payload,
2844
+ });
2845
+ }
2816
2846
 
2817
- case BigInt(opcode.IOCTL): {
2818
- return interpretIoctl({
2819
- unique,
2820
- nodeId,
2821
- requester,
2822
- payload: parsedMessageFromKernel.payload,
2823
- });
2824
- }
2847
+ case BigInt(opcode.IOCTL): {
2848
+ return interpretIoctl({
2849
+ unique,
2850
+ nodeId,
2851
+ requester,
2852
+ payload: parsedMessageFromKernel.payload,
2853
+ });
2854
+ }
2825
2855
 
2826
- case BigInt(opcode.POLL): {
2827
- return interpretPoll({
2828
- unique,
2829
- nodeId,
2830
- requester,
2831
- payload: parsedMessageFromKernel.payload,
2832
- });
2833
- }
2856
+ case BigInt(opcode.POLL): {
2857
+ return interpretPoll({
2858
+ unique,
2859
+ nodeId,
2860
+ requester,
2861
+ payload: parsedMessageFromKernel.payload,
2862
+ });
2863
+ }
2834
2864
 
2835
- case BigInt(opcode.NOTIFY_REPLY): {
2836
- return interpretNotifyReply({
2837
- unique,
2838
- nodeId,
2839
- requester,
2840
- payload: parsedMessageFromKernel.payload,
2841
- });
2842
- }
2865
+ case BigInt(opcode.NOTIFY_REPLY): {
2866
+ return interpretNotifyReply({
2867
+ unique,
2868
+ nodeId,
2869
+ requester,
2870
+ payload: parsedMessageFromKernel.payload,
2871
+ });
2872
+ }
2843
2873
 
2844
- case BigInt(opcode.FALLOCATE): {
2845
- return interpretFallocate({
2846
- unique,
2847
- nodeId,
2848
- requester,
2849
- payload: parsedMessageFromKernel.payload,
2850
- });
2851
- }
2874
+ case BigInt(opcode.FALLOCATE): {
2875
+ return interpretFallocate({
2876
+ unique,
2877
+ nodeId,
2878
+ requester,
2879
+ payload: parsedMessageFromKernel.payload,
2880
+ });
2881
+ }
2852
2882
 
2853
- case BigInt(opcode.READDIRPLUS): {
2854
- return interpretReadDirPlus({
2855
- unique,
2856
- nodeId,
2857
- requester,
2858
- payload: parsedMessageFromKernel.payload,
2859
- });
2860
- }
2883
+ case BigInt(opcode.READDIRPLUS): {
2884
+ return interpretReadDirPlus({
2885
+ unique,
2886
+ nodeId,
2887
+ requester,
2888
+ payload: parsedMessageFromKernel.payload,
2889
+ });
2890
+ }
2861
2891
 
2862
- case BigInt(opcode.LSEEK): {
2863
- return interpretLseek({
2864
- unique,
2865
- nodeId,
2866
- requester,
2867
- payload: parsedMessageFromKernel.payload,
2868
- });
2869
- }
2892
+ case BigInt(opcode.LSEEK): {
2893
+ return interpretLseek({
2894
+ unique,
2895
+ nodeId,
2896
+ requester,
2897
+ payload: parsedMessageFromKernel.payload,
2898
+ });
2899
+ }
2870
2900
 
2871
- case BigInt(opcode.COPY_FILE_RANGE): {
2872
- return interpretCopyFileRange({
2873
- unique,
2874
- nodeId,
2875
- requester,
2876
- payload: parsedMessageFromKernel.payload,
2877
- });
2878
- }
2901
+ case BigInt(opcode.COPY_FILE_RANGE): {
2902
+ return interpretCopyFileRange({
2903
+ unique,
2904
+ nodeId,
2905
+ requester,
2906
+ payload: parsedMessageFromKernel.payload,
2907
+ });
2908
+ }
2879
2909
 
2880
- case BigInt(opcode.SETUPMAPPING): {
2881
- return interpretSetupMapping({
2882
- unique,
2883
- nodeId,
2884
- requester,
2885
- payload: parsedMessageFromKernel.payload,
2886
- });
2887
- }
2910
+ case BigInt(opcode.SETUPMAPPING): {
2911
+ return interpretSetupMapping({
2912
+ unique,
2913
+ nodeId,
2914
+ requester,
2915
+ payload: parsedMessageFromKernel.payload,
2916
+ });
2917
+ }
2888
2918
 
2889
- case BigInt(opcode.REMOVEMAPPING): {
2890
- return interpretRemoveMapping({
2891
- unique,
2892
- nodeId,
2893
- requester,
2894
- payload: parsedMessageFromKernel.payload,
2895
- });
2896
- }
2919
+ case BigInt(opcode.REMOVEMAPPING): {
2920
+ return interpretRemoveMapping({
2921
+ unique,
2922
+ nodeId,
2923
+ requester,
2924
+ payload: parsedMessageFromKernel.payload,
2925
+ });
2926
+ }
2897
2927
 
2898
- case BigInt(opcode.SYNCFS): {
2899
- return interpretSyncFs({
2900
- unique,
2901
- nodeId,
2902
- requester,
2903
- payload: parsedMessageFromKernel.payload,
2904
- });
2905
- }
2928
+ case BigInt(opcode.SYNCFS): {
2929
+ return interpretSyncFs({
2930
+ unique,
2931
+ nodeId,
2932
+ requester,
2933
+ payload: parsedMessageFromKernel.payload,
2934
+ });
2935
+ }
2906
2936
 
2907
- case BigInt(opcode.TMPFILE): {
2908
- return interpretTmpFile({
2909
- unique,
2910
- nodeId,
2911
- requester,
2912
- payload: parsedMessageFromKernel.payload,
2913
- });
2914
- }
2937
+ case BigInt(opcode.TMPFILE): {
2938
+ return interpretTmpFile({
2939
+ unique,
2940
+ nodeId,
2941
+ requester,
2942
+ payload: parsedMessageFromKernel.payload,
2943
+ });
2944
+ }
2915
2945
 
2916
- case BigInt(opcode.STATX): {
2917
- return interpretStatx({
2918
- unique,
2919
- nodeId,
2920
- requester,
2921
- payload: parsedMessageFromKernel.payload,
2922
- });
2923
- }
2946
+ case BigInt(opcode.STATX): {
2947
+ return interpretStatx({
2948
+ unique,
2949
+ nodeId,
2950
+ requester,
2951
+ payload: parsedMessageFromKernel.payload,
2952
+ });
2953
+ }
2924
2954
 
2925
- default: {
2926
- break;
2927
- }
2955
+ default: {
2956
+ break;
2957
+ }
2928
2958
  }
2929
2959
 
2930
2960
  return {
@@ -2934,6 +2964,7 @@ const createMessageFromKernelInterpreter = () => {
2934
2964
  };
2935
2965
 
2936
2966
  return {
2967
+ applyInitResult,
2937
2968
  interpretMessageFromKernel,
2938
2969
  };
2939
2970
  };
@@ -3509,190 +3540,190 @@ const createMessageToKernelInterpreter = () => {
3509
3540
  }
3510
3541
 
3511
3542
  switch (response.forOpcode) {
3512
- case "INIT": {
3513
- return encodeInitResponse({ response });
3514
- }
3543
+ case "INIT": {
3544
+ return encodeInitResponse({ response });
3545
+ }
3515
3546
 
3516
- case "GETATTR": {
3517
- return encodeGetAttrResponse({ response });
3518
- }
3547
+ case "GETATTR": {
3548
+ return encodeGetAttrResponse({ response });
3549
+ }
3519
3550
 
3520
- case "SETATTR": {
3521
- return encodeSetAttrResponse({ response });
3522
- }
3551
+ case "SETATTR": {
3552
+ return encodeSetAttrResponse({ response });
3553
+ }
3523
3554
 
3524
- case "LISTXATTR": {
3525
- return encodeListXAttrResponse({ response });
3526
- }
3555
+ case "LISTXATTR": {
3556
+ return encodeListXAttrResponse({ response });
3557
+ }
3527
3558
 
3528
- case "GETXATTR": {
3529
- return encodeGetXAttrResponse({ response });
3530
- }
3559
+ case "GETXATTR": {
3560
+ return encodeGetXAttrResponse({ response });
3561
+ }
3531
3562
 
3532
- case "READLINK": {
3533
- return encodeReadLinkResponse({ response });
3534
- }
3563
+ case "READLINK": {
3564
+ return encodeReadLinkResponse({ response });
3565
+ }
3535
3566
 
3536
- case "MKNOD": {
3537
- return encodeMknodResponse({ response });
3538
- }
3567
+ case "MKNOD": {
3568
+ return encodeMknodResponse({ response });
3569
+ }
3539
3570
 
3540
- case "OPENDIR": {
3541
- return encodeOpenDirResponse({ response });
3542
- }
3571
+ case "OPENDIR": {
3572
+ return encodeOpenDirResponse({ response });
3573
+ }
3543
3574
 
3544
- case "READDIR": {
3545
- return encodeReadDirResponse({ response });
3546
- }
3575
+ case "READDIR": {
3576
+ return encodeReadDirResponse({ response });
3577
+ }
3547
3578
 
3548
- case "RELEASEDIR": {
3549
- return encodeReleaseDirResponse({ response });
3550
- }
3579
+ case "RELEASEDIR": {
3580
+ return encodeReleaseDirResponse({ response });
3581
+ }
3551
3582
 
3552
- case "FSYNCDIR": {
3553
- return encodeFsyncDirResponse({ response });
3554
- }
3583
+ case "FSYNCDIR": {
3584
+ return encodeFsyncDirResponse({ response });
3585
+ }
3555
3586
 
3556
- case "RELEASE": {
3557
- return encodeReleaseResponse({ response });
3558
- }
3587
+ case "RELEASE": {
3588
+ return encodeReleaseResponse({ response });
3589
+ }
3559
3590
 
3560
- case "STATFS": {
3561
- return encodeStatFsResponse({ response });
3562
- }
3591
+ case "STATFS": {
3592
+ return encodeStatFsResponse({ response });
3593
+ }
3563
3594
 
3564
- case "LOOKUP": {
3565
- return encodeLookupResponse({ response });
3566
- }
3595
+ case "LOOKUP": {
3596
+ return encodeLookupResponse({ response });
3597
+ }
3567
3598
 
3568
- case "SYMLINK": {
3569
- return encodeSymlinkResponse({ response });
3570
- }
3599
+ case "SYMLINK": {
3600
+ return encodeSymlinkResponse({ response });
3601
+ }
3571
3602
 
3572
- case "MKDIR": {
3573
- return encodeMkdirResponse({ response });
3574
- }
3603
+ case "MKDIR": {
3604
+ return encodeMkdirResponse({ response });
3605
+ }
3575
3606
 
3576
- case "LINK": {
3577
- return encodeLinkResponse({ response });
3578
- }
3607
+ case "LINK": {
3608
+ return encodeLinkResponse({ response });
3609
+ }
3579
3610
 
3580
- case "UNLINK": {
3581
- return encodeUnlinkResponse({ response });
3582
- }
3611
+ case "UNLINK": {
3612
+ return encodeUnlinkResponse({ response });
3613
+ }
3583
3614
 
3584
- case "RMDIR": {
3585
- return encodeRmDirResponse({ response });
3586
- }
3615
+ case "RMDIR": {
3616
+ return encodeRmDirResponse({ response });
3617
+ }
3587
3618
 
3588
- case "RENAME": {
3589
- return encodeRenameResponse({ response });
3590
- }
3619
+ case "RENAME": {
3620
+ return encodeRenameResponse({ response });
3621
+ }
3591
3622
 
3592
- case "OPEN": {
3593
- return encodeOpenResponse({ response });
3594
- }
3623
+ case "OPEN": {
3624
+ return encodeOpenResponse({ response });
3625
+ }
3595
3626
 
3596
- case "READ": {
3597
- return encodeReadResponse({ response });
3598
- }
3627
+ case "READ": {
3628
+ return encodeReadResponse({ response });
3629
+ }
3599
3630
 
3600
- case "WRITE": {
3601
- return encodeWriteResponse({ response });
3602
- }
3631
+ case "WRITE": {
3632
+ return encodeWriteResponse({ response });
3633
+ }
3603
3634
 
3604
- case "FLUSH": {
3605
- return encodeFlushResponse({ response });
3606
- }
3635
+ case "FLUSH": {
3636
+ return encodeFlushResponse({ response });
3637
+ }
3607
3638
 
3608
- case "FSYNC": {
3609
- return encodeFsyncResponse({ response });
3610
- }
3639
+ case "FSYNC": {
3640
+ return encodeFsyncResponse({ response });
3641
+ }
3611
3642
 
3612
- case "ACCESS": {
3613
- return encodeAccessResponse({ response });
3614
- }
3643
+ case "ACCESS": {
3644
+ return encodeAccessResponse({ response });
3645
+ }
3615
3646
 
3616
- case "SETXATTR": {
3617
- return encodeSetXAttrResponse({ response });
3618
- }
3647
+ case "SETXATTR": {
3648
+ return encodeSetXAttrResponse({ response });
3649
+ }
3619
3650
 
3620
- case "REMOVEXATTR": {
3621
- return encodeRemoveXAttrResponse({ response });
3622
- }
3651
+ case "REMOVEXATTR": {
3652
+ return encodeRemoveXAttrResponse({ response });
3653
+ }
3623
3654
 
3624
- case "CREATE": {
3625
- return encodeCreateResponse({ response });
3626
- }
3655
+ case "CREATE": {
3656
+ return encodeCreateResponse({ response });
3657
+ }
3627
3658
 
3628
- case "DESTROY": {
3629
- return encodeDestroyResponse({ response });
3630
- }
3659
+ case "DESTROY": {
3660
+ return encodeDestroyResponse({ response });
3661
+ }
3631
3662
 
3632
- case "GETLK": {
3633
- return encodeGetLkResponse({ response });
3634
- }
3663
+ case "GETLK": {
3664
+ return encodeGetLkResponse({ response });
3665
+ }
3635
3666
 
3636
- case "SETLK": {
3637
- return encodeSetLkResponse({ response });
3638
- }
3667
+ case "SETLK": {
3668
+ return encodeSetLkResponse({ response });
3669
+ }
3639
3670
 
3640
- case "SETLKW": {
3641
- return encodeSetLkWResponse({ response });
3642
- }
3671
+ case "SETLKW": {
3672
+ return encodeSetLkWResponse({ response });
3673
+ }
3643
3674
 
3644
- case "BMAP": {
3645
- return encodeBmapResponse({ response });
3646
- }
3675
+ case "BMAP": {
3676
+ return encodeBmapResponse({ response });
3677
+ }
3647
3678
 
3648
- case "IOCTL": {
3649
- return encodeIoctlResponse({ response });
3650
- }
3679
+ case "IOCTL": {
3680
+ return encodeIoctlResponse({ response });
3681
+ }
3651
3682
 
3652
- case "POLL": {
3653
- return encodePollResponse({ response });
3654
- }
3683
+ case "POLL": {
3684
+ return encodePollResponse({ response });
3685
+ }
3655
3686
 
3656
- case "FALLOCATE": {
3657
- return encodeFallocateResponse({ response });
3658
- }
3687
+ case "FALLOCATE": {
3688
+ return encodeFallocateResponse({ response });
3689
+ }
3659
3690
 
3660
- case "READDIRPLUS": {
3661
- return encodeReadDirPlusResponse({ response });
3662
- }
3691
+ case "READDIRPLUS": {
3692
+ return encodeReadDirPlusResponse({ response });
3693
+ }
3663
3694
 
3664
- case "LSEEK": {
3665
- return encodeLseekResponse({ response });
3666
- }
3695
+ case "LSEEK": {
3696
+ return encodeLseekResponse({ response });
3697
+ }
3667
3698
 
3668
- case "COPY_FILE_RANGE": {
3669
- return encodeCopyFileRangeResponse({ response });
3670
- }
3699
+ case "COPY_FILE_RANGE": {
3700
+ return encodeCopyFileRangeResponse({ response });
3701
+ }
3671
3702
 
3672
- case "SETUPMAPPING": {
3673
- return encodeSetupMappingResponse({ response });
3674
- }
3703
+ case "SETUPMAPPING": {
3704
+ return encodeSetupMappingResponse({ response });
3705
+ }
3675
3706
 
3676
- case "REMOVEMAPPING": {
3677
- return encodeRemoveMappingResponse({ response });
3678
- }
3707
+ case "REMOVEMAPPING": {
3708
+ return encodeRemoveMappingResponse({ response });
3709
+ }
3679
3710
 
3680
- case "SYNCFS": {
3681
- return encodeSyncFsResponse({ response });
3682
- }
3711
+ case "SYNCFS": {
3712
+ return encodeSyncFsResponse({ response });
3713
+ }
3683
3714
 
3684
- case "TMPFILE": {
3685
- return encodeTmpFileResponse({ response });
3686
- }
3715
+ case "TMPFILE": {
3716
+ return encodeTmpFileResponse({ response });
3717
+ }
3687
3718
 
3688
- case "STATX": {
3689
- return encodeStatxResponse({ response });
3690
- }
3719
+ case "STATX": {
3720
+ return encodeStatxResponse({ response });
3721
+ }
3691
3722
 
3692
- default: {
3723
+ default: {
3693
3724
  // @ts-expect-error exhaustiveness check
3694
- throw Error(`Unsupported opcode: ${response.forOpcode}`);
3695
- }
3725
+ throw Error(`Unsupported opcode: ${response.forOpcode}`);
3726
+ }
3696
3727
  }
3697
3728
  };
3698
3729
 
@@ -4248,326 +4279,326 @@ const createMessageToKernelInterpreter = () => {
4248
4279
  }
4249
4280
 
4250
4281
  switch (forOpcode) {
4251
- case "INIT": {
4252
- return interpretInitResponse({
4253
- unique,
4254
- payload: parsedMessageToKernel.payload,
4255
- });
4256
- }
4282
+ case "INIT": {
4283
+ return interpretInitResponse({
4284
+ unique,
4285
+ payload: parsedMessageToKernel.payload,
4286
+ });
4287
+ }
4257
4288
 
4258
- case "GETATTR": {
4259
- return interpretGetAttrResponse({
4260
- unique,
4261
- payload: parsedMessageToKernel.payload,
4262
- });
4263
- }
4289
+ case "GETATTR": {
4290
+ return interpretGetAttrResponse({
4291
+ unique,
4292
+ payload: parsedMessageToKernel.payload,
4293
+ });
4294
+ }
4264
4295
 
4265
- case "SETATTR": {
4266
- return interpretSetAttrResponse({
4267
- unique,
4268
- payload: parsedMessageToKernel.payload,
4269
- });
4270
- }
4296
+ case "SETATTR": {
4297
+ return interpretSetAttrResponse({
4298
+ unique,
4299
+ payload: parsedMessageToKernel.payload,
4300
+ });
4301
+ }
4271
4302
 
4272
- case "LISTXATTR": {
4273
- return interpretListXAttrResponse({
4274
- unique,
4275
- payload: parsedMessageToKernel.payload,
4276
- request: request /*as Extract<TFuseRequest, { opcode: "LISTXATTR" }>*/,
4277
- });
4278
- }
4303
+ case "LISTXATTR": {
4304
+ return interpretListXAttrResponse({
4305
+ unique,
4306
+ payload: parsedMessageToKernel.payload,
4307
+ request: request /*as Extract<TFuseRequest, { opcode: "LISTXATTR" }>*/,
4308
+ });
4309
+ }
4279
4310
 
4280
- case "GETXATTR": {
4281
- return interpretGetXAttrResponse({
4282
- unique,
4283
- payload: parsedMessageToKernel.payload,
4284
- request: request /*as Extract<TFuseRequest, { opcode: "GETXATTR" }>*/,
4285
- });
4286
- }
4311
+ case "GETXATTR": {
4312
+ return interpretGetXAttrResponse({
4313
+ unique,
4314
+ payload: parsedMessageToKernel.payload,
4315
+ request: request /*as Extract<TFuseRequest, { opcode: "GETXATTR" }>*/,
4316
+ });
4317
+ }
4287
4318
 
4288
- case "READLINK": {
4289
- return interpretReadLinkResponse({
4290
- unique,
4291
- payload: parsedMessageToKernel.payload,
4292
- });
4293
- }
4319
+ case "READLINK": {
4320
+ return interpretReadLinkResponse({
4321
+ unique,
4322
+ payload: parsedMessageToKernel.payload,
4323
+ });
4324
+ }
4294
4325
 
4295
- case "MKNOD": {
4296
- return interpretMknodResponse({
4297
- unique,
4298
- payload: parsedMessageToKernel.payload,
4299
- });
4300
- }
4326
+ case "MKNOD": {
4327
+ return interpretMknodResponse({
4328
+ unique,
4329
+ payload: parsedMessageToKernel.payload,
4330
+ });
4331
+ }
4301
4332
 
4302
- case "OPENDIR": {
4303
- return interpretOpenDirResponse({
4304
- unique,
4305
- payload: parsedMessageToKernel.payload,
4306
- });
4307
- }
4333
+ case "OPENDIR": {
4334
+ return interpretOpenDirResponse({
4335
+ unique,
4336
+ payload: parsedMessageToKernel.payload,
4337
+ });
4338
+ }
4308
4339
 
4309
- case "READDIR": {
4310
- return interpretReadDirResponse({
4311
- unique,
4312
- payload: parsedMessageToKernel.payload,
4313
- });
4314
- }
4340
+ case "READDIR": {
4341
+ return interpretReadDirResponse({
4342
+ unique,
4343
+ payload: parsedMessageToKernel.payload,
4344
+ });
4345
+ }
4315
4346
 
4316
- case "RELEASEDIR": {
4317
- return interpretReleaseDirResponse({
4318
- unique,
4319
- payload: parsedMessageToKernel.payload,
4320
- });
4321
- }
4347
+ case "RELEASEDIR": {
4348
+ return interpretReleaseDirResponse({
4349
+ unique,
4350
+ payload: parsedMessageToKernel.payload,
4351
+ });
4352
+ }
4322
4353
 
4323
- case "FSYNCDIR": {
4324
- return interpretFsyncDirResponse({
4325
- unique,
4326
- payload: parsedMessageToKernel.payload,
4327
- });
4328
- }
4354
+ case "FSYNCDIR": {
4355
+ return interpretFsyncDirResponse({
4356
+ unique,
4357
+ payload: parsedMessageToKernel.payload,
4358
+ });
4359
+ }
4329
4360
 
4330
- case "RELEASE": {
4331
- return interpretReleaseResponse({
4332
- unique,
4333
- payload: parsedMessageToKernel.payload,
4334
- });
4335
- }
4361
+ case "RELEASE": {
4362
+ return interpretReleaseResponse({
4363
+ unique,
4364
+ payload: parsedMessageToKernel.payload,
4365
+ });
4366
+ }
4336
4367
 
4337
- case "STATFS": {
4338
- return interpretStatFsResponse({
4339
- unique,
4340
- payload: parsedMessageToKernel.payload,
4341
- });
4342
- }
4368
+ case "STATFS": {
4369
+ return interpretStatFsResponse({
4370
+ unique,
4371
+ payload: parsedMessageToKernel.payload,
4372
+ });
4373
+ }
4343
4374
 
4344
- case "LOOKUP": {
4345
- return interpretLookupResponse({
4346
- unique,
4347
- payload: parsedMessageToKernel.payload,
4348
- });
4349
- }
4375
+ case "LOOKUP": {
4376
+ return interpretLookupResponse({
4377
+ unique,
4378
+ payload: parsedMessageToKernel.payload,
4379
+ });
4380
+ }
4350
4381
 
4351
- case "SYMLINK": {
4352
- return interpretSymlinkResponse({
4353
- unique,
4354
- payload: parsedMessageToKernel.payload,
4355
- });
4356
- }
4382
+ case "SYMLINK": {
4383
+ return interpretSymlinkResponse({
4384
+ unique,
4385
+ payload: parsedMessageToKernel.payload,
4386
+ });
4387
+ }
4357
4388
 
4358
- case "LINK": {
4359
- return interpretLinkResponse({
4360
- unique,
4361
- payload: parsedMessageToKernel.payload,
4362
- });
4363
- }
4389
+ case "LINK": {
4390
+ return interpretLinkResponse({
4391
+ unique,
4392
+ payload: parsedMessageToKernel.payload,
4393
+ });
4394
+ }
4364
4395
 
4365
- case "MKDIR": {
4366
- return interpretMkdirResponse({
4367
- unique,
4368
- payload: parsedMessageToKernel.payload,
4369
- });
4370
- }
4396
+ case "MKDIR": {
4397
+ return interpretMkdirResponse({
4398
+ unique,
4399
+ payload: parsedMessageToKernel.payload,
4400
+ });
4401
+ }
4371
4402
 
4372
- case "UNLINK": {
4373
- return interpretUnlinkResponse({
4374
- unique,
4375
- payload: parsedMessageToKernel.payload,
4376
- });
4377
- }
4403
+ case "UNLINK": {
4404
+ return interpretUnlinkResponse({
4405
+ unique,
4406
+ payload: parsedMessageToKernel.payload,
4407
+ });
4408
+ }
4378
4409
 
4379
- case "RMDIR": {
4380
- return interpretRmDirResponse({
4381
- unique,
4382
- payload: parsedMessageToKernel.payload,
4383
- });
4384
- }
4410
+ case "RMDIR": {
4411
+ return interpretRmDirResponse({
4412
+ unique,
4413
+ payload: parsedMessageToKernel.payload,
4414
+ });
4415
+ }
4385
4416
 
4386
- case "RENAME": {
4387
- return interpretRenameResponse({
4388
- unique,
4389
- payload: parsedMessageToKernel.payload,
4390
- });
4391
- }
4417
+ case "RENAME": {
4418
+ return interpretRenameResponse({
4419
+ unique,
4420
+ payload: parsedMessageToKernel.payload,
4421
+ });
4422
+ }
4392
4423
 
4393
- case "OPEN": {
4394
- return interpretOpenResponse({
4395
- unique,
4396
- payload: parsedMessageToKernel.payload,
4397
- });
4398
- }
4424
+ case "OPEN": {
4425
+ return interpretOpenResponse({
4426
+ unique,
4427
+ payload: parsedMessageToKernel.payload,
4428
+ });
4429
+ }
4399
4430
 
4400
- case "READ": {
4401
- return interpretReadResponse({
4402
- unique,
4403
- payload: parsedMessageToKernel.payload,
4404
- });
4405
- }
4431
+ case "READ": {
4432
+ return interpretReadResponse({
4433
+ unique,
4434
+ payload: parsedMessageToKernel.payload,
4435
+ });
4436
+ }
4406
4437
 
4407
- case "WRITE": {
4408
- return interpretWriteResponse({
4409
- unique,
4410
- payload: parsedMessageToKernel.payload,
4411
- });
4412
- }
4438
+ case "WRITE": {
4439
+ return interpretWriteResponse({
4440
+ unique,
4441
+ payload: parsedMessageToKernel.payload,
4442
+ });
4443
+ }
4413
4444
 
4414
- case "FLUSH": {
4415
- return interpretFlushResponse({
4416
- unique,
4417
- payload: parsedMessageToKernel.payload,
4418
- });
4419
- }
4445
+ case "FLUSH": {
4446
+ return interpretFlushResponse({
4447
+ unique,
4448
+ payload: parsedMessageToKernel.payload,
4449
+ });
4450
+ }
4420
4451
 
4421
- case "FSYNC": {
4422
- return interpretFsyncResponse({
4423
- unique,
4424
- payload: parsedMessageToKernel.payload,
4425
- });
4426
- }
4452
+ case "FSYNC": {
4453
+ return interpretFsyncResponse({
4454
+ unique,
4455
+ payload: parsedMessageToKernel.payload,
4456
+ });
4457
+ }
4427
4458
 
4428
- case "ACCESS": {
4429
- return interpretAccessResponse({
4430
- unique,
4431
- payload: parsedMessageToKernel.payload,
4432
- });
4433
- }
4459
+ case "ACCESS": {
4460
+ return interpretAccessResponse({
4461
+ unique,
4462
+ payload: parsedMessageToKernel.payload,
4463
+ });
4464
+ }
4434
4465
 
4435
- case "SETXATTR": {
4436
- return interpretSetXAttrResponse({
4437
- unique,
4438
- payload: parsedMessageToKernel.payload,
4439
- });
4440
- }
4466
+ case "SETXATTR": {
4467
+ return interpretSetXAttrResponse({
4468
+ unique,
4469
+ payload: parsedMessageToKernel.payload,
4470
+ });
4471
+ }
4441
4472
 
4442
- case "REMOVEXATTR": {
4443
- return interpretRemoveXAttrResponse({
4444
- unique,
4445
- payload: parsedMessageToKernel.payload,
4446
- });
4447
- }
4473
+ case "REMOVEXATTR": {
4474
+ return interpretRemoveXAttrResponse({
4475
+ unique,
4476
+ payload: parsedMessageToKernel.payload,
4477
+ });
4478
+ }
4448
4479
 
4449
- case "CREATE": {
4450
- return interpretCreateResponse({
4451
- unique,
4452
- payload: parsedMessageToKernel.payload,
4453
- });
4454
- }
4480
+ case "CREATE": {
4481
+ return interpretCreateResponse({
4482
+ unique,
4483
+ payload: parsedMessageToKernel.payload,
4484
+ });
4485
+ }
4455
4486
 
4456
- case "DESTROY": {
4457
- return interpretDestroyResponse({
4458
- unique,
4459
- payload: parsedMessageToKernel.payload,
4460
- });
4461
- }
4487
+ case "DESTROY": {
4488
+ return interpretDestroyResponse({
4489
+ unique,
4490
+ payload: parsedMessageToKernel.payload,
4491
+ });
4492
+ }
4462
4493
 
4463
- case "GETLK": {
4464
- return interpretGetLkResponse({
4465
- unique,
4466
- payload: parsedMessageToKernel.payload,
4467
- });
4468
- }
4494
+ case "GETLK": {
4495
+ return interpretGetLkResponse({
4496
+ unique,
4497
+ payload: parsedMessageToKernel.payload,
4498
+ });
4499
+ }
4469
4500
 
4470
- case "SETLK": {
4471
- return interpretSetLkResponse({
4472
- unique,
4473
- payload: parsedMessageToKernel.payload,
4474
- });
4475
- }
4501
+ case "SETLK": {
4502
+ return interpretSetLkResponse({
4503
+ unique,
4504
+ payload: parsedMessageToKernel.payload,
4505
+ });
4506
+ }
4476
4507
 
4477
- case "SETLKW": {
4478
- return interpretSetLkWResponse({
4479
- unique,
4480
- payload: parsedMessageToKernel.payload,
4481
- });
4482
- }
4508
+ case "SETLKW": {
4509
+ return interpretSetLkWResponse({
4510
+ unique,
4511
+ payload: parsedMessageToKernel.payload,
4512
+ });
4513
+ }
4483
4514
 
4484
- case "BMAP": {
4485
- return interpretBmapResponse({
4486
- unique,
4487
- payload: parsedMessageToKernel.payload,
4488
- });
4489
- }
4515
+ case "BMAP": {
4516
+ return interpretBmapResponse({
4517
+ unique,
4518
+ payload: parsedMessageToKernel.payload,
4519
+ });
4520
+ }
4490
4521
 
4491
- case "IOCTL": {
4492
- return interpretIoctlResponse({
4493
- unique,
4494
- payload: parsedMessageToKernel.payload,
4495
- });
4496
- }
4522
+ case "IOCTL": {
4523
+ return interpretIoctlResponse({
4524
+ unique,
4525
+ payload: parsedMessageToKernel.payload,
4526
+ });
4527
+ }
4497
4528
 
4498
- case "POLL": {
4499
- return interpretPollResponse({
4500
- unique,
4501
- payload: parsedMessageToKernel.payload,
4502
- });
4503
- }
4529
+ case "POLL": {
4530
+ return interpretPollResponse({
4531
+ unique,
4532
+ payload: parsedMessageToKernel.payload,
4533
+ });
4534
+ }
4504
4535
 
4505
- case "FALLOCATE": {
4506
- return interpretFallocateResponse({
4507
- unique,
4508
- payload: parsedMessageToKernel.payload,
4509
- });
4510
- }
4536
+ case "FALLOCATE": {
4537
+ return interpretFallocateResponse({
4538
+ unique,
4539
+ payload: parsedMessageToKernel.payload,
4540
+ });
4541
+ }
4511
4542
 
4512
- case "READDIRPLUS": {
4513
- return interpretReadDirPlusResponse({
4514
- unique,
4515
- payload: parsedMessageToKernel.payload,
4516
- });
4517
- }
4543
+ case "READDIRPLUS": {
4544
+ return interpretReadDirPlusResponse({
4545
+ unique,
4546
+ payload: parsedMessageToKernel.payload,
4547
+ });
4548
+ }
4518
4549
 
4519
- case "LSEEK": {
4520
- return interpretLseekResponse({
4521
- unique,
4522
- payload: parsedMessageToKernel.payload,
4523
- });
4524
- }
4550
+ case "LSEEK": {
4551
+ return interpretLseekResponse({
4552
+ unique,
4553
+ payload: parsedMessageToKernel.payload,
4554
+ });
4555
+ }
4525
4556
 
4526
- case "COPY_FILE_RANGE": {
4527
- return interpretCopyFileRangeResponse({
4528
- unique,
4529
- payload: parsedMessageToKernel.payload,
4530
- });
4531
- }
4557
+ case "COPY_FILE_RANGE": {
4558
+ return interpretCopyFileRangeResponse({
4559
+ unique,
4560
+ payload: parsedMessageToKernel.payload,
4561
+ });
4562
+ }
4532
4563
 
4533
- case "SETUPMAPPING": {
4534
- return interpretSetupMappingResponse({
4535
- unique,
4536
- payload: parsedMessageToKernel.payload,
4537
- });
4538
- }
4564
+ case "SETUPMAPPING": {
4565
+ return interpretSetupMappingResponse({
4566
+ unique,
4567
+ payload: parsedMessageToKernel.payload,
4568
+ });
4569
+ }
4539
4570
 
4540
- case "REMOVEMAPPING": {
4541
- return interpretRemoveMappingResponse({
4542
- unique,
4543
- payload: parsedMessageToKernel.payload,
4544
- });
4545
- }
4571
+ case "REMOVEMAPPING": {
4572
+ return interpretRemoveMappingResponse({
4573
+ unique,
4574
+ payload: parsedMessageToKernel.payload,
4575
+ });
4576
+ }
4546
4577
 
4547
- case "SYNCFS": {
4548
- return interpretSyncFsResponse({
4549
- unique,
4550
- payload: parsedMessageToKernel.payload,
4551
- });
4552
- }
4578
+ case "SYNCFS": {
4579
+ return interpretSyncFsResponse({
4580
+ unique,
4581
+ payload: parsedMessageToKernel.payload,
4582
+ });
4583
+ }
4553
4584
 
4554
- case "TMPFILE": {
4555
- return interpretTmpFileResponse({
4556
- unique,
4557
- payload: parsedMessageToKernel.payload,
4558
- });
4559
- }
4585
+ case "TMPFILE": {
4586
+ return interpretTmpFileResponse({
4587
+ unique,
4588
+ payload: parsedMessageToKernel.payload,
4589
+ });
4590
+ }
4560
4591
 
4561
- case "STATX": {
4562
- return interpretStatxResponse({
4563
- unique,
4564
- payload: parsedMessageToKernel.payload,
4565
- });
4566
- }
4592
+ case "STATX": {
4593
+ return interpretStatxResponse({
4594
+ unique,
4595
+ payload: parsedMessageToKernel.payload,
4596
+ });
4597
+ }
4567
4598
 
4568
- default: {
4569
- throw Error(`unsupported opcode for interpretation: ${forOpcode}`);
4570
- }
4599
+ default: {
4600
+ throw Error(`unsupported opcode for interpretation: ${forOpcode}`);
4601
+ }
4571
4602
  }
4572
4603
  };
4573
4604