Hello

On Mon, 2006-05-08 at 17:03 +0530, Suzuki wrote:
> Resending, since there were no responses to the earlier post.
> 
> Hi,
> 
> 
> I was working on a reiserfs panic with 2.6.17-rc3, while running fs
> stress tests.
> 
> The panic message looked like :
> 
> " REISERFS: panic (device Null superblock): reiserfs[4248]: assertion
> !(truncate && (REISERFS_I(inode)->i_flags & i_link_saved_truncate_mask)
> ) failed at fs/reiserfs/super.c:328:add_save_link: saved link already re
> exists for truncated inode 13b5a "
> 
> ------ Summary of the problem -----------
> 
> Reiserfs uses "safe links" ( directory entries with some special key
> value) to keep track of "truncated" or "unlinked" files to ensure
> integrity across crashes.
> 
> Whenever there is a truncate/unlink on a file, Reiserfs creates a safe
> link for the same and deletes the same once the operation is complete.
> If the machine crashes before committing the operation, whenever the fs
> is mounted next time, the fs will look for the saved links ( easy to
> find out, since they have special key) and commit the operation that was
> unfinished.
> 
> 
> The problem here occurs as follows:
> 
>   Whenever there is an extending DIO write operation, the fs would
> create a safe link so as to ensure the file size consistent, if there is
> crash in between the DIO. This will be deleted once the write operation
> finishes.
> 
>   If the DIO write happens to go through a "HOLE" region in the file, it
> will fall into normal "buffered write", which is done  through the
> address space operations prepare_write() & commit_write(). Now, the
> prepare_write() might allocate blocks for the file (if needed). So if
> there is some error at a later point (say ENOSPC) in prepare_write(), we
> need to discard the allocated blocks. This is done by calling
> "vmtruncate()" on the file. This call leads to reiserfs specific
> truncate, which would try to add a save link for the file.
> 
> This addition causes a reiserfs_panic, since there is already a "save
> link" stored for the file.
> 
> 
> I have a simple testcase to reproduce the problem, which does the same 
> as described above. I will attach it if required.
> 
> Any thoughts on how to fix this ?
> 

Thanks for the report. We will discuss how that should be fixed when may
holidays are over here.

> thanks,
> 
> Suzuki K P
> Linux Technology Centre,
> IBM Software Labs.
> 
> 
> 
> 

Reply via email to