Files
linux/fs
Yongqiang Yang be4f27d324 ext4: allow an active handle to be started when freezing
ext4_journal_start_sb() should not prevent an active handle from being
started due to s_frozen.  Otherwise, deadlock is easy to happen, below
is a situation.

================================================
     freeze         |       truncate
================================================
                    |  ext4_ext_truncate()
    freeze_super()  |   starts a handle
    sets s_frozen   |
                    |  ext4_ext_truncate()
                    |  holds i_data_sem
  ext4_freeze()     |
  waits for updates |
                    |  ext4_free_blocks()
                    |  calls dquot_free_block()
                    |
                    |  dquot_free_blocks()
                    |  calls ext4_dirty_inode()
                    |
                    |  ext4_dirty_inode()
                    |  trys to start an active
                    |  handle
                    |
                    |  block due to s_frozen
================================================

Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reported-by: Amir Goldstein <amir73il@users.sf.net>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
2011-04-10 22:06:07 -04:00
..
2011-02-25 11:12:37 -08:00
2011-03-10 08:52:07 +01:00
2011-03-10 08:52:07 +01:00
2011-03-10 13:22:34 -06:00
2011-03-10 08:52:07 +01:00
2011-03-10 08:52:07 +01:00
2011-01-14 09:23:36 -08:00
2011-01-12 20:03:42 -05:00
2011-01-07 17:50:26 +11:00
2011-03-17 14:02:57 +01:00
2011-01-07 17:50:26 +11:00
2011-03-22 16:01:49 -07:00
2011-03-10 08:52:07 +01:00
2011-01-07 17:50:26 +11:00
2011-03-21 00:16:09 -04:00
2011-03-15 02:21:44 -04:00
2011-01-07 17:50:27 +11:00
2011-03-27 19:30:19 -07:00
2011-03-21 00:16:08 -04:00
2011-03-10 08:52:26 +01:00
2011-03-21 01:10:41 -04:00
2011-01-07 17:50:33 +11:00
2011-03-14 09:15:28 -04:00