diff options
author | Jan Kara <jack@suse.cz> | 2016-03-08 22:44:50 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2016-03-08 22:44:50 -0500 |
commit | e142d05263a4beedefd331d445c394f4397e9f03 (patch) | |
tree | c86f41730d37a0f1424ee5c0cdb9c9017121d6d0 /fs/ext4/ext4.h | |
parent | 3bd6ad7b688e200ac7633b16affa164d7cd5ef07 (diff) | |
download | linux-rpi-e142d05263a4beedefd331d445c394f4397e9f03.tar.gz linux-rpi-e142d05263a4beedefd331d445c394f4397e9f03.tar.bz2 linux-rpi-e142d05263a4beedefd331d445c394f4397e9f03.zip |
ext4: use i_mutex to serialize unaligned AIO DIO
Currently we've used hashed aio_mutex to serialize unaligned AIO DIO.
However the code cleanups that happened after 2011 when the lock was
introduced made aio_mutex acquired at almost the same places where we
already have exclusion using i_mutex. So just use i_mutex for the
exclusion of unaligned AIO DIO.
The change moves waiting for pending unwritten extent conversion under
i_mutex. That makes special handling of O_APPEND writes unnecessary and
also avoids possible livelocking of unaligned AIO DIO with aligned one
(nothing was preventing contiguous stream of aligned AIO DIOs to let
unaligned AIO DIO wait forever).
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ext4.h')
-rw-r--r-- | fs/ext4/ext4.h | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 5035dfebdbaf..f4e9521cb8e7 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -3285,10 +3285,7 @@ static inline void ext4_inode_resume_unlocked_dio(struct inode *inode) #define EXT4_WQ_HASH_SZ 37 #define ext4_ioend_wq(v) (&ext4__ioend_wq[((unsigned long)(v)) %\ EXT4_WQ_HASH_SZ]) -#define ext4_aio_mutex(v) (&ext4__aio_mutex[((unsigned long)(v)) %\ - EXT4_WQ_HASH_SZ]) extern wait_queue_head_t ext4__ioend_wq[EXT4_WQ_HASH_SZ]; -extern struct mutex ext4__aio_mutex[EXT4_WQ_HASH_SZ]; #define EXT4_RESIZING 0 extern int ext4_resize_begin(struct super_block *sb); |