Top Banner
1 FAT32 Utility Operations Guide: rm and rmdir COP4610 Florida State University
38

FAT32 Utility Operations Guide: rmand rmdir

Apr 02, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: FAT32 Utility Operations Guide: rmand rmdir

1

FAT32 Utility OperationsGuide: rm and rmdir

COP4610

Florida State University

Page 2: FAT32 Utility Operations Guide: rmand rmdir

Outline

Problem of orphaned data

File removal walkthrough

Directory removal walkthrough

2

Page 3: FAT32 Utility Operations Guide: rmand rmdir

Orphans

3

Page 4: FAT32 Utility Operations Guide: rmand rmdir

What is orphaned data?

Orphaned data – data marked as valid in the file system that cannot be reached through the file system mechanisms

How could this ever happen?

4

Page 5: FAT32 Utility Operations Guide: rmand rmdir

Orphan Example

Suppose we want to delete a file

It has

A directory entry with a first cluster number

Data clusters

Entries in the FAT

5

Page 6: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Orphan Example

6

FAT

1 2 3 4 5 6 7

Dir Entry: First Cluster # 3

3

4

4 EoC

Index

Next Cluster

Cluster numbers

Our sample file starts at cluster 3 and continues to cluster 4.

Page 7: FAT32 Utility Operations Guide: rmand rmdir

Orphan Example

Normally when we want to find a file’s contents, we start by reading its directory entry contents

What if we start deleting there?

7

Page 8: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Orphan Example

8

FAT

1 2 3 4 5 6 7

Dir Entry: First Cluster # 3

3

4

4 EoC

Index

Next Cluster

Cluster numbers

Step 1: Read the file’s first cluster number into memory.

Page 9: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Orphan Example

9

FAT

1 2 3 4 5 6 7

3

4

4 EoC

Index

Next Cluster

Cluster numbers

Step 2: Delete the file’s directory entry.

Page 10: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Orphan Example

10

FAT

1 2 3 4 5 6 7

3

4

4 EoC

Index

Next Cluster

Cluster numbers

Step 3: Look up cluster 3 in the FAT.

Page 11: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Orphan Example

11

FAT

1 2 3 4 5 6 7

3

4

4 EoC

Index

Next Cluster

Cluster numbers

Step 4: Read the file’s next cluster number into memory (4).

Page 12: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Orphan Example

12

FAT

1 2 3 4 5 6 7

3

4

4 EoC

Index

Next Cluster

Cluster numbers

Crash!

Page 13: FAT32 Utility Operations Guide: rmand rmdir

Orphan Example

We just crashed and have to reboot the system

Can the file system get to the data we were deleting?

13

Page 14: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Orphan Example

14

FAT

1 2 3 4 5 6 7

3

4

4 EoC

Index

Next Cluster

Cluster numbers

We are now in trouble. Since we deleted the file’s directory entry, we don’t know where the file started…

Page 15: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Orphan Example

15

FAT

1 2 3 4 5 6 7

3

4

4 EoC

Index

Next Cluster

Cluster numbers

Leftover entries in the FAT that we can never reclaim…

Allocated disk space we can never clean up…

Page 16: FAT32 Utility Operations Guide: rmand rmdir

Preventing Orphans

How can we avoid the chance of orphans while we delete?

Answer: delete backwards!

16

Page 17: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Preventing Orphans

17

FAT

1 2 3 4 5 6 7

Dir Entry: First Cluster # 3

3

4

4 EoC

Index

Next Cluster

Cluster numbers

Step 1: Read through entire file until we find the last cluster entry for the file in the FAT

Page 18: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Preventing Orphans

18

FAT

1 2 3 4 5 6 7

Dir Entry: First Cluster # 3

3

4

4

Index

Next Cluster

Cluster numbers

Step 2: Mark the last cluster as free. What happens if we crash here?

Page 19: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Preventing Orphans

19

FAT

1 2 3 4 5 6 7

Dir Entry: First Cluster # 3

3

4

4

Index

Next Cluster

Cluster numbers

Step 3: Find the new last file cluster in the FAT.

Page 20: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Preventing Orphans

20

FAT

1 2 3 4 5 6 7

Dir Entry: First Cluster # 3

3

4

Index

Next Cluster

Cluster numbers

