tmp_suning_uos_patched/fs/jbd
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 ext3: Fix set but unused variables 2010-07-21 16:01:47 +02:00
revoke.c remove SWRITE* I/O types 2010-08-18 01:09:01 -04:00
transaction.c Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00