Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756117AbZIPGgW (ORCPT ); Wed, 16 Sep 2009 02:36:22 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752136AbZIPGgV (ORCPT ); Wed, 16 Sep 2009 02:36:21 -0400 Received: from ns1.primeinteractive.net ([195.95.205.253]:56229 "EHLO mail.primeinteractive.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751113AbZIPGgU (ORCPT ); Wed, 16 Sep 2009 02:36:20 -0400 Message-ID: <4AB08744.1020102@primeinteractive.net> Date: Wed, 16 Sep 2009 08:35:48 +0200 From: Pavol Cvengros User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090715 Thunderbird/3.0b3 MIME-Version: 1.0 To: "Aneesh Kumar K.V" CC: Jan Kara , Justin Maggard , Eric Sandeen , Jiri Kosina , linux-kernel@vger.kernel.org, linux-ext4@vger.kernel.org Subject: Re: ext4+quota+nfs issue References: <4AA5E5F3.30309@primeinteractive.net> <4AA72C14.1020005@primeinteractive.net> <4AA7C38E.8020306@redhat.com> <150c16850909091045h1962fd67n77c265c9b99c5f44@mail.gmail.com> <4AA7FBD7.9080406@primeinteractive.net> <4AAA5FCC.2010707@primeinteractive.net> <20090914175056.GE25549@duck.suse.cz> <20090914185228.GA5984@skywalker.linux.vnet.ibm.com> In-Reply-To: <20090914185228.GA5984@skywalker.linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2106 Lines: 49 On 9/14/2009 8:52 PM, Aneesh Kumar K.V wrote: > On Mon, Sep 14, 2009 at 07:50:56PM +0200, Jan Kara wrote: > >> I've found some time to look into this and I can see a few problems in >> the code. Firstly, what may cause your problems: >> vfs_dq_claim_blocks() is called in ext4_mb_mark_diskspace_used(). But >> as far as I can understand the code, ext4_mb_normalize_request() can >> increase the amount of space we really allocate and thus we try to >> allocate more blocks than we have actually reserved in quota. Aneesh, is >> that right? >> > ext4_mb_mark_diskspace_used use ac->ac_b_ex.fe_len which is NOT the normalized > request len. it is min(allocated_len, original_len). So i guess that code > should be safe > > > >> Secondly, ext4_da_reserve_space() seems to have a bug that it can reserve >> quota blocks multiple times if ext4_claim_free_blocks() fail and we retry >> the allocation. We should release the quota reservation before restarting. >> Actually, when we find out we cannot reserve quota space, we could force >> some delayed allocated writes to disk (thus possibly release some quota >> in case we have overestimated the amount of blocks needed). But that's >> a different issue. >> > That would imply the file system was full. But the dumpe2fs ouput list > large number of free blocks. But yes the code should have released the > quota reservation before trying block reservation again. > > > file system is fresh but unfortunately already used and I can't "re-format" it. Is there a way around this? I think that FS was created by "mkfs.ext4 -j /dev....." >> Thirdly, ext4_indirect_calc_metadata_amount() is wrong for sparse files. >> The worst case is 3 metadata blocks per data block if we make the file >> sufficiently sparse and there's no easy way around that... >> >> > -aneesh > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/