diff options
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 7 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.h | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index 8abbf0532ea1..95d1e2695c3a 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
@@ -1406,7 +1406,9 @@ xfs_end_io_direct( | |||
1406 | struct kiocb *iocb, | 1406 | struct kiocb *iocb, |
1407 | loff_t offset, | 1407 | loff_t offset, |
1408 | ssize_t size, | 1408 | ssize_t size, |
1409 | void *private) | 1409 | void *private, |
1410 | int ret, | ||
1411 | bool is_async) | ||
1410 | { | 1412 | { |
1411 | xfs_ioend_t *ioend = iocb->private; | 1413 | xfs_ioend_t *ioend = iocb->private; |
1412 | 1414 | ||
@@ -1452,6 +1454,9 @@ xfs_end_io_direct( | |||
1452 | * against double-freeing. | 1454 | * against double-freeing. |
1453 | */ | 1455 | */ |
1454 | iocb->private = NULL; | 1456 | iocb->private = NULL; |
1457 | |||
1458 | if (is_async) | ||
1459 | aio_complete(iocb, ret, 0); | ||
1455 | } | 1460 | } |
1456 | 1461 | ||
1457 | STATIC ssize_t | 1462 | STATIC ssize_t |
diff --git a/fs/xfs/linux-2.6/xfs_aops.h b/fs/xfs/linux-2.6/xfs_aops.h index 319da173cc1a..c5057fb6237a 100644 --- a/fs/xfs/linux-2.6/xfs_aops.h +++ b/fs/xfs/linux-2.6/xfs_aops.h | |||
@@ -37,6 +37,8 @@ typedef struct xfs_ioend { | |||
37 | size_t io_size; /* size of the extent */ | 37 | size_t io_size; /* size of the extent */ |
38 | xfs_off_t io_offset; /* offset in the file */ | 38 | xfs_off_t io_offset; /* offset in the file */ |
39 | struct work_struct io_work; /* xfsdatad work queue */ | 39 | struct work_struct io_work; /* xfsdatad work queue */ |
40 | struct kiocb *io_iocb; | ||
41 | int io_result; | ||
40 | } xfs_ioend_t; | 42 | } xfs_ioend_t; |
41 | 43 | ||
42 | extern const struct address_space_operations xfs_address_space_operations; | 44 | extern const struct address_space_operations xfs_address_space_operations; |