159
A Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau Shan Lu University of Wisconsin - Madison

A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

A Study of Linux File System Evolution

Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Shan Lu

University of Wisconsin - Madison

Page 2: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Local File Systems Are Important

Page 3: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Local File Systems Are Important

WindowsMacLinux

Page 4: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Local File Systems Are Important

WindowsMacLinux

Page 5: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Local File Systems Are Important

Google GFS

Hadoop DFS

WindowsMacLinux

Page 6: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Local File Systems Are Important

Google GFS

Hadoop DFS

WindowsMacLinux

Page 7: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Local File Systems Are Important

Google GFS

Hadoop DFS

Android iPhone

WindowsMacLinux

Page 8: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Local File Systems Are Important

Google GFS

Hadoop DFS

Android iPhone

WindowsMacLinux

Page 9: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Why Study Is Useful ?

Page 10: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Why Study Is Useful ?

Study drives system designs ➡ previous work focuses on measurements➡ little emphasis on system evolution

Page 11: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Why Study Is Useful ?

Study drives system designs ➡ previous work focuses on measurements➡ little emphasis on system evolution

Answer important questions➡ complexity of file systems➡ dominant bug types ➡ performance optimizations ➡ reliability enhancements ➡ similarities across file systems

Page 12: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Who Is This Study Useful To ?

Page 13: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Who Is This Study Useful To ?

File system developers➡ avoid same mistakes➡ improve existing design and implementation

Page 14: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Who Is This Study Useful To ?

File system developers➡ avoid same mistakes➡ improve existing design and implementation

System researchers➡ identify problems that plague existing systems➡ match research to reality

Page 15: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Who Is This Study Useful To ?

File system developers➡ avoid same mistakes➡ improve existing design and implementation

System researchers➡ identify problems that plague existing systems➡ match research to reality

Tool builders➡ large-scale statistical bug patterns➡ effective bug-finding tools➡ realistic fault injection

Page 16: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

How We Studied ?

Page 17: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

How We Studied ?

File systems are evolving➡ code base is not static➡ new features, bug-fixings➡ performance and reliability improvement

Page 18: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

How We Studied ?

File systems are evolving➡ code base is not static➡ new features, bug-fixings➡ performance and reliability improvement

Patches describe evolution➡ how one version transforms to the next➡ every patch is available➡ “system archeology”

Page 19: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

How We Studied ?

File systems are evolving➡ code base is not static➡ new features, bug-fixings➡ performance and reliability improvement

Patches describe evolution➡ how one version transforms to the next➡ every patch is available➡ “system archeology”

Study with other rich information➡ source code, design documents➡ forum, mailing lists

Page 20: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

What We Did ?

Page 21: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Manual patch inspection ➡ XFS, Ext4, Btrfs, Ext3, Reiserfs, JFS➡ Linux 2.6 series➡ 5079 patches, multiple passes

What We Did ?

Page 22: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Manual patch inspection ➡ XFS, Ext4, Btrfs, Ext3, Reiserfs, JFS➡ Linux 2.6 series➡ 5079 patches, multiple passes

Quantitatively analyze in various aspects➡ patch types, bug patterns and consequence➡ performance and reliability techniques

What We Did ?

Page 23: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Manual patch inspection ➡ XFS, Ext4, Btrfs, Ext3, Reiserfs, JFS➡ Linux 2.6 series➡ 5079 patches, multiple passes

Quantitatively analyze in various aspects➡ patch types, bug patterns and consequence➡ performance and reliability techniques

Provide an annotated dataset➡ rich data for further analysis

What We Did ?

Page 24: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Major Results Preview

Page 25: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bugs are prevalent

Major Results Preview

Page 26: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bugs are prevalent

Semantic bugs dominate

Major Results Preview

Page 27: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bugs are prevalent

Semantic bugs dominate

Bugs are constant

Major Results Preview

Page 28: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bugs are prevalent

Semantic bugs dominate

Bugs are constant

Corruption and crash are most common

Major Results Preview

Page 29: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bugs are prevalent

Semantic bugs dominate

Bugs are constant

Corruption and crash are most common

Metadata management has high bug density

Major Results Preview

Page 30: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bugs are prevalent

Semantic bugs dominate

Bugs are constant

Corruption and crash are most common

