diff options
| author | Jeff Moyer <jmoyer@redhat.com> | 2009-10-02 18:56:53 -0400 |
|---|---|---|
| committer | Jens Axboe <jens.axboe@oracle.com> | 2009-10-28 04:29:25 -0400 |
| commit | 1af60fbd759d31f565552fea315c2033947cfbe6 (patch) | |
| tree | e973002ee2496a9537526c8aef111f380071a1a0 | |
| parent | 1a1238a7dd48e48b3bba8f426a1d61c22c80d6d1 (diff) | |
block: get rid of the WRITE_ODIRECT flag
Hi,
The WRITE_ODIRECT flag is only used in one place, and that code path
happens to also call blk_run_address_space. The introduction of this
flag, then, could result in the device being unplugged twice for every
I/O.
Further, with the batching changes in the next patch, we don't want an
O_DIRECT write to imply a queue unplug.
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
| -rw-r--r-- | fs/direct-io.c | 2 | ||||
| -rw-r--r-- | include/linux/fs.h | 2 |
2 files changed, 1 insertions, 3 deletions
diff --git a/fs/direct-io.c b/fs/direct-io.c index 8b10b87dc01a..c86d35f142de 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c | |||
| @@ -1124,7 +1124,7 @@ __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, | |||
| 1124 | int acquire_i_mutex = 0; | 1124 | int acquire_i_mutex = 0; |
| 1125 | 1125 | ||
| 1126 | if (rw & WRITE) | 1126 | if (rw & WRITE) |
| 1127 | rw = WRITE_ODIRECT; | 1127 | rw = WRITE_SYNC_PLUG; |
| 1128 | 1128 | ||
| 1129 | if (bdev) | 1129 | if (bdev) |
| 1130 | bdev_blkbits = blksize_bits(bdev_logical_block_size(bdev)); | 1130 | bdev_blkbits = blksize_bits(bdev_logical_block_size(bdev)); |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 2620a8c63571..2f5fca4147c2 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -129,7 +129,6 @@ struct inodes_stat_t { | |||
| 129 | * WRITE_SYNC Like WRITE_SYNC_PLUG, but also unplugs the device | 129 | * WRITE_SYNC Like WRITE_SYNC_PLUG, but also unplugs the device |
| 130 | * immediately after submission. The write equivalent | 130 | * immediately after submission. The write equivalent |
| 131 | * of READ_SYNC. | 131 | * of READ_SYNC. |
| 132 | * WRITE_ODIRECT Special case write for O_DIRECT only. | ||
| 133 | * SWRITE_SYNC | 132 | * SWRITE_SYNC |
| 134 | * SWRITE_SYNC_PLUG Like WRITE_SYNC/WRITE_SYNC_PLUG, but locks the buffer. | 133 | * SWRITE_SYNC_PLUG Like WRITE_SYNC/WRITE_SYNC_PLUG, but locks the buffer. |
| 135 | * See SWRITE. | 134 | * See SWRITE. |
| @@ -151,7 +150,6 @@ struct inodes_stat_t { | |||
| 151 | #define READ_META (READ | (1 << BIO_RW_META)) | 150 | #define READ_META (READ | (1 << BIO_RW_META)) |
| 152 | #define WRITE_SYNC_PLUG (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE)) | 151 | #define WRITE_SYNC_PLUG (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE)) |
| 153 | #define WRITE_SYNC (WRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG)) | 152 | #define WRITE_SYNC (WRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG)) |
| 154 | #define WRITE_ODIRECT (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG)) | ||
| 155 | #define SWRITE_SYNC_PLUG \ | 153 | #define SWRITE_SYNC_PLUG \ |
| 156 | (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE)) | 154 | (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE)) |
| 157 | #define SWRITE_SYNC (SWRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG)) | 155 | #define SWRITE_SYNC (SWRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG)) |
