Precept Slides

Precept Slides

Project 6 File System Administrave • No Design Review – A “design document” instead • Final project – No collaboraon with peers! • Due on January 15 (Dean’s Date) • No precept next week – Find me in the fishbowl • Office hours per my schedule 2 Overview • Implement a UNIX-like file system – In a 1MB file! • Determined by FS_SIZE 3 API • Disk format • File – open, close, read, write, seek – link & unlink (which is how you delete a file) – stat • Directory operaons – make, remove • Shell – ls & chdir (cd) 4 Don’t Worry About • Permissions – Access Control Lists (ACLs) • Concurrency 5 Disk Layout This project in a 1MB file named “disk” Space between divisions is not representave of actual size 6 Contains metadata about the disk Examples: • Size • # of inodes • # of data blocks • Where inodes start • Where data blocks start • Etc.. 7 Where do I go to find …? inode array inode metadata direct Only direct for this project indirect 8 inode Metadata Examples • File or directory? • Link count • Size • Etc.. 9 fs_init • A “constructor” for the FS code • block_init 10 fs_mkfs • “Makes” a file system – Write super block – Mark inodes and data blocks to be free – Create root directory – Ini5alize file descriptor table 11 File Creaon & Dele5on • fs_open(), fs_link(), fs_unlink() • open: create a new file if it does not exists • link: hard link to a file – create a link to an exis5ng file – hard vs. sok link? • unlink: – delete a file if link count == 0 – delete directory entry 12 File Access • open: open exis5ng file (allocate file descriptor) • read: read bytes from open file • write: write bytes to open file • lseek: change posi5on in file • close: free file descriptor 13 fs_lseek() Seman5cs • Our fs_lseek() only takes two arguments – fd, offset • Unix lseek() takes three – fd, offset, whence • Whence: SEEK_SET, SEEK_CUR, SEEK_END • Our fs_lseek() assumes SEEK_SET • What if lseek() wants to seek past the end of the file? 14 Directories, part 1 • Like a file: List of files and directories – Name to inode number mapping • Can read it like a file – Use exis5ng file I/O func5ons to do directory manipulaon • Avoid duplicate efforts internally • Always has at least two entries – “..” parent directory – “.” current directory 15 Directories, part 2 • mkdir: make a directory – create an entry in parent directory – create two directories: “..” and “.” • rmdir: remove directory if empty • chdir: change the current directory – For relave path names only 16 Example fs_mkdir int fs_mkdir(char *file_name) { if (file_name exists) return ERROR; /* allocate inode */ /* allocate data blocks */ /* set directory entries for “..” & “.” */ /* set inode entries appropriately */ /* update parent */ return SUCCESS } 17 FAQ 18 Absolute Path names • Do we need to support absolute path names? – I.e., when I am in “/foo”, do I need to support: chdir /bar/tmp/? • No – Otherwise, you would have to support absolute path names everywhere: open, link, mkdir, etc. 19 Removing a Directory • Do I need to support recursive directory removal? – I.e., remove all the subdirectories and files contained in a directory I am going to delete? • No – Return an error if directory is not empty 20 File System Check (fsck) • Not required • Useful for debugging • Verifies integrity of: – Superblock magic number – Block allocaons – Inode allocaons – Block Allocaon Map – Directory content – Etc. 21 Implemen5ng the Project • In Linux – Uses a file to simulate a disk – Code is provided (*Fake files) – “make lnxsh” – “./lnxsh” • Shell supports – System calls for File System – Commands like “ls”, “cat foo”, “create foo200” • ~1,000 lines of code 22 Tesng • A python script to use in tes5ng will be provided • Mul5ple tests that each – Execute the shell – Open an exis5ng file system (or format a new one) – Write commands to shell (cat foo) – Read output from shell (ABCDEFGHIJKL) – Exit • you should write your own test cases – Submit them with your code 23 Design Document • Sec5ons on project page • ~85 of them • I like diagrams • PDF • Submit together with your implementaon 24 .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    24 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us