From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Subject: Re: [PATCH 04/10] AXFS: axfs_inode.c Date: Thu, 21 Aug 2008 14:17:13 +0200 Message-ID: <200808211417.14425.arnd@arndb.de> References: <48AD00F0.5030403@gmail.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <48AD00F0.5030403@gmail.com> Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="iso-8859-1" To: jaredeh@gmail.com Cc: Linux-kernel@vger.kernel.org, linux-embedded@vger.kernel.org, linux-mtd , =?iso-8859-1?q?J=F6rn_Engel?= , tim.bird@am.sony.com, cotte@de.ibm.com, nickpiggin@yahoo.com.au T24gVGh1cnNkYXkgMjEgQXVndXN0IDIwMDgsIEphcmVkIEh1bGJlcnQgd3JvdGU6Cj4gKyAgICAg ICBhcnJheV9pbmRleCA9IEFYRlNfR0VUX0lOT0RFX0FSUkFZX0lOREVYKHNiaSwgaW5vX251bWJl cik7Cj4gKyAgICAgICBhcnJheV9pbmRleCArPSBwYWdlLT5pbmRleDsKPiArCj4gKyAgICAgICBu b2RlX2luZGV4ID0gQVhGU19HRVRfTk9ERV9JTkRFWChzYmksIGFycmF5X2luZGV4KTsKPiArICAg ICAgIG5vZGVfdHlwZSA9IEFYRlNfR0VUX05PREVfVFlQRShzYmksIGFycmF5X2luZGV4KTsKPiAr Cj4gK6CgoKCgoKBpZiAobm9kZV90eXBlID09IENvbXByZXNzZWQpIHsKPiAroKCgoKCgoKCgoKCg oKCgLyogbm9kZSBpcyBpbiBjb21wZXNzZWQgcmVnaW9uICovCj4gK6CgoKCgoKCgoKCgoKCgoGNu b2RlX29mZnNldCA9IEFYRlNfR0VUX0NOT0RFX09GRlNFVChzYmksIG5vZGVfaW5kZXgpOwo+ICug oKCgoKCgoKCgoKCgoKBjbm9kZV9pbmRleCA9IEFYRlNfR0VUX0NOT0RFX0lOREVYKHNiaSwgbm9k ZV9pbmRleCk7Cj4gK6CgoKCgoKCgoKCgoKCgoGRvd25fd3JpdGUoJnNiaS0+bG9jayk7Cj4gK6Cg oKCgoKCgoKCgoKCgoGlmIChjbm9kZV9pbmRleCAhPSBzYmktPmN1cnJlbnRfY25vZGVfaW5kZXgp IHsKPiAroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAvKiB1bmNvbXByZXNzIG9ubHkgbmVjZXNzYXJ5 IGlmIGRpZmZlcmVudCBjYmxvY2sgKi8KPiAroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBvZnMgPSBB WEZTX0dFVF9DQkxPQ0tfT0ZGU0VUKHNiaSwgY25vZGVfaW5kZXgpOwo+ICugoKCgoKCgoKCgoKCg oKCgoKCgoKCgoGxlbiA9IEFYRlNfR0VUX0NCTE9DS19PRkZTRVQoc2JpLCBjbm9kZV9pbmRleCAr IDEpOwo+ICugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoGxlbiAtPSBvZnM7Cj4gK6CgoKCgoKCgoKCg oKCgoKCgoKCgoKCgYXhmc19jb3B5X2RhdGEoc2IsIGNibGsxLCAmKHNiaS0+Y29tcHJlc3NlZCks IG9mcywgbGVuKTsKPiAroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBheGZzX3VuY29tcHJlc3NfYmxv Y2soY2JsazAsIGNibGtfc2l6ZSwgY2JsazEsIGxlbik7Cj4gK6CgoKCgoKCgoKCgoKCgoKCgoKCg oKCgc2JpLT5jdXJyZW50X2Nub2RlX2luZGV4ID0gY25vZGVfaW5kZXg7Cj4gK6CgoKCgoKCgoKCg oKCgoH0KPiAroKCgoKCgoKCgoKCgoKCgZG93bmdyYWRlX3dyaXRlKCZzYmktPmxvY2spOwo+ICug oKCgoKCgoKCgoKCgoKBtYXhfbGVuID0gY2Jsa19zaXplIC0gY25vZGVfb2Zmc2V0Owo+ICugoKCg oKCgoKCgoKCgoKBsZW4gPSBtYXhfbGVuID4gUEFHRV9DQUNIRV9TSVpFID8gUEFHRV9DQUNIRV9T SVpFIDogbWF4X2xlbjsKPiAroKCgoKCgoKCgoKCgoKCgc3JjID0gKHZvaWQgKikoKHVuc2lnbmVk IGxvbmcpY2JsazAgKyBjbm9kZV9vZmZzZXQpOwo+ICugoKCgoKCgoKCgoKCgoKBtZW1jcHkocGdk YXRhLCBzcmMsIGxlbik7Cj4gK6CgoKCgoKCgoKCgoKCgoHVwX3JlYWQoJnNiaS0+bG9jayk7CgpU aGlzIGxvb2tzIHZlcnkgbmljZSwgYnV0IGNvdWxkIHVzZSBzb21lIGNvbW1lbnRzIGFib3V0IGhv dyB0aGUgZGF0YSBpcwphY3R1YWxseSBzdG9yZWQgb24gZGlzay4gSXQgdG9vayBtZSBzb21lIHRp bWUgdG8gZmlndXJlIG91dCB0aGF0IGl0IGFjdHVhbGx5CmFsbG93cyB0byBkbyB0YWlsIG1lcmdp bmcgaW50byBjb21wcmVzc2VkIGJsb2Nrcywgd2hpY2ggSSB3YXMgYWJvdXQgdG8gc3VnZ2VzdAp5 b3UgaW1wbGVtZW50IDstKS4gQ3JhbWZzIGRvZXNuJ3QgaGF2ZSB0aGVtLCBhbmQgSSBmb3VuZCB0 aGF0IHRoZXkgYXJlIHRoZQptYWluIHJlYXNvbiB3aHkgc3F1YXNoZnMgY29tcHJlc3NlcyBiZXR0 ZXIgdGhhbiBjcmFtZnMsIGJlc2lkZXMgdGhlIGRlZmF1bHQKYmxvY2sgc2l6ZSwgd2hpY2ggeW91 IGNhbiBjaGFuZ2Ugb24gZWl0aGVyIG9uZS4KCkhhdmUgeW91IHNlZW4gYW55IGJlbmVmaXQgb2Yg dGhlIHJ3c2VtIG92ZXIgYSBzaW1wbGUgbXV0ZXg/IEkgd291bGQgZ3Vlc3MKdGhhdCB5b3UgY2Fu IG5ldmVyIGV2ZW4gZ2V0IGludG8gdGhlIHNpdHVhdGlvbiB3aGVyZSB5b3UgZ2V0IGNvbmN1cnJl bnQKcmVhZGVycyBzaW5jZSBJIGhhdmVuJ3QgZm91bmQgYSBzaW5nbGUgZG93bl9yZWFkKCkgaW4g eW91ciBjb2RlLCBvbmx5CmRvd25ncmFkZV93cml0ZSgpLgoKCUFybmQgPD48Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from moutng.kundenserver.de ([212.227.126.171]) by bombadil.infradead.org with esmtp (Exim 4.68 #1 (Red Hat Linux)) id 1KW97H-0006bk-5c for linux-mtd@lists.infradead.org; Thu, 21 Aug 2008 12:18:15 +0000 From: Arnd Bergmann To: jaredeh@gmail.com Subject: Re: [PATCH 04/10] AXFS: axfs_inode.c Date: Thu, 21 Aug 2008 14:17:13 +0200 References: <48AD00F0.5030403@gmail.com> In-Reply-To: <48AD00F0.5030403@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: base64 Content-Disposition: inline Message-Id: <200808211417.14425.arnd@arndb.de> Cc: cotte@de.ibm.com, linux-embedded@vger.kernel.org, nickpiggin@yahoo.com.au, =?iso-8859-1?q?J=F6rn_Engel?= , Linux-kernel@vger.kernel.org, linux-mtd , tim.bird@am.sony.com List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , T24gVGh1cnNkYXkgMjEgQXVndXN0IDIwMDgsIEphcmVkIEh1bGJlcnQgd3JvdGU6Cj4gKyAgICAg ICBhcnJheV9pbmRleCA9IEFYRlNfR0VUX0lOT0RFX0FSUkFZX0lOREVYKHNiaSwgaW5vX251bWJl cik7Cj4gKyAgICAgICBhcnJheV9pbmRleCArPSBwYWdlLT5pbmRleDsKPiArCj4gKyAgICAgICBu b2RlX2luZGV4ID0gQVhGU19HRVRfTk9ERV9JTkRFWChzYmksIGFycmF5X2luZGV4KTsKPiArICAg ICAgIG5vZGVfdHlwZSA9IEFYRlNfR0VUX05PREVfVFlQRShzYmksIGFycmF5X2luZGV4KTsKPiAr Cj4gK6CgoKCgoKBpZiAobm9kZV90eXBlID09IENvbXByZXNzZWQpIHsKPiAroKCgoKCgoKCgoKCg oKCgLyogbm9kZSBpcyBpbiBjb21wZXNzZWQgcmVnaW9uICovCj4gK6CgoKCgoKCgoKCgoKCgoGNu b2RlX29mZnNldCA9IEFYRlNfR0VUX0NOT0RFX09GRlNFVChzYmksIG5vZGVfaW5kZXgpOwo+ICug oKCgoKCgoKCgoKCgoKBjbm9kZV9pbmRleCA9IEFYRlNfR0VUX0NOT0RFX0lOREVYKHNiaSwgbm9k ZV9pbmRleCk7Cj4gK6CgoKCgoKCgoKCgoKCgoGRvd25fd3JpdGUoJnNiaS0+bG9jayk7Cj4gK6Cg oKCgoKCgoKCgoKCgoGlmIChjbm9kZV9pbmRleCAhPSBzYmktPmN1cnJlbnRfY25vZGVfaW5kZXgp IHsKPiAroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAvKiB1bmNvbXByZXNzIG9ubHkgbmVjZXNzYXJ5 IGlmIGRpZmZlcmVudCBjYmxvY2sgKi8KPiAroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBvZnMgPSBB WEZTX0dFVF9DQkxPQ0tfT0ZGU0VUKHNiaSwgY25vZGVfaW5kZXgpOwo+ICugoKCgoKCgoKCgoKCg oKCgoKCgoKCgoGxlbiA9IEFYRlNfR0VUX0NCTE9DS19PRkZTRVQoc2JpLCBjbm9kZV9pbmRleCAr IDEpOwo+ICugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoGxlbiAtPSBvZnM7Cj4gK6CgoKCgoKCgoKCg oKCgoKCgoKCgoKCgYXhmc19jb3B5X2RhdGEoc2IsIGNibGsxLCAmKHNiaS0+Y29tcHJlc3NlZCks IG9mcywgbGVuKTsKPiAroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKBheGZzX3VuY29tcHJlc3NfYmxv Y2soY2JsazAsIGNibGtfc2l6ZSwgY2JsazEsIGxlbik7Cj4gK6CgoKCgoKCgoKCgoKCgoKCgoKCg oKCgc2JpLT5jdXJyZW50X2Nub2RlX2luZGV4ID0gY25vZGVfaW5kZXg7Cj4gK6CgoKCgoKCgoKCg oKCgoH0KPiAroKCgoKCgoKCgoKCgoKCgZG93bmdyYWRlX3dyaXRlKCZzYmktPmxvY2spOwo+ICug oKCgoKCgoKCgoKCgoKBtYXhfbGVuID0gY2Jsa19zaXplIC0gY25vZGVfb2Zmc2V0Owo+ICugoKCg oKCgoKCgoKCgoKBsZW4gPSBtYXhfbGVuID4gUEFHRV9DQUNIRV9TSVpFID8gUEFHRV9DQUNIRV9T SVpFIDogbWF4X2xlbjsKPiAroKCgoKCgoKCgoKCgoKCgc3JjID0gKHZvaWQgKikoKHVuc2lnbmVk IGxvbmcpY2JsazAgKyBjbm9kZV9vZmZzZXQpOwo+ICugoKCgoKCgoKCgoKCgoKBtZW1jcHkocGdk YXRhLCBzcmMsIGxlbik7Cj4gK6CgoKCgoKCgoKCgoKCgoHVwX3JlYWQoJnNiaS0+bG9jayk7CgpU aGlzIGxvb2tzIHZlcnkgbmljZSwgYnV0IGNvdWxkIHVzZSBzb21lIGNvbW1lbnRzIGFib3V0IGhv dyB0aGUgZGF0YSBpcwphY3R1YWxseSBzdG9yZWQgb24gZGlzay4gSXQgdG9vayBtZSBzb21lIHRp bWUgdG8gZmlndXJlIG91dCB0aGF0IGl0IGFjdHVhbGx5CmFsbG93cyB0byBkbyB0YWlsIG1lcmdp bmcgaW50byBjb21wcmVzc2VkIGJsb2Nrcywgd2hpY2ggSSB3YXMgYWJvdXQgdG8gc3VnZ2VzdAp5 b3UgaW1wbGVtZW50IDstKS4gQ3JhbWZzIGRvZXNuJ3QgaGF2ZSB0aGVtLCBhbmQgSSBmb3VuZCB0 aGF0IHRoZXkgYXJlIHRoZQptYWluIHJlYXNvbiB3aHkgc3F1YXNoZnMgY29tcHJlc3NlcyBiZXR0 ZXIgdGhhbiBjcmFtZnMsIGJlc2lkZXMgdGhlIGRlZmF1bHQKYmxvY2sgc2l6ZSwgd2hpY2ggeW91 IGNhbiBjaGFuZ2Ugb24gZWl0aGVyIG9uZS4KCkhhdmUgeW91IHNlZW4gYW55IGJlbmVmaXQgb2Yg dGhlIHJ3c2VtIG92ZXIgYSBzaW1wbGUgbXV0ZXg/IEkgd291bGQgZ3Vlc3MKdGhhdCB5b3UgY2Fu IG5ldmVyIGV2ZW4gZ2V0IGludG8gdGhlIHNpdHVhdGlvbiB3aGVyZSB5b3UgZ2V0IGNvbmN1cnJl bnQKcmVhZGVycyBzaW5jZSBJIGhhdmVuJ3QgZm91bmQgYSBzaW5nbGUgZG93bl9yZWFkKCkgaW4g eW91ciBjb2RlLCBvbmx5CmRvd25ncmFkZV93cml0ZSgpLgoKCUFybmQgPD48Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753421AbYHUMSY (ORCPT ); Thu, 21 Aug 2008 08:18:24 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751705AbYHUMSO (ORCPT ); Thu, 21 Aug 2008 08:18:14 -0400 Received: from moutng.kundenserver.de ([212.227.126.171]:56879 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751375AbYHUMSM (ORCPT ); Thu, 21 Aug 2008 08:18:12 -0400 From: Arnd Bergmann To: jaredeh@gmail.com Subject: Re: [PATCH 04/10] AXFS: axfs_inode.c Date: Thu, 21 Aug 2008 14:17:13 +0200 User-Agent: KMail/1.9.9 Cc: Linux-kernel@vger.kernel.org, linux-embedded@vger.kernel.org, linux-mtd , =?iso-8859-1?q?J=F6rn_Engel?= , tim.bird@am.sony.com, cotte@de.ibm.com, nickpiggin@yahoo.com.au References: <48AD00F0.5030403@gmail.com> In-Reply-To: <48AD00F0.5030403@gmail.com> X-Face: I@=L^?./?$U,EK.)V[4*>`zSqm0>65YtkOe>TFD'!aw?7OVv#~5xd\s,[~w]-J!)|%=]>=?utf-8?q?+=0A=09=7EohchhkRGW=3F=7C6=5FqTmkd=5Ft=3FLZC=23Q-=60=2E=60Y=2Ea=5E?= =?utf-8?q?3zb?=) =?utf-8?q?+U-JVN=5DWT=25cw=23=5BYo0=267C=26bL12wWGlZi=0A=09=7EJ=3B=5Cwg?= =?utf-8?q?=3B3zRnz?=,J"CT_)=\H'1/{?SR7GDu?WIopm.HaBG=QYj"NZD_[zrM\Gip^U MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Message-Id: <200808211417.14425.arnd@arndb.de> X-Provags-ID: V01U2FsdGVkX19gBvDc/6gr0rmAaBG/R3JzKQ7aLgzn7JtVnRV 8czmM/O/GfdEnZyWGgLXSsUzWUc+J/uncQ9ioKLc11gc4NhjUl 0SaIDZ19epJsxQZFnKQGw== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by alpha id m7LCIfdq031888 On Thursday 21 August 2008, Jared Hulbert wrote:> + array_index = AXFS_GET_INODE_ARRAY_INDEX(sbi, ino_number);> + array_index += page->index;> +> + node_index = AXFS_GET_NODE_INDEX(sbi, array_index);> + node_type = AXFS_GET_NODE_TYPE(sbi, array_index);> +> +       if (node_type == Compressed) {> +               /* node is in compessed region */> +               cnode_offset = AXFS_GET_CNODE_OFFSET(sbi, node_index);> +               cnode_index = AXFS_GET_CNODE_INDEX(sbi, node_index);> +               down_write(&sbi->lock);> +               if (cnode_index != sbi->current_cnode_index) {> +                       /* uncompress only necessary if different cblock */> +                       ofs = AXFS_GET_CBLOCK_OFFSET(sbi, cnode_index);> +                       len = AXFS_GET_CBLOCK_OFFSET(sbi, cnode_index + 1);> +                       len -= ofs;> +                       axfs_copy_data(sb, cblk1, &(sbi->compressed), ofs, len);> +                       axfs_uncompress_block(cblk0, cblk_size, cblk1, len);> +                       sbi->current_cnode_index = cnode_index;> +               }> +               downgrade_write(&sbi->lock);> +               max_len = cblk_size - cnode_offset;> +               len = max_len > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE : max_len;> +               src = (void *)((unsigned long)cblk0 + cnode_offset);> +               memcpy(pgdata, src, len);> +               up_read(&sbi->lock); This looks very nice, but could use some comments about how the data isactually stored on disk. It took me some time to figure out that it actuallyallows to do tail merging into compressed blocks, which I was about to suggestyou implement ;-). Cramfs doesn't have them, and I found that they are themain reason why squashfs compresses better than cramfs, besides the defaultblock size, which you can change on either one. Have you seen any benefit of the rwsem over a simple mutex? I would guessthat you can never even get into the situation where you get concurrentreaders since I haven't found a single down_read() in your code, onlydowngrade_write(). Arnd <><ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayºʇڙë,j­¢f£¢·hšïêÿ‘êçz_è®(­éšŽŠÝ¢j"ú¶m§ÿÿ¾«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^¶m§ÿÿà ÿ¶ìÿ¢¸?–I¥