@@ -6,6 +6,8 @@ I denne oppgaven får dere utlevert kode som simulerer et enkelt filsystem. Kjø
Filsystemet er som helhet lagret i en fil ``myfilesystem.fs`` og er delt inn i blokker. Den første blokken har headerinformasjon om filsystemet, og resten er blokker brukt til filinnhold. Les kommentarer og dokumentasjon i koden for å forstå koden bedre. Det er også mulig å åpne filsystemet som rå data ved å bruke kommando ``xxd myfilesystem.fs`` i terminal. Da vil du se en oversikt over filsystemet i hexadesimalt format.
I ``main.py`` er det lagt til noen tester du kan kjøre etter hver oppgave for å sjekke om koden din fungerer som forventet.
## Oppgave 1: Bedre bruk av frie blokker
Forsøk å forstå hvordan ``save()`` bestemmer hvor en ny fil skal lagres. Tenk over hvorfor dette ikke er ideelt med tanke på at filer kan slettes. Endre koden slik at den alltid finner den første tilgjengelige blokken å skrive til. Dette bør fungere i samspill med ``remove()``, som sletter filer. Pass på at du fortsatt får samme feilmelding dersom du ikke har plass til å lagre flere filer.
...
...
@@ -22,7 +24,7 @@ Siden `load()` nå leser bare eksakt det innholdet som er lagret i en fil og ikk
## Oppgave 4: hard_link()
Vi har gitt filsystemet en hel blokk til headerinformasjon. Der lagres filnavnene og størrelsene som vi har brukt så langt. Men vi har ikke nok blokker til å fylle den fullstendig med file entries. Med den resterende plassen skal vi tillate å lage hard links til eksisterende filer.
Vi har gitt filsystemet en hel blokk til headerinformasjon. Der lagres filnavnene og størrelsene på filene. Men vi har ikke nok blokker til å fylle den fullstendig med file entries. Med den resterende plassen skal vi tillate å lage hard links til eksisterende filer. Altså, en hard link skal kun plasseres som en entry under maks antall filer i headeren.
### Del A
Implementer ``hard_link(f, existing_file, linked_file)``. Funksjonen skal lage en ny file entry som peker til en eksisterende fil. Med andre ord, funksjonen skal lage en hard link.
...
...
@@ -36,10 +38,4 @@ Oppdater `load()` slik at den kan lese innholdet fra en hard link.
Oppdater `remove()` slik:
- Hvis `remove()` blir kallet for en fil, skal filens originale file entry erstattes av den øverste hard linken som peker til filen. Hvis det ikke finnes noen slike hard linker, skal filen slettes.
- Hvis `remove()` blir kallet for en hard link, skal hard linken slettes.
- Husk å bruke `NoFile` som exception når filnavnet ikke finnes hverken som fil eller link.
## change log
- changed find_fileno so it uses FILENAME_SIZE from the start, so not needed to change in student task
- added error for save() if no space is available which is used in save() to begin with.
- added error to remove() if file not found
- Made it so errors are not caught in the file system, such that the student can see the error messages and they can be checked in unit tests.
\ No newline at end of file
- Husk å bruke `NoFile` som exception når filnavnet ikke finnes hverken som fil eller link.