From mboxrd@z Thu Jan 1 00:00:00 1970 From: Namjae Jeon Subject: RE: [PATCH 3/3] ext4: Add support IOC_MOV_DATA ioctl Date: Fri, 18 Jul 2014 17:50:55 +0900 Message-ID: <002901cfa265$636d2e50$2a478af0$@samsung.com> References: <004001cf9aa4$2670e280$7352a780$@samsung.com> <87tx6ktiay.fsf@openvz.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: 'Theodore Ts'o' , 'Brian Foster' , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, 'Christoph Hellwig' , 'Ashish Sangwan' , linux-fsdevel@vger.kernel.org, =?UTF-8?Q?'Luk=C3=A1=C5=A1_Czerner'?= , 'linux-ext4' To: 'Dmitry Monakhov' Return-path: In-reply-to: <87tx6ktiay.fsf@openvz.org> Content-language: ko List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com List-Id: linux-ext4.vger.kernel.org PiBPbiBUdWUsIDggSnVsIDIwMTQgMTY6MDI6MjggKzAyMDAgKENFU1QpLCBMdWvDocWhIEN6ZXJu ZXIgPGxjemVybmVyQHJlZGhhdC5jb20+IHdyb3RlOgo+IE5vbi10ZXh0IHBhcnQ6IE1VTFRJUEFS VC9NSVhFRAo+ID4gT24gVHVlLCA4IEp1bCAyMDE0LCBOYW1qYWUgSmVvbiB3cm90ZToKPiA+Cj4g PiA+IERhdGU6IFR1ZSwgMDggSnVsIDIwMTQgMjE6MDA6MDIgKzA5MDAKPiA+ID4gRnJvbTogTmFt amFlIEplb24gPG5hbWphZS5qZW9uQHNhbXN1bmcuY29tPgo+ID4gPiBUbzogRGF2ZSBDaGlubmVy IDxkYXZpZEBmcm9tb3JiaXQuY29tPiwgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KPiA+ ID4gQ2M6IGxpbnV4LWV4dDQgPGxpbnV4LWV4dDRAdmdlci5rZXJuZWwub3JnPiwgbGludXgtZnNk ZXZlbEB2Z2VyLmtlcm5lbC5vcmcsCj4gPiA+ICAgICBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwu b3JnLCBMdWvDocWhIEN6ZXJuZXIgPGxjemVybmVyQHJlZGhhdC5jb20+LAo+ID4gPiAgICAgQnJp YW4gRm9zdGVyIDxiZm9zdGVyQHJlZGhhdC5jb20+LCBDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGlu ZnJhZGVhZC5vcmc+LAo+ID4gPiAgICAgQXNoaXNoIFNhbmd3YW4gPGEuc2FuZ3dhbkBzYW1zdW5n LmNvbT4sIHhmc0Bvc3Muc2dpLmNvbQo+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggMy8zXSBleHQ0OiBB ZGQgc3VwcG9ydCBJT0NfTU9WX0RBVEEgaW9jdGwKPiA+ID4KPiA+ID4gVGhpcyBwYXRjaCBpbXBs ZW1lbnRzIGZzIGlvY3RsJ3MgSU9DX01PVl9EQVRBIGZvciBFeHQ0Lgo+ID4KPiA+IEhtbSBpc24n dCB0aGlzIGJhc2ljYWxseSB3aGF0IGV4dDRfbW92ZV9leHRlbnRzKCkgZG9lcyA/IGVnLgo+ID4g RVhUNF9JT0NfTU9WRV9FWFQgPwo+ID4KPiA+IEkgZ3Vlc3MgdGhhdCB0aGUgaW50ZW50aW9uIGhl cmUgaXMgdG8gZG8gdGhlIG1vdmUsIHdpdGhvdXQgYWN0dWFsbHkKPiA+IG1vdmluZyB0aGUgZGF0 YSByaWdodCA/IEJ1dCBuZXZlcnRoZWxlc3MgbWF5YmUgc29tZSBjb2RlIGNhbiBiZQo+ID4gc2hh cmVkIHdpdGggZXh0NF9tb3ZlX2V4dGVudHMoKSA/Cj4gSXQgZGVmaW5pdGVseSBjYW4gYmUgc2hh cmVkLCBiZWNhdXNlIGl0IGhhcyBzcGVjaWZpYyBjYXNlIGZvciB1bndyaXR0ZW4KPiBkYXRhIHNl ZSBtb3ZlX2V4dGVudF9wZXJfcGFnZSgpLgpJZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5LCBtb3Zf ZXh0ZW50X3Blcl9wYWdlIGNhbGxzIG1leHRfcmVwbGFjZV9icmFuY2hlcyB0bwpfcmVwbGFjZV8g ZXh0ZW50cyBmcm9tIDEgaW5vZGUgdG8gb3RoZXIgaW5vZGUuIFBsZWFzZSBjb3JyZWN0IG1lIGlm IEkgYW0gd3JvbmcuCmlvY19tb3ZfZGF0YSB3aWxsIG5vdCByZXBsYWNlIGV4dGVudHMsIGJ1dCBp dCB3aWxsIGFjdHVhbGx5IF9tb3ZlXyBleHRlbnRzIGludG8KaG9sZSBmcm9tIGRvbm9yIHRvIHJl Y2VpdmVyLCBsZWF2aW5nIGEgaG9sZSBhdCB0aGUgcGxhY2UgZnJvbSB3aGVyZSBleHRlbnRzIGFy ZQptb3ZlZC4KQ291bGQgeW91IGVsYWJvcmF0ZSBtb3JlIGhvdyBpdCBjYW4gYmUgc2hhcmVkIGZv ciB1bndyaXR0ZW4gZGF0YSBjYXNlID8KCj4gQnV0IEkgdGhpbmsgd2UgY2FuIG9ic2VydmUgYW5v dGhlciB3YXkgdG8gdW5pZnkgdGhpcyB0d28gdGhpbmdzLgo+IEFuIGlkZWEgaW5zcGlyZWQgYnkg dGhlIGZhY3QgdGhhdCBpb2NfbW92ZV9kYXRhIHdvcmtzIG9ubHkgZm9yCj4gcmVndWxhciBpbm9k ZXMsIHdoZXJlIG9yaWdfb2Zmc2V0ID09IGRvbm9yX29mZnNldC4gCkNvdWxkIHlvdSBlbGFib3Jh dGUgdGhpcyBwb2ludD8gCgo+IFRoaXMgaXMgc2hvd3N0b3BwZXIKPiBmb3IgIG15IHV0aWxpdHkg ZTRkZWZyYWcyICggbmV3IHZlcnNpb24gb2YgZTRkZWZyYWcgd2hpY2ggaXMgYWJsZSBkZWZyYWdt ZW50Cj4gcGFjayBzbWFsbCBmaWxlcyBhcyBkZXNjcmliZWQgaGVyZSA6Cj4gaHR0cDovL2xpc3Rz Lm9wZW53YWxsLm5ldC9saW51eC1leHQ0LzIwMTQvMDQvMjgvMykKPiAKPiBQcm9wb3NlZCBBUEkg aXMgdmVyeSBzaW1pbGFyIHRvIGV4dDRfZXh0X21pZ3JhdGU6Cj4gQXJnczoKPiAgIG9yaWdfZmls ZTogaW5vZGUgd2hpY2ggd2Ugd2FudCB0byBkZWZyYWdtZW50Cj4gICBkb25vcl9maWxlOiBhIGZp bGUgd2hpY2ggd2lsbCBiZSB1c2VkIGFzIGEgZG9ub3Igb2YgYmxvY2tzCj4gMSkgZmFsbG9jYXRl IGJpZyBkb25vcl9maWxlCj4gMikgYSkgQ3JlYXRlIHRtcCBpbm9kZSB3aWNoIG5saW5rID0gMAo+ ICAgIGIpIG1vdmUgZXh0ZW50cyByZXF1aXJlZCBleHRlbnRzIGZyb20gIGRvbm9yIHRvIHRtcF9k b25vcl9pbm9kZQo+ICAgIGMpIHJldHVybiBmaWxlIGRlc2NyaXB0b3IgKHRtcF9mZCkgdG8gdGhh dCB0bXBfZG9ub3JfaW5vZGUKPiA0KSBNYXJrIG9yaWdfZmlsZSdzIGlub2RlIHdpdGggRVhUNF9T VEFURV9FWFRfTUlHUkFURSBzdGF0ZQo+IDUpIENvcHkgZGF0YSBmcm9tIG9yaWdfZmlsZSB0byB0 bXBfZmQKPiA2KSBJT0NfU1dBUF9FWDogYXRvbWljYWxseSBzd2FwICBvcmlnX2ZpbGUtPmlfZGF0 YSBhbmQgdG1wX2ZkLT5pX2RhdGEKPiAgICBpZiBFWFQ0X1NUQVRFX0VYVF9NSUdSQVRFIHdhcyBu b3QgY2xlYXJlZC4KPiAKPiBUaGlzIGFwcHJvYWNoIGNhbiB3b3JrcyBub3Qgb25seSBmb3IgcmVn dWxhciBmaWxlIHcvbyBqb3VybmFsaW5nCj4gZW5hYmxlZCwgYnV0IGFsc28gZm9yIGpvdXJuYWxl ZCBvbmVzLCBhbmQgZGlyZWN0b3JpZXMuCj4gCj4gCj4gCj4gCj4gPgo+ID4gLUx1a2FzCj4gPgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KeGZzIG1haWxp bmcgbGlzdAp4ZnNAb3NzLnNnaS5jb20KaHR0cDovL29zcy5zZ2kuY29tL21haWxtYW4vbGlzdGlu Zm8veGZzCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760689AbaGRIvZ (ORCPT ); Fri, 18 Jul 2014 04:51:25 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:20444 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754507AbaGRIvU convert rfc822-to-8bit (ORCPT ); Fri, 18 Jul 2014 04:51:20 -0400 X-AuditID: cbfee68d-b7fd46d000005f36-8c-53c8dff0975c From: Namjae Jeon To: "'Dmitry Monakhov'" Cc: "'Dave Chinner'" , "'Theodore Ts'o'" , "'linux-ext4'" , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, "'Brian Foster'" , "'Christoph Hellwig'" , "'Ashish Sangwan'" , xfs@oss.sgi.com, "=?UTF-8?Q?'Luk=C3=A1=C5=A1_Czerner'?=" References: <004001cf9aa4$2670e280$7352a780$@samsung.com> <87tx6ktiay.fsf@openvz.org> In-reply-to: <87tx6ktiay.fsf@openvz.org> Subject: RE: [PATCH 3/3] ext4: Add support IOC_MOV_DATA ioctl Date: Fri, 18 Jul 2014 17:50:55 +0900 Message-id: <002901cfa265$636d2e50$2a478af0$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 8BIT X-Mailer: Microsoft Outlook 14.0 Thread-index: AQGrJOZNAI0ZuL5IevgT+zbvOhNoQAIW0xsrAQ2dXteb1UCJkA== Content-language: ko X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpgleLIzCtJLcpLzFFi42JZI2JSovvh/olgg82zxS2WTrzEbPHuc5XF lmP3GC1OzPS0OD1hEZPFsgebWSxmzrvDZrFn70kWi8u75rBZtPb8ZLdY1HeL0YHb49QiCY/N K7Q8ms4cZfaYdPgzk8fqC1sZPd7vu8rm0bdlFaPH501yARxRXDYpqTmZZalF+nYJXBlPnzaz FmwTq7hyeD1bA2OHUBcjJ4eEgInEtq9X2CBsMYkL99YD2VwcQgJLGSUWvmpi72JkBys6GwsR XsQo8fffelYI5y+jxJpZ0xm7GDk42AS0Jf5sEQWZIyKgI9F85RoLSA2zQCOzxNO7+5khGqYw SmzfcAGsgVNAQ2LC30qQBmEBW4npZ3czgtgsAqoSD/6sBzuIV8BS4vvF5cwQtqDEj8n3WEBs ZgF1iUnzFjFD2NoST95dYIV4QEFix9nXjBBHOEncO97PCFEjIrHvxTtGkBskBOZySMzt3MUO sUxA4tvkQywg90gIyEpsOsAMMUdS4uCKGywTGCVmIVk9C8nqWUhWz0KyYgEjyypG0dSC5ILi pPQiQ73ixNzi0rx0veT83E2MwNg//e9Z7w7G2wesDzEmA62fyCwlmpwPTB15JfGGxmZGFqYm psZG5pZmpAkrifMmPUwKEhJITyxJzU5NLUgtii8qzUktPsTIxMEp1cAY+ap/u5QO+0EFlR8z ZmfVx0eLppQdOm8aWaK/JX/PZgkDuR0/5fRuuOyX+3nvy1mx70FOWftivR2WzLTmMM84Vlmw /q00s1W79rd/m3cUzEoXOqh80vf/2dPN8m/3LH8gbWlY8rtE7VXKg5+9UfNjRVxP+Gf6Pfn6 Nmnh6sqIyb+f7GfreO6mxFKckWioxVxUnAgAtDCxrRMDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrPKsWRmVeSWpSXmKPExsVy+t9jAd0P908EG8zZzWexdOIlZot3n6ss thy7x2hxYqanxekJi5gslj3YzGIxc94dNos9e0+yWFzeNYfNorXnJ7vFor5bjA7cHqcWSXhs XqHl0XTmKLPHpMOfmTxWX9jK6PF+31U2j74tqxg9Pm+SC+CIamC0yUhNTEktUkjNS85PycxL t1XyDo53jjc1MzDUNbS0MFdSyEvMTbVVcvEJ0HXLzAE6U0mhLDGnFCgUkFhcrKRvh2lCaIib rgVMY4Sub0gQXI+RARpIWMOY8fRpM2vBNrGKK4fXszUwdgh1MbJzSAiYSJyN7WLkBLLEJC7c W8/WxcjFISSwiFHi77/1rBDOX0aJNbOmM3YxcnCwCWhL/NkiCtIgIqAj0XzlGgtIDbNAI7PE 07v7mSEapjBKbN9wAayBU0BDYsLfSpAGYQFbielndzOC2CwCqhIP/oBs4+TgFbCU+H5xOTOE LSjxY/I9FhCbWUBdYtK8RcwQtrbEk3cXWCEuVZDYcfY1I8QRThL3jvczQtSISOx78Y5xAqPQ LCSjZiEZNQvJqFlIWhYwsqxiFE0tSC4oTkrPNdQrTswtLs1L10vOz93ECE4sz6R2MK5ssDjE KMDBqMTDa3HzeLAQa2JZcWXuIUYJDmYlEd7s+0Ah3pTEyqrUovz4otKc1OJDjKZAn05klhJN zgcmvbySeENjEzMjSyNzQwsjY3Mlcd4DrdaBQgLpiSWp2ampBalFMH1MHJxSDYw+J7OMmDde VElYcPbRfelOtxPrjONMqpeWZR63mhf44PaMY6WC6uE3LpjbFMZesZP7ybQ22/Vyyydlj9Vh 5y+ZiN+NmnYk0M51z1LP1EBRXq5ts66cz1/UecDZoSl4lcm37OtbmR6+ezqrVVK84p/aswq7 /StPPhbj1Tv4er7ogSz2qpKgzbOUWIozEg21mIuKEwHjaHz4QgMAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > On Tue, 8 Jul 2014 16:02:28 +0200 (CEST), Lukáš Czerner wrote: > Non-text part: MULTIPART/MIXED > > On Tue, 8 Jul 2014, Namjae Jeon wrote: > > > > > Date: Tue, 08 Jul 2014 21:00:02 +0900 > > > From: Namjae Jeon > > > To: Dave Chinner , Theodore Ts'o > > > Cc: linux-ext4 , linux-fsdevel@vger.kernel.org, > > > linux-kernel@vger.kernel.org, Lukáš Czerner , > > > Brian Foster , Christoph Hellwig , > > > Ashish Sangwan , xfs@oss.sgi.com > > > Subject: [PATCH 3/3] ext4: Add support IOC_MOV_DATA ioctl > > > > > > This patch implements fs ioctl's IOC_MOV_DATA for Ext4. > > > > Hmm isn't this basically what ext4_move_extents() does ? eg. > > EXT4_IOC_MOVE_EXT ? > > > > I guess that the intention here is to do the move, without actually > > moving the data right ? But nevertheless maybe some code can be > > shared with ext4_move_extents() ? > It definitely can be shared, because it has specific case for unwritten > data see move_extent_per_page(). If I understand correctly, mov_extent_per_page calls mext_replace_branches to _replace_ extents from 1 inode to other inode. Please correct me if I am wrong. ioc_mov_data will not replace extents, but it will actually _move_ extents into hole from donor to receiver, leaving a hole at the place from where extents are moved. Could you elaborate more how it can be shared for unwritten data case ? > But I think we can observe another way to unify this two things. > An idea inspired by the fact that ioc_move_data works only for > regular inodes, where orig_offset == donor_offset. Could you elaborate this point? > This is showstopper > for my utility e4defrag2 ( new version of e4defrag which is able defragment > pack small files as described here : > http://lists.openwall.net/linux-ext4/2014/04/28/3) > > Proposed API is very similar to ext4_ext_migrate: > Args: > orig_file: inode which we want to defragment > donor_file: a file which will be used as a donor of blocks > 1) fallocate big donor_file > 2) a) Create tmp inode wich nlink = 0 > b) move extents required extents from donor to tmp_donor_inode > c) return file descriptor (tmp_fd) to that tmp_donor_inode > 4) Mark orig_file's inode with EXT4_STATE_EXT_MIGRATE state > 5) Copy data from orig_file to tmp_fd > 6) IOC_SWAP_EX: atomically swap orig_file->i_data and tmp_fd->i_data > if EXT4_STATE_EXT_MIGRATE was not cleared. > > This approach can works not only for regular file w/o journaling > enabled, but also for journaled ones, and directories. > > > > > > > > -Lukas > >