diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index ec084d1..91b845a 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -28,7 +28,7 @@ jobs: sudo apt-get install build-essential naturaldocs - name: generate-docs run: | - make docs + LANG=C.UTF-8 make docs - name: setup-pages uses: actions/configure-pages@v4 - name: upload-artifact diff --git a/kernel/fs/stpdfs.inc b/kernel/fs/stpdfs.inc index 805c410..d714286 100644 --- a/kernel/fs/stpdfs.inc +++ b/kernel/fs/stpdfs.inc @@ -93,6 +93,34 @@ DEFN StpdFS_Sb ;; .zone - TODO ;; .actime - TODO ;; .modtime - TODO + ;; + ;; + ;; Zone 0-6 are direct, zone 7 indirect, zone 8 double indirect, zone 9 triple indirect + ;; > ┌────────┐ + ;; > │ │ + ;; > ┌───────►│Data │ + ;; > │ │ │ + ;; > ┌──────┐ Direct│ └────────┘ + ;; > │zone 0├───────┘ + ;; > ├──────┤ + ;; > │... │ + ;; > ├──────┤ ┌────────┐ ┌────────┐ + ;; > │zone 6│ │ ├─────►│ │ + ;; > ├──────┤ Indirect │ │ │ Data │ + ;; > │zone 7├─────────►│ │ │ │ + ;; > ├──────┤ └────────┘ └────────┘ + ;; > │zone 8├───────┐ + ;; > ├──────┤ │Double indirect┌─────────┐ ┌────────┐ ┌─────────┐ + ;; > │zone 9│ └──────────────►│ ├───►│ ├───►│ │ + ;; > └──┬───┘ │ │ │ │ │ Data │ + ;; > │ │ │ │ │ │ │ + ;; > │ └─────────┘ └────────┘ └─────────┘ + ;; > │ Triple indirect ┌────────┐ + ;; > └────────────────►│ │ ┌──────────┐ ┌─────────┐ ┌──────────┐ + ;; > │ ├───►│ │ │ │ │ │ + ;; > │ │ │ ├─────►│ ├─────►│ Data │ + ;; > └────────┘ │ │ │ │ │ │ + ;; > └──────────┘ └─────────┘ └──────────┘ struc StpdFS_Inode { .mode dw ? .nlink dw ? @@ -117,6 +145,8 @@ struc StpdFS_Dirent { } DEFN StpdFS_Dirent +STPDFS_DIRENT_PER_BLOCK = sizeof.StpdFS_Dirent / STPDFS_BSIZE + ; ------------------------------------------------------------------------ ;; Section: Implementation