Ryusuke Konishi | 2 Jun 2012 18:51
Picon
Gravatar

[PATCH] nilfs2: ensure proper cache clearing for gc-inodes

This is a bug fix for meta-data corruption problem during garbage
collection.

I found stale block data on gc-inodes infrequently causes incorrect
relocation of on-disk block and leads to file system corruption.

The following patch will fix it.

I will send it to upstream and stable trees after some tests.

Ryusuke Konishi
--
From: Ryusuke Konishi <konishi.ryusuke@...>

nilfs2: ensure proper cache clearing for gc-inodes

A gc-inode is a pseudo inode used to buffer the blocks to be moved by
garbage collection.

Block caches of gc-inodes must be cleared every time a garbage
collection function (nilfs_clean_segments) completes.  Otherwise,
stale blocks buffered in the caches may be wrongly reused in
successive calls of the GC function.

For user files, this is not a problem because their gc-inodes are
distinguished by a checkpoint number as well as an inode number.  They
never buffer different blocks if either an inode number, a checkpoint
number, or a block offset differs.

However, gc-inodes of sufile, cpfile and DAT file can store different
(Continue reading)


Gmane