lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Wed, 04 May 2011 14:42:05 +0400
From:	Sergei Shtylyov <sshtylyov@...sta.com>
To:	shaohua.li@...el.com
CC:	linux-kernel@...r.kernel.org, linux-ide@...r.kernel.org,
	jaxboe@...ionio.com, htejun@...il.com, jgarzik@...ox.com,
	hch@...radead.org, djwong@...ibm.com
Subject: Re: [patch v2 2/3] block: hold queue if flush is running for non-queueable
 flush drive

Hello.

On 04-05-2011 12:17, shaohua.li@...el.com wrote:

> In some drives, flush requests are non-queueable. When flush request is running,
> normal read/write requests can't run. If block layer dispatches such request,
> driver can't handle it and requeue it.
> Tejun suggested we can hold the queue when flush is running. This can avoid
> unnecessary requeue.
> Also this can improve performance. Say we have requests f1, w1, f2 (f is flush
> request, and w is write request). When f1 is running, queue will be hold, so w1
> will not be added to queue list. Just after f1 is finished, f2 will be
> dispatched. Since f1 already flushs cache out, f2 can be finished very quickly.
> In my test, the queue holding completely solves a regression introduced by
> commit 53d63e6b0dfb9588, which is about 20% regression running a sysbench fileio

    Please specify that commit's summary -- for human readers. The ID is only 
immediately usable to gitweb.

> workload.

> Signed-off-by: Shaohua Li <shaohua.li@...el.com>

[...]

> Index: linux/block/blk.h
> ===================================================================
> --- linux.orig/block/blk.h	2011-05-04 14:20:33.000000000 +0800
> +++ linux/block/blk.h	2011-05-04 16:09:42.000000000 +0800
> @@ -61,7 +61,17 @@ static inline struct request *__elv_next
>   			rq = list_entry_rq(q->queue_head.next);
>   			return rq;
>   		}
> -
> +		/*
> +		 *  Flush request is running and flush request isn't queeueable

    Queueable.

WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