# knu/fuse-convmvfs architecture

> Architecture diagram of the GitHub repository knu/fuse-convmvfs, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/knu/fuse-convmvfs
- Repository: https://github.com/knu/fuse-convmvfs

## Overview

fuse-convmvfs is a FUSE filesystem that presents a backing directory through filename charset conversion. A user starts the mount; the program parses options and configures FUSE callbacks, which translate virtual paths and perform filesystem operations against the source directory. The implementation also checks permissions and exposes metadata and extended-attribute operations. The single core source file is excerpted only partially, and the README content provided is empty, so the graph groups related callbacks rather than claiming a complete operation-by-operation map.

Main entry points: [`fuse-convmvfs/src/convmvfs.cpp`](https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp) (FUSE callbacks)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Mount startup"]
  node_program["Option parsing<br/>[convmvfs.cpp]"]
end

subgraph group_runtime["Filesystem runtime"]
  node_fuse["FUSE runtime"]
  node_callbacks["FUSE callbacks<br/>[convmvfs.cpp]"]
  node_nameconv["Filename conversion<br/>[convmvfs.cpp]"]
  node_permissions["Permission checks<br/>[convmvfs.cpp]"]
end

subgraph group_storage["Backing filesystem"]
  node_fileops["File operations<br/>[convmvfs.cpp]"]
  node_metadata["Metadata and xattrs<br/>[convmvfs.cpp]"]
  node_backing[("Source directory")]
end

node_user(("Mount user"))
node_iconv["iconv library"]

node_user -->|"starts mount"| node_program
node_program -->|"configures"| node_fuse
node_fuse -->|"dispatches"| node_callbacks
node_callbacks -->|"translates paths"| node_nameconv
node_callbacks -->|"checks access"| node_permissions
node_callbacks -->|"performs operations"| node_fileops
node_callbacks -->|"handles metadata"| node_metadata
node_fileops -->|"reads and writes"| node_backing
node_metadata -->|"queries attributes"| node_backing
node_nameconv -->|"converts charset"| node_iconv

click node_program "https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp"
click node_callbacks "https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp"
click node_nameconv "https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp"
click node_permissions "https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp"
click node_fileops "https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp"
click node_metadata "https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_program,node_user toneBlue
class node_fuse,node_callbacks,node_nameconv,node_permissions toneAmber
class node_fileops,node_metadata,node_backing toneMint
class node_iconv toneIndigo
```

## Components

### Mount startup

- [Option parsing](https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp): `fuse-convmvfs/src/convmvfs.cpp`

### Filesystem runtime

- **FUSE runtime**
- [FUSE callbacks](https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp): `fuse-convmvfs/src/convmvfs.cpp`
- [Filename conversion](https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp): `fuse-convmvfs/src/convmvfs.cpp`
- [Permission checks](https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp): `fuse-convmvfs/src/convmvfs.cpp`

### Backing filesystem

- [File operations](https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp): `fuse-convmvfs/src/convmvfs.cpp`
- [Metadata and xattrs](https://github.com/knu/fuse-convmvfs/blob/master/fuse-convmvfs/src/convmvfs.cpp): `fuse-convmvfs/src/convmvfs.cpp`
- **Source directory**

### Other components

- **Mount user**
- **iconv library**

## Connections

- Mount user → Option parsing: starts mount
- Option parsing → FUSE runtime: configures (evidence: `fuse-convmvfs/src/convmvfs.cpp`)
- FUSE runtime → FUSE callbacks: dispatches (evidence: `fuse-convmvfs/src/convmvfs.cpp`)
- FUSE callbacks → Filename conversion: translates paths (evidence: `fuse-convmvfs/src/convmvfs.cpp`)
- FUSE callbacks → Permission checks: checks access (evidence: `fuse-convmvfs/src/convmvfs.cpp`)
- FUSE callbacks → File operations: performs operations (evidence: `fuse-convmvfs/src/convmvfs.cpp`)
- FUSE callbacks → Metadata and xattrs: handles metadata (evidence: `fuse-convmvfs/src/convmvfs.cpp`)
- File operations → Source directory: reads and writes (evidence: `fuse-convmvfs/src/convmvfs.cpp`)
- Metadata and xattrs → Source directory: queries attributes (evidence: `fuse-convmvfs/src/convmvfs.cpp`)
- Filename conversion → iconv library: converts charset (evidence: `fuse-convmvfs/src/convmvfs.cpp`)
