reiserfs: Make cancel_old_flush() reliable
Currently canceling of delayed work that flushes old data using cancel_old_flush() does not prevent work from being requeued. Thus in theory new work can be queued after cancel_old_flush() from reiserfs_freeze() has run. This will become larger problem once flush_old_commits() can requeue the work itself. Fix the problem by recording in sbi->work_queue that flushing work is canceled and should not be requeued. Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
@@ -2948,6 +2948,7 @@ int reiserfs_allocate_list_bitmaps(struct super_block *s,
|
||||
struct reiserfs_list_bitmap *, unsigned int);
|
||||
|
||||
void reiserfs_schedule_old_flush(struct super_block *s);
|
||||
void reiserfs_cancel_old_flush(struct super_block *s);
|
||||
void add_save_link(struct reiserfs_transaction_handle *th,
|
||||
struct inode *inode, int truncate);
|
||||
int remove_save_link(struct inode *inode, int truncate);
|
||||
|
Reference in New Issue
Block a user