summaryrefslogtreecommitdiffstats
path: root/fs/ext4/ext4.h
diff options
context:
space:
mode:
authorjiayingz@google.com (Jiaying Zhang)2010-07-27 17:56:06 +0200
committerTheodore Ts'o2010-07-27 17:56:06 +0200
commit5b3ff237bef43b9e7fb7d1eb858e29b73fd664f9 (patch)
treee3810d974a0e51a8c4b9046abdd36a5a4022abb3 /fs/ext4/ext4.h
parentdirect-io: move aio_complete into ->end_io (diff)
downloadkernel-qcow2-linux-5b3ff237bef43b9e7fb7d1eb858e29b73fd664f9.tar.gz
kernel-qcow2-linux-5b3ff237bef43b9e7fb7d1eb858e29b73fd664f9.tar.xz
kernel-qcow2-linux-5b3ff237bef43b9e7fb7d1eb858e29b73fd664f9.zip
ext4: move aio completion after unwritten extent conversion
This patch is to be applied upon Christoph's "direct-io: move aio_complete into ->end_io" patch. It adds iocb and result fields to struct ext4_io_end_t, so that we can call aio_complete from ext4_end_io_nolock() after the extent conversion has finished. I have verified with Christoph's aio-dio test that used to fail after a few runs on an original kernel but now succeeds on the patched kernel. See http://thread.gmane.org/gmane.comp.file-systems.ext4/19659 for details. Signed-off-by: Jiaying Zhang <jiayingz@google.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ext4.h')
-rw-r--r--fs/ext4/ext4.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 4c7d4727d6ba..fbb39478df28 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -170,13 +170,15 @@ struct mpage_da_data {
};
#define EXT4_IO_UNWRITTEN 0x1
typedef struct ext4_io_end {
- struct list_head list; /* per-file finished AIO list */
+ struct list_head list; /* per-file finished IO list */
struct inode *inode; /* file being written to */
unsigned int flag; /* unwritten or not */
struct page *page; /* page struct for buffer write */
loff_t offset; /* offset in the file */
ssize_t size; /* size of the extent */
struct work_struct work; /* data work queue */
+ struct kiocb *iocb; /* iocb struct for AIO */
+ int result; /* error value for AIO */
} ext4_io_end_t;
/*