SlideShare a Scribd company logo
© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Modules
2© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
What to Expect?
W's of a File System
Three levels of File Systems
Design a File System
FS relation with a Hard Disk Partition
FS relation with /
Writing a FS module
3© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Why we need a File System?
Preserve Data for Later
Access
Update
Discard
Tag Data for
Categorizing
Easy & Fast Lookup
Fast & Reliable Data Management by
Optimized Operations
4© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
What is a File System?
Three things at three levels
Hardware Space – The Physical Organization of Data
on the Storage Devices
Kernel Space – Drivers to decode & access the data
from the Physical Organization
User Space – All what you see from / - The User View
Which ever it be, it basically does
Organize our data
For easy access by tagging
For fast maintenance by optimizing
5© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
The Three File Systems
Hardware (Space) File System - Storer
Kernel (Space) File System - Decoder
User (Space) File System - Show-er
Storer: Partition for the File System (/dev/*)
Creating the File System (mkfs.*)
Decoder: Driver for the File System (*.ko)
Show-er: Root File System (/xyz)
Connector of the 3: mount
Let's try an example
6© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Recall
7© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Understanding a Hard Disk
Example (Hard Disk)
Heads (or Platters): 0 – 9
Tracks (or Cylinders): 0 – 24
Sectors: 1 – 64
Size of the Hard Disk
10 x 25 x 64 x 512 bytes = 8000KiB
Device independent numbering
(h, t, s) → 64 * (10 * t + h) + s → (1 - 16000)
8© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Partitioning a Hard Disk
First Sector – Master Boot Record (MBR)
Contains Boot Info
Contains Physical Partition Table
Maximum Physical Partitions: 4
At max 1 as Extended Partition
Rest as Primary Partition
Extended could be further partitioned into
Logical Partitions
In each partition
First Sector – Boot Record (BR)
Remaining for File System / Format
Extended Partition BR contains the Logical Partition Table
9© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Placement of a Hardware FS
Each Partition contains a File System
Raw (no FS)
Organized
Organized one is initialized by the corresponding Formating
“Partition Type is to OS”
W95*, DOS*, BSD*, Solaris*, Linux, ...
“Format Type is to File System”
ext2, ext3, vfat, ntfs, jffs2, …
Particular Partition Types support only Particular File
System Types
10© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Design a FS
Let's Take 1 Partition
With 2N blocks of 1 sector each
Size = 2N x 512 bytes = N KiB
Given 3 data pieces
Source Code – 384 bytes
Image – 768 bytes
Document – 500 bytes
Place optimally for further operations
11© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Design
C
384b
Img
768b
Doc
500b
12© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Design
C
384b Img ...
512b
Doc
500b
...Img
256b
Img
768b
Doc
500b
13© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Design
C
384b Img ...
512b
Doc
500b
...Img
256b
C 384 1 1
Img 768 2 3
Doc 500 4 4
XXX X X X
XXX X X X
...
14© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Design
C
384b Img ...
512b
Doc
500b
...Img
256b
C 384 1 1
Img 768 2 3
Doc 500 4 4
0 0 0 0
0 0 0 0
...
15© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Design
C ...
512b
Img ...
512b
Doc
500b
...Img
256b
C 384 1 1
Img 768 2 3
Doc 500 4 4
0 0 0 0
0 0 0 0
... … C
488b
16© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Design
C ...
512b
Img ...
512b
Doc
500b
...Img
256b
C 1000 1 5 0 0 0
Img 768 2 3 0 0 0
Doc 500 4 0 0 0 0
0 0 0 0 0 0 0
...
… C
488b
17© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Design
C ...
512b
Img ...
512b
Doc
500b
...Img
256b
C 1000 4 8 0 0 0
Img 768 5 6 0 0 0
Doc 500 7 0 0 0 0
0 0 0 0 0 0 0
...
… C
488b
18© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Design
C ...
512b
Img ...
512b
Doc
500b
...Img
256b … C
488b4
FST
...
C 1000 5 9 0 0 0
Img 768 6 7 0 0 0
Doc 500 8 0 0 0 0
0 0 0 0 0 0 0
...
19© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Design
C ...
512b
Img ...
512b
Doc
500b
...Img
256b … C
488b4
FST
...
C 1000 5 9 0 0 0TS rw-
Img 768 6 7 0 0 0TS rw-
Doc 500 8 0 0 0 0TS rw-
0 0 0 0 0 0 00 ---
...
20© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Kernel Space File System
Also called the File System modules
Examples: ext2, ext3, vfat, ntfs, jffs2, …, real_sfs, ...
Role: Decode the Hardware FS Layout to Access Data
from the User Space (by implementing the decode logic)
Through the following 2 Interactions:
Interface with the Hardware FS Layout in the hardware partition
Interface with the User Space FS to give a unified view, as at /
First part done through Block Driver
Second part done through VFS
Kernel provides VFS to achieve the virtual user view
21© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
VFS Specifics
Inherited from the Linux specific FS
Promoted to a super set of various FS
Providing a unified view to the User
Default values for various attributes
owner, group, permissions, …
File Types
Same seven types as in ext2/ext3
22© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Virtual File System Interactions
complete
vfat
VFS
ext2
Partition 1
....
Partition 2 ... Partition N ...
User Space File System View @ /
....
Block Driver Block Driver.... ....
real_sfs
Block Driver
23© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Virtual File System Internals
Super Block
Directory Entry Table
Inode Table
d
> File Name
> Inode Number
> File Meta Data
> File Data Block Nos
> FS Meta Data
> Root Inode Number
d
Data Block
r
24© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
VFS Interaction Internals
vfat
VFS
ext2
Buffer
Cache
Block
Drivers
Directory
Cache
Inode
Cache
....
Block
Drivers
25© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
VFS Translation Callbacks
Five categories
File System level
Super Block Operations
Super Block level (Meta Meta Data)
Inode Operations
Inode level (Meta Data)
Directory Entry Operations
File level (Data)
File Operations through the Buffer Cache
Buffer Cache level
Actual Data Operations
26© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Registration
Header: <linux/fs.h>
APIs
int register_filesystem(file_system_type *)
int unregister_filesystem(file_system_type *)
File System Operations
get_sb/mount: (Invoked by mount)
get_sb_bdev/mount_bdev -> Fill the Super Block
kill_sb: (Invoked by umount)
kill_block_super
27© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Fill the Super Block
Block Size & Bits
Magic Number / File System Type
Super Block Operations
Root Inode
Inode Operations
Inode Mode
File Operations
28© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Super Block Operations
Header: <linux/fs.h>
APIs
write_inode: Update File Meta Data
statfs: Get the File Status (Invoked by stat)
simple_statfs (Handler from libfs)
29© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Inode Operations
Header: <linux/fs.h>
APIs
lookup
Search the file name by absolute path
Traverse the inode chain
if found matching inode, then populate the dentry with the inode
information
Inode Information
Size
Mode
File Operations
...
30© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File Operations
Header: <linux/fs.h>
APIs
open → generic_file_open
read → do_sync_read → generic_file_aio_read →
do_generic_file_read → readpage
write → do_sync_write → generic_file_aio_write →
generic_file_buffered_write → write_begin & write_end
release
readdir: Change Directory (cd). List Directory (ls)
Directory Entry
Fill Function
fsync: Sync the File (sync)
simple_sync_file
31© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Address Space Operations
The Buffer / Page Cache level Operations
Header: <linux/fs.h>
Page Operations
readpage (Invoked by read)
write_begin, write_end (Invoked by write)
writepage (Invoked by pdflush kernel threads)
Page Functions
PageUptodate, PageDirty, PageWriteback, PageLocked
SetPageUptodate, ClearPageDirty, unlock_page, ...
page_address, ...
32© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
ext2/3 Data Block Organization
size ... db10 ib dib tib... db0uidmode
DB0 ... DB10 ...
DB11
... ...
... ...
...
DB...
DB...
DB...
33© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Dive into the Real Driver
© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Pieces – Set 1
Hardware Space
File System Design (Logic) – real_sfs_ds.h
File System Creator (Application) – format_real_sfs.c /
mkfs.sfs.c
Kernel Space
File System Decoder (Driver) – real_sfs_ops.[hc]
File System Translator (Driver) – real_sfs.c
File System Show-er (VFS)
User Space
File System Connector (mount)
© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
File System Pieces – Set 2
Hardware Space
File System Design (Logic) – ddk_fs_ds.h
File System Creator (Application) – mkfs.ddkfs.c
Kernel Space
File System Decoder (Driver) – ddk_fs_ops.[hc]
File System Translator (Driver) – ddk_fs.c
File System Show-er (VFS)
User Space
File System Connector (mount)
36© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
What all have we learnt?
W's of a File System
Three levels of File Systems
And relation between them
Design a File System
FS relation with a Hard Disk Partition
FS relation with /
Role of VFS
Writing a FS module
Simplified Interaction with the Block Driver
5 Operation Sets with VFS
37© 2010-19 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Any Queries?

More Related Content

PDF
File System Modules
PDF
USB Drivers
PDF
BeagleBone Black Bootloaders
PDF
BeagleBone Black Bootloaders
PDF
Linux Porting
PDF
PCI Drivers
PDF
BeagleBoard-xM Bootloaders
File System Modules
USB Drivers
BeagleBone Black Bootloaders
BeagleBone Black Bootloaders
Linux Porting
PCI Drivers
BeagleBoard-xM Bootloaders

What's hot (20)

PDF
Video Drivers
PDF
Character Drivers
PDF
Introduction to Embedded Systems
PDF
Bootloaders
PDF
Embedded Applications
PDF
Linux Memory Management
PDF
BeagleBoard-xM Booting Process
PDF
Block Drivers
PDF
Board Bringup
PDF
PDF
Low-level Accesses
PDF
Introduction to Linux
PDF
Embedded Storage Management
PDF
Kernel Debugging & Profiling
PDF
Introduction to Linux Drivers
PDF
gcc and friends
PDF
BeagleBone Black Booting Process
Video Drivers
Character Drivers
Introduction to Embedded Systems
Bootloaders
Embedded Applications
Linux Memory Management
BeagleBoard-xM Booting Process
Block Drivers
Board Bringup
Low-level Accesses
Introduction to Linux
Embedded Storage Management
Kernel Debugging & Profiling
Introduction to Linux Drivers
gcc and friends
BeagleBone Black Booting Process
Ad

Similar to File System Modules (20)

PDF
File Systems
PDF
Linux fundamental - Chap 10 fs
PPTX
How to design a file system
PPTX
Disk and File System Management in Linux
PPTX
file system overview in oerating system .
PDF
Linux File System
PPT
CF_Unit5_WorkingWithWindowsAndDOS23052021.ppt
PPT
Working with Windows and DOS Systems (1).ppt
ODP
4. linux file systems
PDF
Linux passwords class 4
PDF
TLPI Chapter 14 File Systems
PPTX
Lecture 07- The FAT File Systemgoogle.pptx
PDF
Course 102: Lecture 27: FileSystems in Linux (Part 2)
PDF
009709863.pdf
PDF
7 linux fdisk command examples to manage hard disk partition
PPTX
Root file system
PDF
Ch11 file system implementation
PDF
Introduction to Linux
PPT
2.1 design hard disk layout v2
PDF
Course 102: Lecture 26: FileSystems in Linux (Part 1)
File Systems
Linux fundamental - Chap 10 fs
How to design a file system
Disk and File System Management in Linux
file system overview in oerating system .
Linux File System
CF_Unit5_WorkingWithWindowsAndDOS23052021.ppt
Working with Windows and DOS Systems (1).ppt
4. linux file systems
Linux passwords class 4
TLPI Chapter 14 File Systems
Lecture 07- The FAT File Systemgoogle.pptx
Course 102: Lecture 27: FileSystems in Linux (Part 2)
009709863.pdf
7 linux fdisk command examples to manage hard disk partition
Root file system
Ch11 file system implementation
Introduction to Linux
2.1 design hard disk layout v2
Course 102: Lecture 26: FileSystems in Linux (Part 1)
Ad

More from Anil Kumar Pugalia (20)

PDF
Kernel Debugging & Profiling
PDF
PDF
System Calls
PDF
Embedded C
PDF
Embedded Software Design
PDF
Playing with R L C Circuits
PDF
Audio Drivers
PDF
Mobile Hacking using Linux Drivers
PDF
Shell Scripting
PDF
References
PDF
Functional Programming with LISP
PDF
Power of vi
PDF
"make" system
PDF
Hardware Design for Software Hackers
PDF
RPM Building
PDF
Linux User Space Debugging & Profiling
PDF
Linux Network Management
PDF
System Calls
PDF
Kernel Debugging & Profiling
System Calls
Embedded C
Embedded Software Design
Playing with R L C Circuits
Audio Drivers
Mobile Hacking using Linux Drivers
Shell Scripting
References
Functional Programming with LISP
Power of vi
"make" system
Hardware Design for Software Hackers
RPM Building
Linux User Space Debugging & Profiling
Linux Network Management
System Calls

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Electronic commerce courselecture one. Pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
Big Data Technologies - Introduction.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Cloud computing and distributed systems.
PDF
Encapsulation theory and applications.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Electronic commerce courselecture one. Pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
The Rise and Fall of 3GPP – Time for a Sabbatical?
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Big Data Technologies - Introduction.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
NewMind AI Monthly Chronicles - July 2025
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
20250228 LYD VKU AI Blended-Learning.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Cloud computing and distributed systems.
Encapsulation theory and applications.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Understanding_Digital_Forensics_Presentation.pptx

File System Modules

  • 1. © 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Modules
  • 2. 2© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. What to Expect? W's of a File System Three levels of File Systems Design a File System FS relation with a Hard Disk Partition FS relation with / Writing a FS module
  • 3. 3© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Why we need a File System? Preserve Data for Later Access Update Discard Tag Data for Categorizing Easy & Fast Lookup Fast & Reliable Data Management by Optimized Operations
  • 4. 4© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. What is a File System? Three things at three levels Hardware Space – The Physical Organization of Data on the Storage Devices Kernel Space – Drivers to decode & access the data from the Physical Organization User Space – All what you see from / - The User View Which ever it be, it basically does Organize our data For easy access by tagging For fast maintenance by optimizing
  • 5. 5© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. The Three File Systems Hardware (Space) File System - Storer Kernel (Space) File System - Decoder User (Space) File System - Show-er Storer: Partition for the File System (/dev/*) Creating the File System (mkfs.*) Decoder: Driver for the File System (*.ko) Show-er: Root File System (/xyz) Connector of the 3: mount Let's try an example
  • 6. 6© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Recall
  • 7. 7© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Understanding a Hard Disk Example (Hard Disk) Heads (or Platters): 0 – 9 Tracks (or Cylinders): 0 – 24 Sectors: 1 – 64 Size of the Hard Disk 10 x 25 x 64 x 512 bytes = 8000KiB Device independent numbering (h, t, s) → 64 * (10 * t + h) + s → (1 - 16000)
  • 8. 8© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Partitioning a Hard Disk First Sector – Master Boot Record (MBR) Contains Boot Info Contains Physical Partition Table Maximum Physical Partitions: 4 At max 1 as Extended Partition Rest as Primary Partition Extended could be further partitioned into Logical Partitions In each partition First Sector – Boot Record (BR) Remaining for File System / Format Extended Partition BR contains the Logical Partition Table
  • 9. 9© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Placement of a Hardware FS Each Partition contains a File System Raw (no FS) Organized Organized one is initialized by the corresponding Formating “Partition Type is to OS” W95*, DOS*, BSD*, Solaris*, Linux, ... “Format Type is to File System” ext2, ext3, vfat, ntfs, jffs2, … Particular Partition Types support only Particular File System Types
  • 10. 10© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Design a FS Let's Take 1 Partition With 2N blocks of 1 sector each Size = 2N x 512 bytes = N KiB Given 3 data pieces Source Code – 384 bytes Image – 768 bytes Document – 500 bytes Place optimally for further operations
  • 11. 11© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Design C 384b Img 768b Doc 500b
  • 12. 12© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Design C 384b Img ... 512b Doc 500b ...Img 256b Img 768b Doc 500b
  • 13. 13© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Design C 384b Img ... 512b Doc 500b ...Img 256b C 384 1 1 Img 768 2 3 Doc 500 4 4 XXX X X X XXX X X X ...
  • 14. 14© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Design C 384b Img ... 512b Doc 500b ...Img 256b C 384 1 1 Img 768 2 3 Doc 500 4 4 0 0 0 0 0 0 0 0 ...
  • 15. 15© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Design C ... 512b Img ... 512b Doc 500b ...Img 256b C 384 1 1 Img 768 2 3 Doc 500 4 4 0 0 0 0 0 0 0 0 ... … C 488b
  • 16. 16© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Design C ... 512b Img ... 512b Doc 500b ...Img 256b C 1000 1 5 0 0 0 Img 768 2 3 0 0 0 Doc 500 4 0 0 0 0 0 0 0 0 0 0 0 ... … C 488b
  • 17. 17© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Design C ... 512b Img ... 512b Doc 500b ...Img 256b C 1000 4 8 0 0 0 Img 768 5 6 0 0 0 Doc 500 7 0 0 0 0 0 0 0 0 0 0 0 ... … C 488b
  • 18. 18© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Design C ... 512b Img ... 512b Doc 500b ...Img 256b … C 488b4 FST ... C 1000 5 9 0 0 0 Img 768 6 7 0 0 0 Doc 500 8 0 0 0 0 0 0 0 0 0 0 0 ...
  • 19. 19© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Design C ... 512b Img ... 512b Doc 500b ...Img 256b … C 488b4 FST ... C 1000 5 9 0 0 0TS rw- Img 768 6 7 0 0 0TS rw- Doc 500 8 0 0 0 0TS rw- 0 0 0 0 0 0 00 --- ...
  • 20. 20© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Kernel Space File System Also called the File System modules Examples: ext2, ext3, vfat, ntfs, jffs2, …, real_sfs, ... Role: Decode the Hardware FS Layout to Access Data from the User Space (by implementing the decode logic) Through the following 2 Interactions: Interface with the Hardware FS Layout in the hardware partition Interface with the User Space FS to give a unified view, as at / First part done through Block Driver Second part done through VFS Kernel provides VFS to achieve the virtual user view
  • 21. 21© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. VFS Specifics Inherited from the Linux specific FS Promoted to a super set of various FS Providing a unified view to the User Default values for various attributes owner, group, permissions, … File Types Same seven types as in ext2/ext3
  • 22. 22© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Virtual File System Interactions complete vfat VFS ext2 Partition 1 .... Partition 2 ... Partition N ... User Space File System View @ / .... Block Driver Block Driver.... .... real_sfs Block Driver
  • 23. 23© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Virtual File System Internals Super Block Directory Entry Table Inode Table d > File Name > Inode Number > File Meta Data > File Data Block Nos > FS Meta Data > Root Inode Number d Data Block r
  • 24. 24© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. VFS Interaction Internals vfat VFS ext2 Buffer Cache Block Drivers Directory Cache Inode Cache .... Block Drivers
  • 25. 25© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. VFS Translation Callbacks Five categories File System level Super Block Operations Super Block level (Meta Meta Data) Inode Operations Inode level (Meta Data) Directory Entry Operations File level (Data) File Operations through the Buffer Cache Buffer Cache level Actual Data Operations
  • 26. 26© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Registration Header: <linux/fs.h> APIs int register_filesystem(file_system_type *) int unregister_filesystem(file_system_type *) File System Operations get_sb/mount: (Invoked by mount) get_sb_bdev/mount_bdev -> Fill the Super Block kill_sb: (Invoked by umount) kill_block_super
  • 27. 27© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Fill the Super Block Block Size & Bits Magic Number / File System Type Super Block Operations Root Inode Inode Operations Inode Mode File Operations
  • 28. 28© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Super Block Operations Header: <linux/fs.h> APIs write_inode: Update File Meta Data statfs: Get the File Status (Invoked by stat) simple_statfs (Handler from libfs)
  • 29. 29© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Inode Operations Header: <linux/fs.h> APIs lookup Search the file name by absolute path Traverse the inode chain if found matching inode, then populate the dentry with the inode information Inode Information Size Mode File Operations ...
  • 30. 30© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File Operations Header: <linux/fs.h> APIs open → generic_file_open read → do_sync_read → generic_file_aio_read → do_generic_file_read → readpage write → do_sync_write → generic_file_aio_write → generic_file_buffered_write → write_begin & write_end release readdir: Change Directory (cd). List Directory (ls) Directory Entry Fill Function fsync: Sync the File (sync) simple_sync_file
  • 31. 31© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Address Space Operations The Buffer / Page Cache level Operations Header: <linux/fs.h> Page Operations readpage (Invoked by read) write_begin, write_end (Invoked by write) writepage (Invoked by pdflush kernel threads) Page Functions PageUptodate, PageDirty, PageWriteback, PageLocked SetPageUptodate, ClearPageDirty, unlock_page, ... page_address, ...
  • 32. 32© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. ext2/3 Data Block Organization size ... db10 ib dib tib... db0uidmode DB0 ... DB10 ... DB11 ... ... ... ... ... DB... DB... DB...
  • 33. 33© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Dive into the Real Driver
  • 34. © 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Pieces – Set 1 Hardware Space File System Design (Logic) – real_sfs_ds.h File System Creator (Application) – format_real_sfs.c / mkfs.sfs.c Kernel Space File System Decoder (Driver) – real_sfs_ops.[hc] File System Translator (Driver) – real_sfs.c File System Show-er (VFS) User Space File System Connector (mount)
  • 35. © 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. File System Pieces – Set 2 Hardware Space File System Design (Logic) – ddk_fs_ds.h File System Creator (Application) – mkfs.ddkfs.c Kernel Space File System Decoder (Driver) – ddk_fs_ops.[hc] File System Translator (Driver) – ddk_fs.c File System Show-er (VFS) User Space File System Connector (mount)
  • 36. 36© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. What all have we learnt? W's of a File System Three levels of File Systems And relation between them Design a File System FS relation with a Hard Disk Partition FS relation with / Role of VFS Writing a FS module Simplified Interaction with the Block Driver 5 Operation Sets with VFS
  • 37. 37© 2010-19 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Any Queries?