From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from cantor2.suse.de ([195.135.220.15]:41222 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751102AbbERGlv (ORCPT ); Mon, 18 May 2015 02:41:51 -0400 Date: Mon, 18 May 2015 08:41:46 +0200 From: Jan Kara To: Alex Shi Cc: Dmitry Monakhov , Theodore Ts'o , Jan Kara , Linaro Kernel , stable@vger.kernel.org Subject: Re: a old issue of ext4 on lts 3.10 Message-ID: <20150518064146.GC26351@quack.suse.cz> References: <5554B3E3.6090407@linaro.org> <87bnhmrj5c.fsf@openvz.org> <5558B198.4040609@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5558B198.4040609@linaro.org> Sender: stable-owner@vger.kernel.org List-ID: On Sun 17-05-15 23:19:52, Alex Shi wrote: > > On 05/15/2015 04:36 AM, Dmitry Monakhov wrote: > > Alex Shi writes: > > > >> > Hi Dmitry&Theodore, > >> > > >> > Someone said without the following patch on lts 3.10 kernel (which used > >> > as android base kernel). the write maybe very very slow, needs 1 or 2 > >> > seconds to finish. > > In fact this was an optimization. > > wait_for_stable_page() is actually and optimized wait_on_page_writeback() > > Hi, Dimtry, it *is* a optimization, the fault is just happened *without* > this patch, not with this. :) > The curious for me is why this patch has this effect. It looks like the > new func just wait page wb when the device support data integrity. But > Why the data integrity device need to wait wb, while other device don't > need? Because the disk driver may be computing checksum of the data before submitting it to the disk and if you change the data after the checksum is computed but before the DMA transfer is done, the checksum will not match. > BTW, > how to know if my disk support data integrity. My harddisk spec said it > has this feature, but my linux kernel with integrity supported don't > have /sys/block/sdx/integrity. The feature you are looking for is called DIF/DIX IIRC and not many disks support it. Honza > > see: > > void wait_for_stable_page(struct page *page) > > { > > struct address_space *mapping = page_mapping(page); > > struct backing_dev_info *bdi = > > mapping->backing_dev_info; > > > > if (!bdi_cap_stable_pages_required(bdi)) > > return; > > > > wait_on_page_writeback(page); > > } > > It is very unlikely the patch provokes such huge slowdown. > > Can you please repeat your measurements and double check your evidence. > -- Jan Kara SUSE Labs, CR