Step 4: Mark the last cluster as free.

Page 21: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Preventing Orphans

21

FAT

1 2 3 4 5 6 7

3

4

Index

Next Cluster

Cluster numbers

Step 5: Finally, if all the FAT entries for the file are marked free, delete the directory entry.

Page 22: FAT32 Utility Operations Guide: rmand rmdir

DATA

DATA

Preventing Orphans

22

FAT

1 2 3 4 5 6 7

3

4

Index

Next Cluster

Cluster numbers

Why don’t we zero out the file’s data?

Page 23: FAT32 Utility Operations Guide: rmand rmdir

File Data Leftovers

Most file systems only update metadata upon deletion and leave old data as it was. Why?

Old data will just be overwritten later anyway by new, valid data

File system will never display old data to the user because it is no longer part of a file

It can take a significant amount of time to zero over large amounts of file data

Zeroing the data can cause extra wear on the device

23

Page 24: FAT32 Utility Operations Guide: rmand rmdir

File Data Leftovers

File recovery utilities leverage this situation

Scans the file system for data clusters that are not currently allocated

24

Page 25: FAT32 Utility Operations Guide: rmand rmdir

File Deletion

rm operation

25

Page 26: FAT32 Utility Operations Guide: rmand rmdir

File Deletion : rm

1. Check that the file to removed is a file and does exist

Cannot use this utility command to delete a directory

2. Seek to the last cluster entry in the FAT

3. Mark the last cluster entry in the FAT with the free mark of 0x00000000

4. Repeat 2 and 3 until there are no more cluster entries in the FAT

5. Delete the file’s directory entry

26

Page 27: FAT32 Utility Operations Guide: rmand rmdir

Deleting a Directory Entry

Can just mark the first byte in the directory entry to symbolize deletion

If DIR_Name[0] == 0xE5, then the directory entry is free (no file or directory name in this entry)

If DIR_Name[0] == 0x00, then the directory entry is free (same as for 0xE5), and there are no allocated directory entries after this one

27

Page 28: FAT32 Utility Operations Guide: rmand rmdir

Deleting a Directory Entry

28

Deleted directory entry staring with 0xE5

Page 29: FAT32 Utility Operations Guide: rmand rmdir

Deleting a Directory Entry

29

Starts with 0x00, so no more directory entries in this cluster

Page 30: FAT32 Utility Operations Guide: rmand rmdir

rm Use Cases

Successful rm/FILES/] ls. .. CONST.TXT EMPTY.TXT HELLO.TXT/FILES/] rm HELLO.TXT/FILES/]

Unsuccessful rm/FILES/] rm NOTHERE.TXTError: does not exist/FILES/]

30

Page 31: FAT32 Utility Operations Guide: rmand rmdir

Directory Deletion

rmdir

31

Page 32: FAT32 Utility Operations Guide: rmand rmdir

Directory Deletion: rmdir

1. Check that directory to be removed is empty and is actually a directory

2. Go to step #2 for rm

Rest of directions just like deleting a file!

32

Page 33: FAT32 Utility Operations Guide: rmand rmdir

rmdir Use Cases

Successful rmdir

/DIRS/] rmdir A

/DIRS/]

Unsuccessful rmdir

/DIRS/] rmdir B

Error: directory not empty

/DIRS/]

33

Page 34: FAT32 Utility Operations Guide: rmand rmdir

rmdir Use Cases

Unsuccessful rmdir

/DIRS/] cd ..

/] rmdir FATINFO.TXT

Error: not a directory

/]

34

Page 35: FAT32 Utility Operations Guide: rmand rmdir

Next Time

Today’s lecture is last recitation lecture

35

Page 36: FAT32 Utility Operations Guide: rmand rmdir

Project 3 Submission Hints

Make sure everything is included!

Points will be taken off if things are missing

Make sure the project at least compiles

If it doesn’t, it will get a 0.

Please remove all executables and *.o files before submissions

Only one person in a group needs to submit. Include the name of the group members in the README file.

36

Page 37: FAT32 Utility Operations Guide: rmand rmdir

Project 3 Submission Hints

Follow the submission guidelines in the Project Description

Submit via Blackboard

No demo

37

Page 38: FAT32 Utility Operations Guide: rmand rmdir

Questions?

Good luck with project 3 and finals!

38