alistair23-linux/fs/jbd2
Corrado Zoccolo 749ef9f842 cfq: improve fsync performance for small files
Fsync performance for small files achieved by cfq on high-end disks is
lower than what deadline can achieve, due to idling introduced between
the sync write happening in process context and the journal commit.

Moreover, when competing with a sequential reader, a process writing
small files and fsync-ing them is starved.

This patch fixes the two problems by:
- marking journal commits as WRITE_SYNC, so that they get the REQ_NOIDLE
  flag set,
- force all queues that have REQ_NOIDLE requests to be put in the noidle
  tree.

Having the queue associated to the fsync-ing process and the one associated
 to journal commits in the noidle tree allows:
- switching between them without idling,
- fairness vs. competing idling queues, since they will be serviced only
  after the noidle tree expires its slice.

Acked-by: Vivek Goyal <vgoyal@redhat.com>
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Tested-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Corrado Zoccolo <czoccolo@gmail.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
2010-09-20 15:24:50 +02:00
..
checkpoint.c remove SWRITE* I/O types 2010-08-18 01:09:01 -04:00
commit.c cfq: improve fsync performance for small files 2010-09-20 15:24:50 +02:00
journal.c remove SWRITE* I/O types 2010-08-18 01:09:01 -04:00
Kconfig Revert "task_struct: make journal_info conditional" 2009-12-17 13:23:24 -08:00
Makefile
recovery.c ext4: remove initialized but not read variables 2010-06-14 13:28:03 -04:00
revoke.c remove SWRITE* I/O types 2010-08-18 01:09:01 -04:00
transaction.c ext4: clean up compiler warning in start_this_handle() 2010-08-09 17:28:38 -04:00