nilfs2: mark buffer heads as delayed until the data is written to disk
Nilfs does not allocate new blocks on disk until they are actually written to. To implement fiemap, we need to deal with such blocks. To allow successive fiemap patch to distinguish mapped but unallocated regions, this marks buffer heads of those new blocks as delayed and clears the flag after the blocks are written to disk. Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
This commit is contained in:
parent
e828949e5b
commit
27e6c7a3ce
@ -104,6 +104,7 @@ int nilfs_get_block(struct inode *inode, sector_t blkoff,
|
||||
nilfs_transaction_commit(inode->i_sb); /* never fails */
|
||||
/* Error handling should be detailed */
|
||||
set_buffer_new(bh_result);
|
||||
set_buffer_delay(bh_result);
|
||||
map_bh(bh_result, inode->i_sb, 0); /* dbn must be changed
|
||||
to proper value */
|
||||
} else if (ret == -ENOENT) {
|
||||
|
@ -1763,6 +1763,7 @@ static void nilfs_clear_copied_buffers(struct list_head *list, int err)
|
||||
if (!err) {
|
||||
set_buffer_uptodate(bh);
|
||||
clear_buffer_dirty(bh);
|
||||
clear_buffer_delay(bh);
|
||||
clear_buffer_nilfs_volatile(bh);
|
||||
}
|
||||
brelse(bh); /* for b_assoc_buffers */
|
||||
@ -1889,6 +1890,7 @@ static void nilfs_segctor_complete_write(struct nilfs_sc_info *sci)
|
||||
b_assoc_buffers) {
|
||||
set_buffer_uptodate(bh);
|
||||
clear_buffer_dirty(bh);
|
||||
clear_buffer_delay(bh);
|
||||
clear_buffer_nilfs_volatile(bh);
|
||||
clear_buffer_nilfs_redirected(bh);
|
||||
if (bh == segbuf->sb_super_root) {
|
||||
|
Loading…
Reference in New Issue
Block a user