From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 01/22] mm/shmem: introduce shmem_file_setup_with_mnt Date: Tue, 15 Aug 2017 19:11:54 +0100 Message-ID: <20170815181215.18310-2-matthew.auld@intel.com> References: <20170815181215.18310-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4A6E96E1AF for ; Tue, 15 Aug 2017 18:16:56 +0000 (UTC) In-Reply-To: <20170815181215.18310-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 aCBEaWNraW5zIDxodWdoZEBnb29nbGUuY29tPgpDYzogbGludXgtbW1Aa3ZhY2sub3JnCkFja2Vk LWJ5OiBLaXJpbGwgQS4gU2h1dGVtb3YgPGtpcmlsbC5zaHV0ZW1vdkBsaW51eC5pbnRlbC5jb20+ ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRl bC5jb20+Ci0tLQogaW5jbHVkZS9saW51eC9zaG1lbV9mcy5oIHwgIDIgKysKIG1tL3NobWVtLmMg ICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogMiBmaWxl cyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvc2htZW1fZnMuaCBiL2luY2x1ZGUvbGludXgvc2htZW1fZnMuaAppbmRl eCBhN2Q2YmQyYTkxOGYuLjI3ZGU2NzZmMGI2MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9z aG1lbV9mcy5oCisrKyBiL2luY2x1ZGUvbGludXgvc2htZW1fZnMuaApAQCAtNTMsNiArNTMsOCBA QCBleHRlcm4gc3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXAoY29uc3QgY2hhciAqbmFtZSwK IAkJCQkJbG9mZl90IHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwogZXh0ZXJuIHN0cnVjdCBm aWxlICpzaG1lbV9rZXJuZWxfZmlsZV9zZXR1cChjb25zdCBjaGFyICpuYW1lLCBsb2ZmX3Qgc2l6 ZSwKIAkJCQkJICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworZXh0ZXJuIHN0cnVjdCBmaWxlICpz aG1lbV9maWxlX3NldHVwX3dpdGhfbW50KHN0cnVjdCB2ZnNtb3VudCAqbW50LAorCQljb25zdCBj aGFyICpuYW1lLCBsb2ZmX3Qgc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFncyk7CiBleHRlcm4gaW50 IHNobWVtX3plcm9fc2V0dXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwogZXh0ZXJuIHVuc2ln bmVkIGxvbmcgc2htZW1fZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQg bG9uZyBhZGRyLAogCQl1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgbG9uZyBwZ29mZiwgdW5z aWduZWQgbG9uZyBmbGFncyk7CmRpZmYgLS1naXQgYS9tbS9zaG1lbS5jIGIvbW0vc2htZW0uYwpp bmRleCA2NTQwZTU5ODI0NDQuLjA5NzVlNjVlYTYxYyAxMDA2NDQKLS0tIGEvbW0vc2htZW0uYwor KysgYi9tbS9zaG1lbS5jCkBAIC00MTQxLDcgKzQxNDEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGRlbnRyeV9vcGVyYXRpb25zIGFub25fb3BzID0gewogCS5kX2RuYW1lID0gc2ltcGxlX2RuYW1l CiB9OwogCi1zdGF0aWMgc3RydWN0IGZpbGUgKl9fc2htZW1fZmlsZV9zZXR1cChjb25zdCBjaGFy ICpuYW1lLCBsb2ZmX3Qgc2l6ZSwKK3N0YXRpYyBzdHJ1Y3QgZmlsZSAqX19zaG1lbV9maWxlX3Nl dHVwKHN0cnVjdCB2ZnNtb3VudCAqbW50LCBjb25zdCBjaGFyICpuYW1lLCBsb2ZmX3Qgc2l6ZSwK IAkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncywgdW5zaWduZWQgaW50IGlfZmxhZ3MpCiB7 CiAJc3RydWN0IGZpbGUgKnJlczsKQEAgLTQxNTAsOCArNDE1MCw4IEBAIHN0YXRpYyBzdHJ1Y3Qg ZmlsZSAqX19zaG1lbV9maWxlX3NldHVwKGNvbnN0IGNoYXIgKm5hbWUsIGxvZmZfdCBzaXplLAog CXN0cnVjdCBzdXBlcl9ibG9jayAqc2I7CiAJc3RydWN0IHFzdHIgdGhpczsKIAotCWlmIChJU19F UlIoc2htX21udCkpCi0JCXJldHVybiBFUlJfQ0FTVChzaG1fbW50KTsKKwlpZiAoSVNfRVJSKG1u dCkpCisJCXJldHVybiBFUlJfQ0FTVChtbnQpOwogCiAJaWYgKHNpemUgPCAwIHx8IHNpemUgPiBN QVhfTEZTX0ZJTEVTSVpFKQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKQEAgLTQxNjMsOCAr NDE2Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZSAqX19zaG1lbV9maWxlX3NldHVwKGNvbnN0IGNo YXIgKm5hbWUsIGxvZmZfdCBzaXplLAogCXRoaXMubmFtZSA9IG5hbWU7CiAJdGhpcy5sZW4gPSBz dHJsZW4obmFtZSk7CiAJdGhpcy5oYXNoID0gMDsgLyogd2lsbCBnbyAqLwotCXNiID0gc2htX21u dC0+bW50X3NiOwotCXBhdGgubW50ID0gbW50Z2V0KHNobV9tbnQpOworCXNiID0gbW50LT5tbnRf c2I7CisJcGF0aC5tbnQgPSBtbnRnZXQobW50KTsKIAlwYXRoLmRlbnRyeSA9IGRfYWxsb2NfcHNl dWRvKHNiLCAmdGhpcyk7CiAJaWYgKCFwYXRoLmRlbnRyeSkKIAkJZ290byBwdXRfbWVtb3J5OwpA QCAtNDIwOSw3ICs0MjA5LDcgQEAgc3RhdGljIHN0cnVjdCBmaWxlICpfX3NobWVtX2ZpbGVfc2V0 dXAoY29uc3QgY2hhciAqbmFtZSwgbG9mZl90IHNpemUsCiAgKi8KIHN0cnVjdCBmaWxlICpzaG1l bV9rZXJuZWxfZmlsZV9zZXR1cChjb25zdCBjaGFyICpuYW1lLCBsb2ZmX3Qgc2l6ZSwgdW5zaWdu ZWQgbG9uZyBmbGFncykKIHsKLQlyZXR1cm4gX19zaG1lbV9maWxlX3NldHVwKG5hbWUsIHNpemUs IGZsYWdzLCBTX1BSSVZBVEUpOworCXJldHVybiBfX3NobWVtX2ZpbGVfc2V0dXAoc2htX21udCwg bmFtZSwgc2l6ZSwgZmxhZ3MsIFNfUFJJVkFURSk7CiB9CiAKIC8qKgpAQCAtNDIyMCwxMSArNDIy MCwyNSBAQCBzdHJ1Y3QgZmlsZSAqc2htZW1fa2VybmVsX2ZpbGVfc2V0dXAoY29uc3QgY2hhciAq bmFtZSwgbG9mZl90IHNpemUsIHVuc2lnbmVkIGxvbgogICovCiBzdHJ1Y3QgZmlsZSAqc2htZW1f ZmlsZV9zZXR1cChjb25zdCBjaGFyICpuYW1lLCBsb2ZmX3Qgc2l6ZSwgdW5zaWduZWQgbG9uZyBm bGFncykKIHsKLQlyZXR1cm4gX19zaG1lbV9maWxlX3NldHVwKG5hbWUsIHNpemUsIGZsYWdzLCAw KTsKKwlyZXR1cm4gX19zaG1lbV9maWxlX3NldHVwKHNobV9tbnQsIG5hbWUsIHNpemUsIGZsYWdz LCAwKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHNobWVtX2ZpbGVfc2V0dXApOwogCiAvKioKKyAq IHNobWVtX2ZpbGVfc2V0dXBfd2l0aF9tbnQgLSBnZXQgYW4gdW5saW5rZWQgZmlsZSBsaXZpbmcg aW4gdG1wZnMKKyAqIEBtbnQ6IHRoZSB0bXBmcyBtb3VudCB3aGVyZSB0aGUgZmlsZSB3aWxsIGJl IGNyZWF0ZWQKKyAqIEBuYW1lOiBuYW1lIGZvciBkZW50cnkgKHRvIGJlIHNlZW4gaW4gL3Byb2Mv PHBpZD4vbWFwcworICogQHNpemU6IHNpemUgdG8gYmUgc2V0IGZvciB0aGUgZmlsZQorICogQGZs YWdzOiBWTV9OT1JFU0VSVkUgc3VwcHJlc3NlcyBwcmUtYWNjb3VudGluZyBvZiB0aGUgZW50aXJl IG9iamVjdCBzaXplCisgKi8KK3N0cnVjdCBmaWxlICpzaG1lbV9maWxlX3NldHVwX3dpdGhfbW50 KHN0cnVjdCB2ZnNtb3VudCAqbW50LCBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgICAgICBsb2Zm X3Qgc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlyZXR1cm4gX19zaG1lbV9maWxlX3Nl dHVwKG1udCwgbmFtZSwgc2l6ZSwgZmxhZ3MsIDApOworfQorRVhQT1JUX1NZTUJPTF9HUEwoc2ht ZW1fZmlsZV9zZXR1cF93aXRoX21udCk7CisKKy8qKgogICogc2htZW1femVyb19zZXR1cCAtIHNl dHVwIGEgc2hhcmVkIGFub255bW91cyBtYXBwaW5nCiAgKiBAdm1hOiB0aGUgdm1hIHRvIGJlIG1t YXBwZWQgaXMgcHJlcGFyZWQgYnkgZG9fbW1hcF9wZ29mZgogICovCkBAIC00MjM5LDcgKzQyNTMs NyBAQCBpbnQgc2htZW1femVyb19zZXR1cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAkg KiBhY2Nlc3NpYmxlIHRvIHRoZSB1c2VyIHRocm91Z2ggaXRzIG1hcHBpbmcsIHVzZSBTX1BSSVZB VEUgZmxhZyB0bwogCSAqIGJ5cGFzcyBmaWxlIHNlY3VyaXR5LCBpbiB0aGUgc2FtZSB3YXkgYXMg c2htZW1fa2VybmVsX2ZpbGVfc2V0dXAoKS4KIAkgKi8KLQlmaWxlID0gX19zaG1lbV9maWxlX3Nl dHVwKCJkZXYvemVybyIsIHNpemUsIHZtYS0+dm1fZmxhZ3MsIFNfUFJJVkFURSk7CisJZmlsZSA9 IHNobWVtX2tlcm5lbF9maWxlX3NldHVwKCJkZXYvemVybyIsIHNpemUsIHZtYS0+dm1fZmxhZ3Mp OwogCWlmIChJU19FUlIoZmlsZSkpCiAJCXJldHVybiBQVFJfRVJSKGZpbGUpOwogCi0tIAoyLjEz LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f70.google.com (mail-pg0-f70.google.com [74.125.83.70]) by kanga.kvack.org (Postfix) with ESMTP id B1FBF6B02B4 for ; Tue, 15 Aug 2017 14:16:57 -0400 (EDT) Received: by mail-pg0-f70.google.com with SMTP id u199so28705599pgb.13 for ; Tue, 15 Aug 2017 11:16:57 -0700 (PDT) Received: from mga02.intel.com (mga02.intel.com. [134.134.136.20]) by mx.google.com with ESMTPS id 71si5727721pga.0.2017.08.15.11.16.55 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 15 Aug 2017 11:16:56 -0700 (PDT) From: Matthew Auld Subject: [PATCH 01/22] mm/shmem: introduce shmem_file_setup_with_mnt Date: Tue, 15 Aug 2017 19:11:54 +0100 Message-Id: <20170815181215.18310-2-matthew.auld@intel.com> In-Reply-To: <20170815181215.18310-1-matthew.auld@intel.com> References: <20170815181215.18310-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 Acked-by: Kirill A. Shutemov Reviewed-by: Joonas Lahtinen --- 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 6540e5982444..0975e65ea61c 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -4141,7 +4141,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; @@ -4150,8 +4150,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); @@ -4163,8 +4163,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; @@ -4209,7 +4209,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); } /** @@ -4220,11 +4220,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 */ @@ -4239,7 +4253,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.4 -- 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