From: "Eric L" Subject: [PATCH 1/1] lseek - SEEK_HOLE/SEEK_DATA support Date: Mon, 16 Oct 2006 20:30:34 -0500 Message-ID: <946a3fda0610161830u2070c903h7faa93d2dda3786f@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_154516_21060610.1161048634605" Return-path: Received: from wx-out-0506.google.com ([66.249.82.224]:19170 "EHLO wx-out-0506.google.com") by vger.kernel.org with ESMTP id S1030212AbWJQBaf (ORCPT ); Mon, 16 Oct 2006 21:30:35 -0400 Received: by wx-out-0506.google.com with SMTP id h28so2074234wxd for ; Mon, 16 Oct 2006 18:30:34 -0700 (PDT) To: linux-ext4@vger.kernel.org Sender: linux-ext4-owner@vger.kernel.org List-Id: linux-ext4.vger.kernel.org ------=_Part_154516_21060610.1161048634605 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi All, This small patch set implements the SEEK_HOLE/SEEK_DATA options to the lseek system call described in Jeff Bonwick's weblog - http://blogs.sun.com/bonwick/entry/seek_hole_and_seek_data The first patch is a small change to the core VFS layer to pass through the options. The second implements the actual functionality in ext3. Signed-off-by: Eric Lorimer ------=_Part_154516_21060610.1161048634605 Content-Type: application/octet-stream; name="lseek.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="lseek.patch" X-Attachment-Id: f_etdmctth ZGlmZiAtdXAgLVggbGludXgtMi42LjE3Ljcud29yay9Eb2N1bWVudGF0aW9uL2RvbnRkaWZmIGxp bnV4LTIuNi4xNy43L2ZzL2V4dDMvZmlsZS5jIGxpbnV4LTIuNi4xNy43LndvcmsvZnMvZXh0My9m aWxlLmMKLS0tIGxpbnV4LTIuNi4xNy43L2ZzL2V4dDMvZmlsZS5jCTIwMDYtMDctMjQgMjI6MzY6 MDEuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYuMTcuNy53b3JrL2ZzL2V4dDMvZmlsZS5j CTIwMDYtMDgtMDEgMTI6NTc6NTYuMDAwMDAwMDAwIC0wNTAwCkBAIC0xMDUsOCArMTA1LDEwMCBA QCBmb3JjZV9jb21taXQ6CiAJcmV0dXJuIHJldDsKIH0KIAorCitzdGF0aWMgc2VjdG9yX3QgZXh0 M19zZWVrX2hvbGVkYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHNlY3Rvcl90IGJsb2NrLCBpbnQg aG9sZSwgc2VjdG9yX3QgbWF4YmxvY2spCit7CisJaW50IG9mZnNldHNbNF0sIG4sIGk7CisJX191 MzIgcGh5c2Jsb2NrLCAqYmxvY2tsdmxbNF0gPSB7IDAgfTsKKwlpbnQgcHRyYmxvY2tbXSA9IHsg RVhUM19ORElSX0JMT0NLUy0xLAorCQlFWFQzX0FERFJfUEVSX0JMT0NLKGlub2RlLT5pX3NiKS0x LAorCQlFWFQzX0FERFJfUEVSX0JMT0NLKGlub2RlLT5pX3NiKS0xLAorCQlFWFQzX0FERFJfUEVS X0JMT0NLKGlub2RlLT5pX3NiKS0xIH07CisKKwluID0gZXh0M19ibG9ja190b19wYXRoKGlub2Rl LCBibG9jaywgb2Zmc2V0cywgTlVMTCk7CisJYmxvY2tsdmxbMF0gPSBFWFQzX0koaW5vZGUpLT5p X2RhdGE7CisJZm9yIChpID0gMTsgaSA8IG47IGkrKykgeworCQlzdHJ1Y3QgYnVmZmVyX2hlYWQg KmJoID0gc2JfYnJlYWQoaW5vZGUtPmlfc2IsCisJCQkJYmxvY2tsdmxbaS0xXVtvZmZzZXRzW2kt MV1dKTsKKwkJYmxvY2tsdmxbaV0gPSAoX191MzIgKiliaC0+Yl9kYXRhOworCX0KKworCXBoeXNi bG9jayA9IGJsb2NrbHZsW24tMV1bb2Zmc2V0c1tuLTFdXTsKKwkvKiB0aGlzIGNvbmRpdGlvbiBp cyB0aGUgc2FtZSBhczogTk9UIChob2xlIFhPUiBwaHlzYmxvY2spIGFuZCBhbGxvd3MgCisJICog dXMgdG8gc2VhcmNoIGZvciBob2xlcyBhbmQgZGF0YSB3aXRoIHRoZSBzYW1lIGNvZGUgKi8KKwl3 aGlsZSAoICghKGhvbGUgfHwgcGh5c2Jsb2NrKSB8fCAoaG9sZSAmJiBwaHlzYmxvY2spKSAKKwkJ CSYmIGJsb2NrIDwgbWF4YmxvY2sgKQorCXsKKwkJb2Zmc2V0c1tuLTFdKys7CisJCWJsb2NrKys7 CisJCWlmICggb2Zmc2V0c1tuLTFdID4gcHRyYmxvY2tbbi0xXSApIHsKKwkJCS8qIHdlIG5lZWQg dG8gY2FycnkuLi4gKi8KKwkJCWludCBsdmwgPSAxOworCQkJd2hpbGUgKCAobi1sdmwgPiAwKSAm JiBvZmZzZXRzW24tbHZsXSA+IHB0cmJsb2NrW24tbHZsXSApIHsKKwkJCQkvKiBwcm9wYWdhdGUg dGhlIGNhcnJ5ICovCisJCQkJbHZsKys7CisJCQkJb2Zmc2V0c1tuLWx2bF0rKzsKKwkJCQlvZmZz ZXRzW24tbHZsKzFdID0gMDsKKwkJCX0KKwkJCWlmICggbi1sdmwgPT0gMCApIHsKKwkJCQkvKiB3 ZSBwcm9wYWdhdGVkIGFsbCB0aGUgd2F5IHVwIHRvIHRoZSB0b3AgKi8KKwkJCQluKys7CQkvKiBh bm90aGVyIGxldmVsIG9mIGluZGlyZWN0aW9uICovCisJCQkJb2Zmc2V0c1tuLTFdID0gMDsKKwkJ CQlsdmwgPSAxOworCQkJfQorCQkJLyogcmVzdGFydCB0aGUgYmxvY2tsdmwgcG9pbnRlcnMgZnJv bSBsdmwgKi8KKwkJCWZvciAoaSA9IGx2bDsgaSA8IG47IGkrKykgeworCQkJCXN0cnVjdCBidWZm ZXJfaGVhZCAqYmggPSBzYl9icmVhZChpbm9kZS0+aV9zYiwgCisJCQkJCQlibG9ja2x2bFtpLTFd W29mZnNldHNbaS0xXV0pOworCQkJCWJsb2NrbHZsW2ldID0gKF9fdTMyICopYmgtPmJfZGF0YTsK KwkJCX0KKwkJfQorCQlwaHlzYmxvY2sgPSBibG9ja2x2bFtuLTFdW29mZnNldHNbbi0xXV07CisJ fQorCQorCXJldHVybiBibG9jazsKK30KKworCitzdGF0aWMgbG9mZl90IGV4dDNfZmlsZV9sbHNl ZWsoc3RydWN0IGZpbGUgKmZpbHAsIGxvZmZfdCBvZmZzZXQsIGludCBvcmlnaW4pCit7CisJbG9u ZyBsb25nIHJldHZhbDsKKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlscC0+Zl9tYXBwaW5nLT5o b3N0OworCWludCBibGtzaGlmdCA9IEVYVDNfQkxPQ0tfU0laRV9CSVRTKGlub2RlLT5pX3NiKTsK Kwl1bnNpZ25lZCBsb25nIG1heGJsb2NrLCBpbmRleCA9IG9mZnNldCA+PiBibGtzaGlmdDsKKwor CW11dGV4X2xvY2soJmlub2RlLT5pX211dGV4KTsKKwltYXhibG9jayA9IGlub2RlLT5pX3NpemUg Pj4gYmxrc2hpZnQ7CisJc3dpdGNoIChvcmlnaW4pIHsKKwkJY2FzZSA0OgkJLyogU0VFS19IT0xF ICovCisJCWNhc2UgMzoJCS8qIFNFRUtfREFUQSAqLworCQkJaW5kZXggPSBleHQzX3NlZWtfaG9s ZWRhdGEoaW5vZGUsIGluZGV4LCAob3JpZ2luLTMpLCBtYXhibG9jaysxKTsKKwkJCWlmICggKGlu ZGV4IDw8IGJsa3NoaWZ0KSA+IGlub2RlLT5pX3NpemUgKQorCQkJCW9mZnNldCA9IGlub2RlLT5p X3NpemU7CisJCQllbHNlIGlmICggaW5kZXggPiAob2Zmc2V0ID4+IGJsa3NoaWZ0KSApCisJCQkJ b2Zmc2V0ID0gaW5kZXggPDwgYmxrc2hpZnQ7CisJCQlicmVhazsKKwkJY2FzZSAyOgorCQkJb2Zm c2V0ICs9IGlub2RlLT5pX3NpemU7CisJCQlicmVhazsKKwkJY2FzZSAxOgorCQkJb2Zmc2V0ICs9 IGZpbHAtPmZfcG9zOworCX0KKwlyZXR2YWwgPSAtRUlOVkFMOworCWlmIChvZmZzZXQgPj0gMCAm JiBvZmZzZXQgPD0gaW5vZGUtPmlfc2ItPnNfbWF4Ynl0ZXMpIHsKKwkJaWYgKG9mZnNldCAhPSBm aWxwLT5mX3BvcykgeworCQkJZmlscC0+Zl9wb3MgPSBvZmZzZXQ7CisJCQlmaWxwLT5mX3ZlcnNp b24gPSAwOworCQl9CisJCXJldHZhbCA9IG9mZnNldDsKKwl9CisJbXV0ZXhfdW5sb2NrKCZpbm9k ZS0+aV9tdXRleCk7CisJcmV0dXJuIHJldHZhbDsKK30KKworCiBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIGV4dDNfZmlsZV9vcGVyYXRpb25zID0gewotCS5sbHNlZWsJCT0gZ2VuZXJpY19m aWxlX2xsc2VlaywKKwkubGxzZWVrCQk9IGV4dDNfZmlsZV9sbHNlZWssCiAJLnJlYWQJCT0gZG9f c3luY19yZWFkLAogCS53cml0ZQkJPSBkb19zeW5jX3dyaXRlLAogCS5haW9fcmVhZAk9IGdlbmVy aWNfZmlsZV9haW9fcmVhZCwKZGlmZiAtdXAgLVggbGludXgtMi42LjE3Ljcud29yay9Eb2N1bWVu dGF0aW9uL2RvbnRkaWZmIGxpbnV4LTIuNi4xNy43L2ZzL2V4dDMvaW5vZGUuYyBsaW51eC0yLjYu MTcuNy53b3JrL2ZzL2V4dDMvaW5vZGUuYwotLS0gbGludXgtMi42LjE3LjcvZnMvZXh0My9pbm9k ZS5jCTIwMDYtMDctMjQgMjI6MzY6MDEuMDAwMDAwMDAwIC0wNTAwCisrKyBsaW51eC0yLjYuMTcu Ny53b3JrL2ZzL2V4dDMvaW5vZGUuYwkyMDA2LTA4LTAxIDEzOjA5OjM0LjAwMDAwMDAwMCAtMDUw MApAQCAtMjgzLDcgKzI4Myw3IEBAIHN0YXRpYyBpbnQgdmVyaWZ5X2NoYWluKEluZGlyZWN0ICpm cm9tLCAKICAqIGdldCB0aGVyZSBhdCBhbGwuCiAgKi8KIAotc3RhdGljIGludCBleHQzX2Jsb2Nr X3RvX3BhdGgoc3RydWN0IGlub2RlICppbm9kZSwKKy8qc3RhdGljKi8gaW50IGV4dDNfYmxvY2tf dG9fcGF0aChzdHJ1Y3QgaW5vZGUgKmlub2RlLAogCQkJbG9uZyBpX2Jsb2NrLCBpbnQgb2Zmc2V0 c1s0XSwgaW50ICpib3VuZGFyeSkKIHsKIAlpbnQgcHRycyA9IEVYVDNfQUREUl9QRVJfQkxPQ0so aW5vZGUtPmlfc2IpOwpkaWZmIC11cHIgLVggbGludXgtMi42LjE3Ljcud29yay9Eb2N1bWVudGF0 aW9uL2RvbnRkaWZmIGxpbnV4LTIuNi4xNy43L2luY2x1ZGUvbGludXgvZXh0M19mcy5oIGxpbnV4 LTIuNi4xNy43LndvcmsvaW5jbHVkZS9saW51eC9leHQzX2ZzLmgKLS0tIGxpbnV4LTIuNi4xNy43 L2luY2x1ZGUvbGludXgvZXh0M19mcy5oCTIwMDYtMDctMjQgMjI6MzY6MDEuMDAwMDAwMDAwIC0w NTAwCisrKyBsaW51eC0yLjYuMTcuNy53b3JrL2luY2x1ZGUvbGludXgvZXh0M19mcy5oCTIwMDYt MDgtMDEgMTM6MDk6NTkuMDAwMDAwMDAwIC0wNTAwCkBAIC03OTQsNiArNzk0LDggQEAgZXh0ZXJu IGludCBleHQzX2dldF9pbm9kZV9sb2Moc3RydWN0IGlubwogZXh0ZXJuIHZvaWQgZXh0M190cnVu Y2F0ZSAoc3RydWN0IGlub2RlICopOwogZXh0ZXJuIHZvaWQgZXh0M19zZXRfaW5vZGVfZmxhZ3Mo c3RydWN0IGlub2RlICopOwogZXh0ZXJuIHZvaWQgZXh0M19zZXRfYW9wcyhzdHJ1Y3QgaW5vZGUg Kmlub2RlKTsKK2V4dGVybiBpbnQgZXh0M19ibG9ja190b19wYXRoKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIGxvbmcgaV9ibG9jaywgCisJaW50IG9mZnNldHNbNF0sIGludCAqYm91bmRhcnkpOwogCiAv KiBpb2N0bC5jICovCiBleHRlcm4gaW50IGV4dDNfaW9jdGwgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgZmlsZSAqLCB1bnNpZ25lZCBpbnQsCg== ------=_Part_154516_21060610.1161048634605 Content-Type: application/octet-stream; name="vfs_lseek.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vfs_lseek.patch" X-Attachment-Id: f_etdmdase LS0tIGxpbnV4LTIuNi4xNy43L2ZzL3JlYWRfd3JpdGUuYwkyMDA2LTA3LTI0IDIyOjM2OjAxLjAw MDAwMDAwMCAtMDUwMAorKysgbGludXgtMi42LjE3Ljcud29yay9mcy9yZWFkX3dyaXRlLmMJMjAw Ni0wNy0yNiAyMzo0Njo1MC4wMDAwMDAwMDAgLTA1MDAKQEAgLTEzNyw3ICsxMzcsNyBAQCBhc21s aW5rYWdlIG9mZl90IHN5c19sc2Vlayh1bnNpZ25lZCBpbnQgCiAJCWdvdG8gYmFkOwogCiAJcmV0 dmFsID0gLUVJTlZBTDsKLQlpZiAob3JpZ2luIDw9IDIpIHsKKwlpZiAob3JpZ2luIDw9IDQpIHsK IAkJbG9mZl90IHJlcyA9IHZmc19sbHNlZWsoZmlsZSwgb2Zmc2V0LCBvcmlnaW4pOwogCQlyZXR2 YWwgPSByZXM7CiAJCWlmIChyZXMgIT0gKGxvZmZfdClyZXR2YWwpCkBAIC0xNjQsNyArMTY0LDcg QEAgYXNtbGlua2FnZSBsb25nIHN5c19sbHNlZWsodW5zaWduZWQgaW50IAogCQlnb3RvIGJhZDsK IAogCXJldHZhbCA9IC1FSU5WQUw7Ci0JaWYgKG9yaWdpbiA+IDIpCisJaWYgKG9yaWdpbiA+IDQp CiAJCWdvdG8gb3V0X3B1dGY7CiAKIAlvZmZzZXQgPSB2ZnNfbGxzZWVrKGZpbGUsICgobG9mZl90 KSBvZmZzZXRfaGlnaCA8PCAzMikgfCBvZmZzZXRfbG93LAo= ------=_Part_154516_21060610.1161048634605--