diff options
author | Jan Kara <jack@suse.cz> | 2017-04-05 14:09:48 +0200 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2017-04-05 14:24:16 +0200 |
commit | 71b0576bdb862e964a82c73327cdd1a249c53e67 (patch) | |
tree | 172df641c17c0d88efb755bbc7e8ff35d619ec40 /fs/reiserfs/reiserfs.h | |
parent | ext2: Call dquot_writeback_dquots() with s_umount held (diff) | |
download | linux-71b0576bdb862e964a82c73327cdd1a249c53e67.tar.xz linux-71b0576bdb862e964a82c73327cdd1a249c53e67.zip |
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>
Diffstat (limited to 'fs/reiserfs/reiserfs.h')
-rw-r--r-- | fs/reiserfs/reiserfs.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h index 5dcf3ab83886..6ca00471afbf 100644 --- a/fs/reiserfs/reiserfs.h +++ b/fs/reiserfs/reiserfs.h @@ -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); |