From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 01/21] mm/shmem: introduce shmem_file_setup_with_mnt Date: Tue, 25 Jul 2017 20:21:13 +0100 Message-ID: <20170725192133.2012-2-matthew.auld@intel.com> References: <20170725192133.2012-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id F15C66E3AC for ; Tue, 25 Jul 2017 19:21:44 +0000 (UTC) In-Reply-To: <20170725192133.2012-1-matthew.auld@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Dave Hansen , Hugh Dickins , linux-mm@kvack.org, "Kirill A . Shutemov" List-Id: intel-gfx@lists.freedesktop.org V2UgYXJlIHBsYW5uaW5nIHRvIHVzZSBvdXIgb3duIHRtcGZzIG1udCBpbiBpOTE1IGluIHBsYWNl IG9mIHRoZQpzaG1fbW50LCBzdWNoIHRoYXQgd2UgY2FuIGNvbnRyb2wgdGhlIG1vdW50IG9wdGlv bnMsIGluIHBhcnRpY3VsYXIKaHVnZT0sIHdoaWNoIHdlIHJlcXVpcmUgdG8gc3VwcG9ydCBodWdl LWd0dC1wYWdlcy4gU28gcmF0aGVyIHRoYW4gcm9sbApvdXIgb3duIHZlcnNpb24gb2YgX19zaG1l bV9maWxlX3NldHVwLCBpdCB3b3VsZCBiZSBwcmVmZXJyZWQgaWYgd2UgY291bGQKanVzdCBnaXZl IHNobWVtIG91ciBtbnQsIGFuZCBsZXQgaXQgZG8gdGhlIHJlc3QuCgpTaWduZWQtb2ZmLWJ5OiBN YXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KQ2M6IERhdmUgSGFuc2VuIDxkYXZlLmhhbnNlbkBpbnRlbC5j b20+CkNjOiBLaXJpbGwgQS4gU2h1dGVtb3YgPGtpcmlsbEBzaHV0ZW1vdi5uYW1lPgpDYzogSHVn aCBEaWNraW5zIDxodWdoZEBnb29nbGUuY29tPgpDYzogbGludXgtbW1Aa3ZhY2sub3JnCi0tLQog aW5jbHVkZS9saW51eC9zaG1lbV9mcy5oIHwgIDIgKysKIG1tL3NobWVtLmMgICAgICAgICAgICAg ICB8IDMwICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAy NCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvc2htZW1fZnMuaCBiL2luY2x1ZGUvbGludXgvc2htZW1fZnMuaAppbmRleCBhN2Q2YmQyYTkx OGYuLjI3ZGU2NzZmMGI2MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5oCisr KyBiL2luY2x1ZGUvbGludXgvc2htZW1fZnMuaApAQCAtNTMsNiArNTMsOCBAQCBleHRlcm4gc3Ry dWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXAoY29uc3QgY2hhciAqbmFtZSwKIAkJCQkJbG9mZl90 IHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwogZXh0ZXJuIHN0cnVjdCBmaWxlICpzaG1lbV9r ZXJuZWxfZmlsZV9zZXR1cChjb25zdCBjaGFyICpuYW1lLCBsb2ZmX3Qgc2l6ZSwKIAkJCQkJICAg IHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworZXh0ZXJuIHN0cnVjdCBmaWxlICpzaG1lbV9maWxlX3Nl dHVwX3dpdGhfbW50KHN0cnVjdCB2ZnNtb3VudCAqbW50LAorCQljb25zdCBjaGFyICpuYW1lLCBs b2ZmX3Qgc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFncyk7CiBleHRlcm4gaW50IHNobWVtX3plcm9f c2V0dXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2ht ZW1fZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZyBhZGRyLAog CQl1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgbG9uZyBwZ29mZiwgdW5zaWduZWQgbG9uZyBm bGFncyk7CmRpZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIvbW0vc2htZW0uYwppbmRleCBiMGFhNjA3 NWQxNjQuLjI5Mzk2NGMxZGM2ZCAxMDA2NDQKLS0tIGEvbW0vc2htZW0uYworKysgYi9tbS9zaG1l bS5jCkBAIC00MTMzLDcgKzQxMzMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRlbnRyeV9vcGVy YXRpb25zIGFub25fb3BzID0gewogCS5kX2RuYW1lID0gc2ltcGxlX2RuYW1lCiB9OwogCi1zdGF0 aWMgc3RydWN0IGZpbGUgKl9fc2htZW1fZmlsZV9zZXR1cChjb25zdCBjaGFyICpuYW1lLCBsb2Zm X3Qgc2l6ZSwKK3N0YXRpYyBzdHJ1Y3QgZmlsZSAqX19zaG1lbV9maWxlX3NldHVwKHN0cnVjdCB2 ZnNtb3VudCAqbW50LCBjb25zdCBjaGFyICpuYW1lLCBsb2ZmX3Qgc2l6ZSwKIAkJCQkgICAgICAg dW5zaWduZWQgbG9uZyBmbGFncywgdW5zaWduZWQgaW50IGlfZmxhZ3MpCiB7CiAJc3RydWN0IGZp bGUgKnJlczsKQEAgLTQxNDIsOCArNDE0Miw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZSAqX19zaG1l bV9maWxlX3NldHVwKGNvbnN0IGNoYXIgKm5hbWUsIGxvZmZfdCBzaXplLAogCXN0cnVjdCBzdXBl cl9ibG9jayAqc2I7CiAJc3RydWN0IHFzdHIgdGhpczsKIAotCWlmIChJU19FUlIoc2htX21udCkp Ci0JCXJldHVybiBFUlJfQ0FTVChzaG1fbW50KTsKKwlpZiAoSVNfRVJSKG1udCkpCisJCXJldHVy biBFUlJfQ0FTVChtbnQpOwogCiAJaWYgKHNpemUgPCAwIHx8IHNpemUgPiBNQVhfTEZTX0ZJTEVT SVpFKQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKQEAgLTQxNTUsOCArNDE1NSw4IEBAIHN0 YXRpYyBzdHJ1Y3QgZmlsZSAqX19zaG1lbV9maWxlX3NldHVwKGNvbnN0IGNoYXIgKm5hbWUsIGxv ZmZfdCBzaXplLAogCXRoaXMubmFtZSA9IG5hbWU7CiAJdGhpcy5sZW4gPSBzdHJsZW4obmFtZSk7 CiAJdGhpcy5oYXNoID0gMDsgLyogd2lsbCBnbyAqLwotCXNiID0gc2htX21udC0+bW50X3NiOwot CXBhdGgubW50ID0gbW50Z2V0KHNobV9tbnQpOworCXNiID0gbW50LT5tbnRfc2I7CisJcGF0aC5t bnQgPSBtbnRnZXQobW50KTsKIAlwYXRoLmRlbnRyeSA9IGRfYWxsb2NfcHNldWRvKHNiLCAmdGhp cyk7CiAJaWYgKCFwYXRoLmRlbnRyeSkKIAkJZ290byBwdXRfbWVtb3J5OwpAQCAtNDIwMSw3ICs0 MjAxLDcgQEAgc3RhdGljIHN0cnVjdCBmaWxlICpfX3NobWVtX2ZpbGVfc2V0dXAoY29uc3QgY2hh ciAqbmFtZSwgbG9mZl90IHNpemUsCiAgKi8KIHN0cnVjdCBmaWxlICpzaG1lbV9rZXJuZWxfZmls ZV9zZXR1cChjb25zdCBjaGFyICpuYW1lLCBsb2ZmX3Qgc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFn cykKIHsKLQlyZXR1cm4gX19zaG1lbV9maWxlX3NldHVwKG5hbWUsIHNpemUsIGZsYWdzLCBTX1BS SVZBVEUpOworCXJldHVybiBfX3NobWVtX2ZpbGVfc2V0dXAoc2htX21udCwgbmFtZSwgc2l6ZSwg ZmxhZ3MsIFNfUFJJVkFURSk7CiB9CiAKIC8qKgpAQCAtNDIxMiwxMSArNDIxMiwyNSBAQCBzdHJ1 Y3QgZmlsZSAqc2htZW1fa2VybmVsX2ZpbGVfc2V0dXAoY29uc3QgY2hhciAqbmFtZSwgbG9mZl90 IHNpemUsIHVuc2lnbmVkIGxvbgogICovCiBzdHJ1Y3QgZmlsZSAqc2htZW1fZmlsZV9zZXR1cChj b25zdCBjaGFyICpuYW1lLCBsb2ZmX3Qgc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFncykKIHsKLQly ZXR1cm4gX19zaG1lbV9maWxlX3NldHVwKG5hbWUsIHNpemUsIGZsYWdzLCAwKTsKKwlyZXR1cm4g X19zaG1lbV9maWxlX3NldHVwKHNobV9tbnQsIG5hbWUsIHNpemUsIGZsYWdzLCAwKTsKIH0KIEVY UE9SVF9TWU1CT0xfR1BMKHNobWVtX2ZpbGVfc2V0dXApOwogCiAvKioKKyAqIHNobWVtX2ZpbGVf c2V0dXBfd2l0aF9tbnQgLSBnZXQgYW4gdW5saW5rZWQgZmlsZSBsaXZpbmcgaW4gdG1wZnMKKyAq IEBtbnQ6IHRoZSB0bXBmcyBtb3VudCB3aGVyZSB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQKKyAq IEBuYW1lOiBuYW1lIGZvciBkZW50cnkgKHRvIGJlIHNlZW4gaW4gL3Byb2MvPHBpZD4vbWFwcwor ICogQHNpemU6IHNpemUgdG8gYmUgc2V0IGZvciB0aGUgZmlsZQorICogQGZsYWdzOiBWTV9OT1JF U0VSVkUgc3VwcHJlc3NlcyBwcmUtYWNjb3VudGluZyBvZiB0aGUgZW50aXJlIG9iamVjdCBzaXpl CisgKi8KK3N0cnVjdCBmaWxlICpzaG1lbV9maWxlX3NldHVwX3dpdGhfbW50KHN0cnVjdCB2ZnNt b3VudCAqbW50LCBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgICAgICBsb2ZmX3Qgc2l6ZSwgdW5z aWduZWQgbG9uZyBmbGFncykKK3sKKwlyZXR1cm4gX19zaG1lbV9maWxlX3NldHVwKG1udCwgbmFt ZSwgc2l6ZSwgZmxhZ3MsIDApOworfQorRVhQT1JUX1NZTUJPTF9HUEwoc2htZW1fZmlsZV9zZXR1 cF93aXRoX21udCk7CisKKy8qKgogICogc2htZW1femVyb19zZXR1cCAtIHNldHVwIGEgc2hhcmVk IGFub255bW91cyBtYXBwaW5nCiAgKiBAdm1hOiB0aGUgdm1hIHRvIGJlIG1tYXBwZWQgaXMgcHJl cGFyZWQgYnkgZG9fbW1hcF9wZ29mZgogICovCkBAIC00MjMxLDcgKzQyNDUsNyBAQCBpbnQgc2ht ZW1femVyb19zZXR1cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAkgKiBhY2Nlc3NpYmxl IHRvIHRoZSB1c2VyIHRocm91Z2ggaXRzIG1hcHBpbmcsIHVzZSBTX1BSSVZBVEUgZmxhZyB0bwog CSAqIGJ5cGFzcyBmaWxlIHNlY3VyaXR5LCBpbiB0aGUgc2FtZSB3YXkgYXMgc2htZW1fa2VybmVs X2ZpbGVfc2V0dXAoKS4KIAkgKi8KLQlmaWxlID0gX19zaG1lbV9maWxlX3NldHVwKCJkZXYvemVy byIsIHNpemUsIHZtYS0+dm1fZmxhZ3MsIFNfUFJJVkFURSk7CisJZmlsZSA9IHNobWVtX2tlcm5l bF9maWxlX3NldHVwKCJkZXYvemVybyIsIHNpemUsIHZtYS0+dm1fZmxhZ3MpOwogCWlmIChJU19F UlIoZmlsZSkpCiAJCXJldHVybiBQVFJfRVJSKGZpbGUpOwogCi0tIAoyLjEzLjMKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f200.google.com (mail-pf0-f200.google.com [209.85.192.200]) by kanga.kvack.org (Postfix) with ESMTP id 407126B025F for ; Tue, 25 Jul 2017 15:21:46 -0400 (EDT) Received: by mail-pf0-f200.google.com with SMTP id e3so165219684pfc.4 for ; Tue, 25 Jul 2017 12:21:46 -0700 (PDT) Received: from mga07.intel.com (mga07.intel.com. [134.134.136.100]) by mx.google.com with ESMTPS id m4si8614213pgn.86.2017.07.25.12.21.45 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Jul 2017 12:21:45 -0700 (PDT) From: Matthew Auld Subject: [PATCH 01/21] mm/shmem: introduce shmem_file_setup_with_mnt Date: Tue, 25 Jul 2017 20:21:13 +0100 Message-Id: <20170725192133.2012-2-matthew.auld@intel.com> In-Reply-To: <20170725192133.2012-1-matthew.auld@intel.com> References: <20170725192133.2012-1-matthew.auld@intel.com> Sender: owner-linux-mm@kvack.org List-ID: To: intel-gfx@lists.freedesktop.org Cc: Joonas Lahtinen , Chris Wilson , Dave Hansen , "Kirill A . Shutemov" , Hugh Dickins , linux-mm@kvack.org We are planning to use our own tmpfs mnt in i915 in place of the shm_mnt, such that we can control the mount options, in particular huge=, which we require to support huge-gtt-pages. So rather than roll our own version of __shmem_file_setup, it would be preferred if we could just give shmem our mnt, and let it do the rest. Signed-off-by: Matthew Auld Cc: Joonas Lahtinen Cc: Chris Wilson Cc: Dave Hansen Cc: Kirill A. Shutemov Cc: Hugh Dickins Cc: linux-mm@kvack.org --- include/linux/shmem_fs.h | 2 ++ mm/shmem.c | 30 ++++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index a7d6bd2a918f..27de676f0b63 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h @@ -53,6 +53,8 @@ extern struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags); extern struct file *shmem_kernel_file_setup(const char *name, loff_t size, unsigned long flags); +extern struct file *shmem_file_setup_with_mnt(struct vfsmount *mnt, + const char *name, loff_t size, unsigned long flags); extern int shmem_zero_setup(struct vm_area_struct *); extern unsigned long shmem_get_unmapped_area(struct file *, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); diff --git a/mm/shmem.c b/mm/shmem.c index b0aa6075d164..293964c1dc6d 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -4133,7 +4133,7 @@ static const struct dentry_operations anon_ops = { .d_dname = simple_dname }; -static struct file *__shmem_file_setup(const char *name, loff_t size, +static struct file *__shmem_file_setup(struct vfsmount *mnt, const char *name, loff_t size, unsigned long flags, unsigned int i_flags) { struct file *res; @@ -4142,8 +4142,8 @@ static struct file *__shmem_file_setup(const char *name, loff_t size, struct super_block *sb; struct qstr this; - if (IS_ERR(shm_mnt)) - return ERR_CAST(shm_mnt); + if (IS_ERR(mnt)) + return ERR_CAST(mnt); if (size < 0 || size > MAX_LFS_FILESIZE) return ERR_PTR(-EINVAL); @@ -4155,8 +4155,8 @@ static struct file *__shmem_file_setup(const char *name, loff_t size, this.name = name; this.len = strlen(name); this.hash = 0; /* will go */ - sb = shm_mnt->mnt_sb; - path.mnt = mntget(shm_mnt); + sb = mnt->mnt_sb; + path.mnt = mntget(mnt); path.dentry = d_alloc_pseudo(sb, &this); if (!path.dentry) goto put_memory; @@ -4201,7 +4201,7 @@ static struct file *__shmem_file_setup(const char *name, loff_t size, */ struct file *shmem_kernel_file_setup(const char *name, loff_t size, unsigned long flags) { - return __shmem_file_setup(name, size, flags, S_PRIVATE); + return __shmem_file_setup(shm_mnt, name, size, flags, S_PRIVATE); } /** @@ -4212,11 +4212,25 @@ struct file *shmem_kernel_file_setup(const char *name, loff_t size, unsigned lon */ struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags) { - return __shmem_file_setup(name, size, flags, 0); + return __shmem_file_setup(shm_mnt, name, size, flags, 0); } EXPORT_SYMBOL_GPL(shmem_file_setup); /** + * shmem_file_setup_with_mnt - get an unlinked file living in tmpfs + * @mnt: the tmpfs mount where the file will be created + * @name: name for dentry (to be seen in /proc//maps + * @size: size to be set for the file + * @flags: VM_NORESERVE suppresses pre-accounting of the entire object size + */ +struct file *shmem_file_setup_with_mnt(struct vfsmount *mnt, const char *name, + loff_t size, unsigned long flags) +{ + return __shmem_file_setup(mnt, name, size, flags, 0); +} +EXPORT_SYMBOL_GPL(shmem_file_setup_with_mnt); + +/** * shmem_zero_setup - setup a shared anonymous mapping * @vma: the vma to be mmapped is prepared by do_mmap_pgoff */ @@ -4231,7 +4245,7 @@ int shmem_zero_setup(struct vm_area_struct *vma) * accessible to the user through its mapping, use S_PRIVATE flag to * bypass file security, in the same way as shmem_kernel_file_setup(). */ - file = __shmem_file_setup("dev/zero", size, vma->vm_flags, S_PRIVATE); + file = shmem_kernel_file_setup("dev/zero", size, vma->vm_flags); if (IS_ERR(file)) return PTR_ERR(file); -- 2.13.3 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org