Metadata management has high bug density

Failure paths are error-prone

Major Results Preview

Page 31: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bugs are prevalent

Semantic bugs dominate

Bugs are constant

Corruption and crash are most common

Metadata management has high bug density

Failure paths are error-prone

Various performance techniques are used

Major Results Preview

Page 32: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Introduction

Methodology

Study Results

Outline

Page 33: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Methodology

Page 34: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Methodology

Ext4 Btrfs Ext3 JFSReiserXFSDiverse:

Page 35: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Methodology

Ext4 Btrfs Ext3 JFSReiserXFS

Linux 2.6.0 to 2.6.39

Dec. 2003 May. 2011

Diverse:

Complete:

5079 Patches

Page 36: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Methodology

Ext4 Btrfs Ext3 JFSReiserXFS

Linux 2.6.0 to 2.6.39

Dec. 2003 May. 2011

Patch

Header

Description

Code

Diverse:

Complete:

Comprehensive:

5079 Patches

Page 37: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Header1

[PATCH] fix possible NULL pointer in ext3/super.c.

Page 38: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Description2

In fs/ext3/super.c::ext3_get_journal() at line 1675, `journal' can be NULL, but it is not handled right (detect by Coverity's checker).

Page 39: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Related Code3

---   /fs/ext3/super.c+++   /fs/ext3/super.c@@  -1675,6 +1675,7 @@ journal_t *ext3_get_journal() 1   if (!journal) {2      printk(KERN_ERR "EXT3: Could not load");3      iput(journal_inode);

4   }5   journal->j_private = sb;

Page 40: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Related Code3

---   /fs/ext3/super.c+++   /fs/ext3/super.c@@  -1675,6 +1675,7 @@ journal_t *ext3_get_journal() 1   if (!journal) {2      printk(KERN_ERR "EXT3: Could not load");3      iput(journal_inode);

4   }5   journal->j_private = sb;

Page 41: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Related Code3

---   /fs/ext3/super.c+++   /fs/ext3/super.c@@  -1675,6 +1675,7 @@ journal_t *ext3_get_journal() 1   if (!journal) {2      printk(KERN_ERR "EXT3: Could not load");3      iput(journal_inode);

4   }5   journal->j_private = sb;

return NULL;

Page 42: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Classifications

Page 43: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Classifications

Patch overview➡ type: bug➡ size: 1

Page 44: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Classifications

Patch overview➡ type: bug➡ size: 1

Bug analysis➡ pattern: memory (nullptr)➡ consequence: crash➡ data structure: super➡ tool: Coverity

Page 45: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Classifications

Patch overview➡ type: bug➡ size: 1

Bug analysis➡ pattern: memory (nullptr)➡ consequence: crash➡ data structure: super➡ tool: Coverity

Performance and reliability➡ pattern➡ location

Page 46: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Limitations

Page 47: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Limitations

Only six popular file systems➡ many other file systems

Page 48: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Limitations

Only six popular file systems➡ many other file systems

Only Linux 2.6 major versions➡ omit earlier versions

Page 49: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Limitations

Only six popular file systems➡ many other file systems

Only Linux 2.6 major versions➡ omit earlier versions

Only reported bugs➡ existing, but unknown bugs

Page 50: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Outline

Introduction

Methodology

Study Results

Page 51: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Questions to Answer

What do patches do ?

What do bugs look like ?

Do bugs diminish over time ?

What consequences do bugs have ?

Where does complexity of file systems lie ?

Do bugs occur on normal paths ?

What performance techniques are used ?

Page 52: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Q1: What do patches do ?

Page 53: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

Page 54: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Type Description

Bug Fix existing bugs

Performance Propose efficient design or implementation

Reliability Improve robustness

Feature Add new functionality

Maintenance Maintain the code and documentation

Patch Overview

Page 55: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Page 56: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Page 57: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Page 58: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Page 59: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Page 60: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Bug

Page 61: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Bug

Performance

Page 62: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Bug

Performance

Reliability

Page 63: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Patch Overview

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Bug

Performance

Reliability

Feature

Page 64: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

2004 1154 809 537 384 191 5079

Bug

Performance

Reliability

Feature

Maintenance

Patch Overview

Page 65: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau
Page 66: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

45% of patches are for maintenance

Page 67: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

45% of patches are for maintenance

35% of patches are bug fixing

Page 68: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

45% of patches are for maintenance

35% of patches are bug fixing

Page 69: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Q2: What do bugs look like ?

Page 70: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Pattern

Page 71: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Type Description

Semantic Incorrect design or implementation (e.g. incorrect state update, wrong design)

Concurrency Incorrect concurrent behavior (e.g. miss unlock, deadlock)

Memory Incorrect handling of memory objects (e.g. resource leak, null dereference)

Error Code Missing or wrong error code handling (e.g. return wrong error code)

Bug Pattern

Page 72: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext3/ialloc.c, 2.6.4 find_group_other(...){ ... ...

1     2     

... ...}

Semantic Bug Example

 group = parent_group + 1;  for (i = 2; i < ngroups; i++) { }

Page 73: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext3/ialloc.c, 2.6.4 find_group_other(...){ ... ...

1     2     

... ...}

Semantic Bug Example

group = parent_group; for (i = 0; i < ngroups; i++) { }

Page 74: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Pattern

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

511 450 358 229 158 80 1786

Semantic

Page 75: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Pattern

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

511 450 358 229 158 80 1786

Semantic

Page 76: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Pattern

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

511 450 358 229 158 80 1786

Semantic

Page 77: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/extents.c, 2.6.30

ext4_ext_put_in_cache(...){ ... ...

1 cex = &EXT4_I(inode)->i_cached_extent;2 cex->ec_FOO = FOO;

}

Concurrency Bug Example

Page 78: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/extents.c, 2.6.30

ext4_ext_put_in_cache(...){ ... ...

1 cex = &EXT4_I(inode)->i_cached_extent;2 cex->ec_FOO = FOO;

}

Concurrency Bug Example

spin_lock(i_br_lock);

spin_unlock(i_br_lock);

Page 79: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Pattern

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

511 450 358 229 158 80 1786

Semantic

Concurrency

Page 80: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

btrfs/inode, 2.6.30

btrfs_new_inode(...){

  1   inode = new_inode(...); 2 ret = btrfs_set_inode_index(...); 3 if (ret){

4     return ERR_PTY(ret); }

}

Memory Bug Example

Page 81: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

btrfs/inode, 2.6.30

btrfs_new_inode(...){

  1   inode = new_inode(...); 2 ret = btrfs_set_inode_index(...); 3 if (ret){

4     return ERR_PTY(ret); }

}

Memory Bug Example

Page 82: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

btrfs/inode, 2.6.30

btrfs_new_inode(...){

  1   inode = new_inode(...); 2 ret = btrfs_set_inode_index(...); 3 if (ret){

4     return ERR_PTY(ret); }

}

Memory Bug Example

Page 83: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

btrfs/inode, 2.6.30

btrfs_new_inode(...){

  1   inode = new_inode(...); 2 ret = btrfs_set_inode_index(...); 3 if (ret){

4     return ERR_PTY(ret); }

}

Memory Bug Example

iput(inode);

Page 84: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Pattern

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

511 450 358 229 158 80 1786

Semantic

Concurrency

Memory

Page 85: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

reiserfs/xattr_acl.c, 2.6.16

reiserfs_get_acl(...){

       ... ...1    acl = posix_acl_from_disk(...);

2   *p_acl = posix_acl_dup(acl);

}

Error Code Example

Page 86: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

reiserfs/xattr_acl.c, 2.6.16

reiserfs_get_acl(...){

       ... ...1    acl = posix_acl_from_disk(...);

2   *p_acl = posix_acl_dup(acl);

}

Error Code Example

if (!IS_ERR(acl)) *p_acl = posix_acl_dup(acl);

Page 87: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

511 450 358 229 158 80 1786

Semantic

Concurrency

Memory

Error Code

Bug Pattern

Page 88: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

55% of file-system bugs are

semantic bugs

Page 89: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Q3: Do bugs diminish over time ?

Page 90: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Ext3 Bug Trend

0 5 10 15 20 25 30 35 400

5

10

15

Linux Versions

Nu

mb

er

of

Bu

gs

Page 91: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Ext3 Bug Trend

0 5 10 15 20 25 30 35 400

5

10

15

Linux Versions

Nu

mb

er

of

Bu

gs2.6.10: block reservation2.6.11: xttra in inode

Page 92: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Ext3 Bug Trend

0 5 10 15 20 25 30 35 400

5

10

15

Linux Versions

Nu

mb

er

of

Bu

gs

2.6.17: multiple block allocation

Page 93: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Ext3 Bug Trend

0 5 10 15 20 25 30 35 400

5

10

15

Linux Versions

Nu

mb

er

of

Bu

gs

2.6.38: miss error handling

Page 94: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0 10 20 30 400

10

20

30

40 XFS

0 10 20 30 400

10

20

30

40

Ext4

0 10 20 30 400

20

40

60

80 Btrfs

0 10 20 30 400

5

10

15 Ext3

0 10 20 30 400

10

20

30

40 ReiserFS

0 10 20 30 400

5

10 JFS

Num

ber

of

Bugs

Linux Version

Bug Trend

Page 95: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0 10 20 30 400

10

20

30

40 XFS

0 10 20 30 400

10

20

30

40

Ext4

0 10 20 30 400

20

40

60

80 Btrfs

0 10 20 30 400

5

10

15 Ext3

0 10 20 30 400

10

20

30

40 ReiserFS

0 10 20 30 400

5

10 JFS

Num

ber

of

Bugs

Linux Version

Bug Trend

Page 96: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0 10 20 30 400

10

20

30

40 XFS

0 10 20 30 400

10

20

30

40

Ext4

0 10 20 30 400

20

40

60

80 Btrfs

0 10 20 30 400

5

10

15 Ext3

0 10 20 30 400

10

20

30

40 ReiserFS

0 10 20 30 400

5

10 JFS

Num

ber

of

Bugs

Linux Version

Bug Trend

Page 97: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0 10 20 30 400

10

20

30

40 XFS

0 10 20 30 400

10

20

30

40

Ext4

0 10 20 30 400

20

40

60

80 Btrfs

0 10 20 30 400

5

10

15 Ext3

0 10 20 30 400

10

20

30

40 ReiserFS

0 10 20 30 400

5

10 JFS

Num

ber

of

Bugs

Linux Version

Bug Trend

Page 98: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0 10 20 30 400

10

20

30

40 XFS

0 10 20 30 400

10

20

30

40

Ext4

0 10 20 30 400

20

40

60

80 Btrfs

0 10 20 30 400

5

10

15 Ext3

0 10 20 30 400

10

20

30

40 ReiserFS

0 10 20 30 400

5

10 JFS

Num

ber

of

Bugs

Linux Version

Semantic Concurrency Memory Error Code

Page 99: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0 10 20 30 400

10

20

30

40 XFS

0 10 20 30 400

10

20

30

40

Ext4

0 10 20 30 400

20

40

60

80 Btrfs

0 10 20 30 400

5

10

15 Ext3

0 10 20 30 400

10

20

30

40 ReiserFS

0 10 20 30 400

5

10 JFS

Num

ber

of

Bugs

Linux Version

Semantic Concurrency Memory Error Code

2.6.33: remove BKL

Page 100: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug-fixing is a Constant

in a file system’s lifetime

Page 101: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Q4: What consequences do file-system bugs have ?

Page 102: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Consequence

Page 103: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Type Description

Corruption On-disk or in-memory data is corrupted

Crash File system becomes unusable

Error Unexpected operation failure or error code

Deadlock Wait for resources in circular chain

Hang File system makes no progress

Leak Resources are not freed properly

Wrong Diverts from expectation (exclude above)

Bug Consequence

Page 104: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Consequence

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

525 461 366 235 166 80 1833

Corruption

Page 105: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Consequence

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

525 461 366 235 166 80 1833

Corruption

Crash

Page 106: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Consequence

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

525 461 366 235 166 80 1833

Corruption

Crash

Error

Page 107: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Consequence

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

525 461 366 235 166 80 1833

Corruption

Crash

Error

Deadlock

Page 108: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Consequence

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

525 461 366 235 166 80 1833

Corruption

Crash

Error

Deadlock

Hang

Page 109: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Consequence

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

525 461 366 235 166 80 1833

Corruption

Crash

Error

Deadlock

Hang

Leak

Page 110: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bug Consequence

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

525 461 366 235 166 80 1833

Corruption

Crash

Error

Deadlock

Hang

Leak

Wrong

Page 111: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Corruption and Crash are most common

Page 112: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Q5: Does each logical component have an

equal degree of complexity ?

Page 113: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Components

Page 114: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Type Description

balloc Data block allocation and deallocation

dir Directory management

extent Contiguous physical blocks mapping

file File read and write operations

inode Inode-related metadata management

transaction Journaling or other transactional support

super Superblock-related metadata management

tree Generic tree structure procedures

other Other supporting components (e.g., xattr)

Components

Page 115: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Correlation

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4XFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext4

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Btrfs

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext3

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4ReiserFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4JFS

Perc

enta

ge o

f B

ugs

Percentage of Code

Page 116: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4XFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext4

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Btrfs

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext3

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4ReiserFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4JFS

Perc

enta

ge o

f B

ugs

Percentage of Code

file inode super

Correlation

Page 117: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4XFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext4

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Btrfs

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext3

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4ReiserFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4JFS

Perc

enta

ge o

f B

ugs

Percentage of Code

file inode super trans

Correlation

Page 118: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4XFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext4

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Btrfs

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext3

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4ReiserFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4JFS

Perc

enta

ge o

f B

ugs

Percentage of Code

file inode super trans tree

Correlation

Page 119: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4XFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext4

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Btrfs

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4Ext3

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4ReiserFS

0.0 0.1 0.2 0.3 0.40.0

0.1

0.2

0.3

0.4JFS

Perc

enta

ge o

f B

ugs

Percentage of Code

fileballoc

inodedir

superextent

transother

tree

Correlation

Page 120: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau
Page 121: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Metadata management has high bug density

Page 122: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Metadata management has high bug density

Tree related code is not particularly error-prone

Page 123: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Q6: Do bugs occur at normal paths or

failure paths ?

Page 124: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Failure Path

Page 125: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Failure Path

A wide range of failures➡ resource allocation failure➡ I/O operation failure➡ silent data corruption➡ incorrect system states

Page 126: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Failure Path

A wide range of failures➡ resource allocation failure➡ I/O operation failure➡ silent data corruption➡ incorrect system states

Unique code style➡ goto statement ➡ error code propagation

Page 127: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/resize.c, 2.6.25 ext4_group_extend( … ) { ... ...1 if (count != ext4_blocks_count(es)){2    ext4_warning("multiple resizers

run on filesystem !");

  3    err = -EBUSY;  4   goto exit_put; } }

A Semantic Bug on Failure Path

Page 128: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/resize.c, 2.6.25 ext4_group_extend( … ) { ... ...1 if (count != ext4_blocks_count(es)){2    ext4_warning("multiple resizers

run on filesystem !");

  3    err = -EBUSY;  4   goto exit_put; } }

A Semantic Bug on Failure Path

Page 129: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/resize.c, 2.6.25 ext4_group_extend( … ) { ... ...1 if (count != ext4_blocks_count(es)){2    ext4_warning("multiple resizers

run on filesystem !");

  3    err = -EBUSY;  4   goto exit_put; } }

A Semantic Bug on Failure Path

ext4_journal_stop(handle);

Page 130: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/inode.c, 2.6.22 ext4_read_inode(struct inode * inode) {

  ... ... 1 if (inode_is_bad) {

 2   goto bad_inode;     } }

A Memory Bug on Failure Path

Page 131: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/inode.c, 2.6.22 ext4_read_inode(struct inode * inode) {

  ... ... 1 if (inode_is_bad) {

 2   goto bad_inode;     } }

A Memory Bug on Failure Path

Page 132: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/inode.c, 2.6.22 ext4_read_inode(struct inode * inode) {

  ... ... 1 if (inode_is_bad) {

 2   goto bad_inode;     } }

A Memory Bug on Failure Path

brelse(bh);

Page 133: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bugs on Failure Paths

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

200 149 144 88 63 28 672

Perc

enta

ge o

f tot

al b

ugs

Page 134: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

38% of bugs are on failure paths

Page 135: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Q7: What performance techniques are used by file systems ?

Page 136: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Performance

Page 137: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Type Description

Synchronization Improve synchronization efficiency

AccessOptimization

Apply smarter access strategies

Scheduling Improve I/O operations scheduling

Scalability Scale on-disk and in-memory structures

Locality Overcome sub-optimal block allocation

Other Other performance improvement (e.g., reducing function stack usage)

Performance

Page 138: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/extents.c, 2.6.31 ext4_fiemap(...){

1  down_write(&EXT4_I(inode)->sem);

2    error = ext4_ext_walk_space(...);

3  up_write(&EXT4_I(inode)->sem); }

Synchronization Example

Page 139: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/extents.c, 2.6.31 ext4_fiemap(...){

1  down_write(&EXT4_I(inode)->sem);

2    error = ext4_ext_walk_space(...);

3  up_write(&EXT4_I(inode)->sem); }

Synchronization Example

Page 140: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

ext4/extents.c, 2.6.31 ext4_fiemap(...){

1  down_write(&EXT4_I(inode)->sem);

2    error = ext4_ext_walk_space(...);

3  up_write(&EXT4_I(inode)->sem); }

Synchronization Example

down_read(&EXT4_I(inode)->sem);

up_read(&EXT4_I(inode)->sem);

Page 141: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Performance

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

135 80 126 41 24 9 415

Sync

Page 142: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

btrfs/free-space-cache.c, 2.6.39 btrfs_find_space_cluster( … )

/* start to search for blocks */

Access Optimization Example

Page 143: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

btrfs/free-space-cache.c, 2.6.39 btrfs_find_space_cluster( … )

/* start to search for blocks */

Access Optimization Example

if (free_space < min_bytes) { spin_unlock(&tree_lock); return -ENOSPC;}

Page 144: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Performance

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

135 80 126 41 24 9 415

Sync

Access Opt

Page 145: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Performance

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

135 80 126 41 24 9 415

Sync

Access Opt

Scheduling

Page 146: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Performance

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

135 80 126 41 24 9 415

Sync

Access Opt

Scheduling

Scalability

Page 147: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Performance

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

135 80 126 41 24 9 415

Sync

Access Opt

Scheduling

Scalability

Locality

Page 148: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Performance

0%

20%

40%

60%

80%

100%

XFS Ext4 Btrfs Ext3 Reiser JFS All

135 80 126 41 24 9 415

Sync

Access Opt

Scheduling

Scalability

Locality

Other

Page 149: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

A wide variety of

same performance techniques exist in all file systems

Page 150: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Results Summary

Page 151: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Bugs are prevalent

Semantic bugs dominate

Bugs are constant

Corruption and crash are common

Metadata management is complex

Failure paths are error-prone

Diverse performance techniques

Results Summary

Page 152: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Lessons Learned

Page 153: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Lessons Learned

A large-scale study is feasible and valuable➡ time consuming, but still manageable ➡ similar study for other OS components ➡ new research opportunities

Page 154: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Lessons Learned

A large-scale study is feasible and valuable➡ time consuming, but still manageable ➡ similar study for other OS components ➡ new research opportunities

Research should match reality ➡ new tools for semantic bugs➡ more attention for failure paths

Page 155: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Lessons Learned

A large-scale study is feasible and valuable➡ time consuming, but still manageable ➡ similar study for other OS components ➡ new research opportunities

Research should match reality ➡ new tools for semantic bugs➡ more attention for failure paths

History repeats itself➡ similar mistakes➡ similar performance and reliability techniques➡ learn from history for a better future

Page 156: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Resources

Page 157: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Resources

More information in paper➡ detailed bug patterns ➡ reliability patches➡ common patches across file systems

Page 158: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Resources

More information in paper➡ detailed bug patterns ➡ reliability patches➡ common patches across file systems

Even more information in dataset➡ fix-on-fix➡ detailed bug consequences➡ tools used

Page 159: A Study of Linux File System Evolutionpages.cs.wisc.edu/~ll/papers/fsstudy-slides.pdfA Study of Linux File System Evolution Lanyue Lu Andrea C. Arpaci-Dusseau Remzi H. Arpaci-Dusseau

Resources

More information in paper➡ detailed bug patterns ➡ reliability patches➡ common patches across file systems

Even more information in dataset➡ fix-on-fix➡ detailed bug consequences➡ tools used

Our dataset is released➡ http://research.cs.wisc.edu/wind/Traces/fs-patch/