From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 24B69C3601A for ; Fri, 4 Apr 2025 04:27:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A91F7280003; Fri, 4 Apr 2025 00:27:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A17D8280001; Fri, 4 Apr 2025 00:27:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8B73C280003; Fri, 4 Apr 2025 00:27:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 6A6F1280001 for ; Fri, 4 Apr 2025 00:27:17 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 93348121F32 for ; Fri, 4 Apr 2025 04:27:17 +0000 (UTC) X-FDA: 83295076914.01.F82BBB1 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf27.hostedemail.com (Postfix) with ESMTP id 4C91840005 for ; Fri, 4 Apr 2025 04:27:15 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=cxSCOxsf; dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf27.hostedemail.com: domain of anthony.yznaga@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=anthony.yznaga@oracle.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743740835; a=rsa-sha256; cv=none; b=yJBGEFaoDCm4gINVSHURsdjhsECbSPZEITTyDeKoBXW3aP1IVinvjYqR5PwOFiP7iHN384 mqgBh9RKkgwnVmqt+LpMtI4taDCCbHpo+A/5Je7ALIuVxVFHjDMUS5IEdb50gOAyXcE5He 3uZBtPQ4ddZsY2APR3wh+APc0vhEKBQ= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=cxSCOxsf; dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf27.hostedemail.com: domain of anthony.yznaga@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=anthony.yznaga@oracle.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743740835; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=MGRNlHjm2NzE/Ygwoev9rb9WkAWCS/ZSx8jSVZ/ywzM=; b=n4I+1WbVwdRMRvh8tIu4LHXr6fsfyTyXrNPYYPuNFEZLblnAXDuRvIroKFe1zb/jjIJN6G +4SWGWMM7cHJCRM3JBY1EW7S/6xMqPAAMuJFzb9hkmBarJB0gd5Ycef5fJWdKjY87eQypY iD0rXYSQERly7Et07qqVQDxMQTWEBzE= Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5341ND7v027856; Fri, 4 Apr 2025 02:19:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=corp-2023-11-20; bh=MGRNl Hjm2NzE/Ygwoev9rb9WkAWCS/ZSx8jSVZ/ywzM=; b=cxSCOxsfTYCu7dCZHdjUY 1auFj+JrZqQERrU9rOlhlRZU/iIhe8/AqDt51WtcOo77HHNblyzS+79uDMIaLvCw 2tb0h05n+851Wz/3Ff4fj4SOYs0qEbOecahI5Wt7rpNRLcX2mOLN2Kxx3Qsgm48o 88LuB+/eDQ3gSNKPhL4AO4exixU3DQEg/Bf26j3nBKmUm/yN9TEGMA7wKueDpRW8 Anp1GRHYpP3w0oH+c67RS8aeXIhX0ijRUn/J1jaU/CeBbzj36KfcC7DUX0E3cPyk 7GW+iRxZ70ZwWKDzCg5guf6TK+KHz+PsrbfnxJRH9M3PWDhqKBn9fAbZnlGIxN// A== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 45p7f0p1nr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 04 Apr 2025 02:19:20 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5340Ztw7017309; Fri, 4 Apr 2025 02:19:18 GMT Received: from pps.reinject (localhost [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 45t2pspjb5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 04 Apr 2025 02:19:18 +0000 Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 5342H8gk030074; Fri, 4 Apr 2025 02:19:18 GMT Received: from localhost.localdomain (ca-dev60.us.oracle.com [10.129.136.27]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 45t2pspj73-6; Fri, 04 Apr 2025 02:19:17 +0000 From: Anthony Yznaga To: akpm@linux-foundation.org, willy@infradead.org, markhemm@googlemail.com, viro@zeniv.linux.org.uk, david@redhat.com, khalid@kernel.org Cc: anthony.yznaga@oracle.com, andreyknvl@gmail.com, dave.hansen@intel.com, luto@kernel.org, brauner@kernel.org, arnd@arndb.de, ebiederm@xmission.com, catalin.marinas@arm.com, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mhiramat@kernel.org, rostedt@goodmis.org, vasily.averin@linux.dev, xhao@linux.alibaba.com, pcc@google.com, neilb@suse.de, maz@kernel.org Subject: [PATCH v2 05/20] mm/mshare: add ways to set the size of an mshare region Date: Thu, 3 Apr 2025 19:18:47 -0700 Message-ID: <20250404021902.48863-6-anthony.yznaga@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250404021902.48863-1-anthony.yznaga@oracle.com> References: <20250404021902.48863-1-anthony.yznaga@oracle.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-04_01,2025-04-03_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 mlxscore=0 spamscore=0 adultscore=0 suspectscore=0 mlxlogscore=999 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502280000 definitions=main-2504040014 X-Proofpoint-ORIG-GUID: 9H4YH3MygLBCUPRBRZGsso8O3POOnB6W X-Proofpoint-GUID: 9H4YH3MygLBCUPRBRZGsso8O3POOnB6W X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 4C91840005 X-Stat-Signature: 7rfjdt9tkqj1m6o75i88jc9eenaxprds X-Rspam-User: X-HE-Tag: 1743740835-319346 X-HE-Meta: U2FsdGVkX1/NBoSY8SGNQp+nbV4/rRzfi1JOZ9HE7mYkwgFeo2s+MJb4IcisQQENhAmdZaFtvUSuACMFx+atqJYPQOQSViFW6z6XE1QgkvDtz9DF1MQu4q+EJ3/bZZSgJefpV7lflBFLsueeMQC9ZV3xukW4vF8Yr2V015OffN1ToiflrgOS7whz4U8r2DIoIXRNZvx4H80NCDZwX2WN/kA3kWkqndyfqu2vQkZNSZHPoS69C1+f5DNvf32ojazLErpgCUjO+NRO9Su0sAtCSeDrGEmr2SP4o/5Wx3jpCPGhBYK0hx38XoODoi/QjOfYtJlz47bn0sSwOS5vylv3T+M6KCDYIIT2kzZDGTJsZsND0/+NXXY6qYwNn56y7bD7uzMlecdcW8DPzAM5Tv8Br5bHbqnzYCU488hn5usA9JEXFzZWTcWJISTKmelhctHk6YEFbKt4NoovZ/R/xQRHtGYvdPjCOQn3l/f9XWcYdYs9BcUx/8aiys1z7og5JSnLuEYhF7m24yFTtm75duYtxnkxr77oTXMb8vFFKRyt0B6QPVnXXXjFvd/Nkg+W7m1CVUYH0aLt/KTdKO1poZ6fXqAH/+G0dA95RoXyU0CaMZNkWrLywNwE7taAMmBFSjdnI1pAwN//RaEid7/KeI+QzdG7/euyjQqDm4a7p8Zeqm6DVhfgl6JwJ6rx1OOXw7AcELwLcSi/LROOJkxEz3EeOtmZryvsVH6oxOUmczxtRvJnTwqcXbLCYqCSUgNWoO+2DHO4qesYGMsNKjzoGd9ZAxIl5/9Do96LC1LUFMTYvnHcaQs3wKtLRnAFQdM2jgoJllazML28eqASRIjXG+TryoV0UTXWoVsiyzRbIUnWcGQ37KvROY5ZV32HOGsAjurUpHcJLPuCKu5c1CcvlCtaLtyVJMc86ZbpcDv3nTyUhSrtSj1qnhBi9DYfQ/O1ycVwRp6jQt3Noefr5z/lfdq GML6azl9 Xo187IfYcNq056YrvgjKJf7LKnl9mSFJLLvDjPd8IZnyoFqDhqcEXlJZJFI2nAclw983chpPuBkvP7LNQhHgSx1Lnfk/7qistk7Sl8gfkUEZcb2nje9J1xVl+jVnr6smQDR6S+nEKBWP8n8Nw/3DQisNPZgQ/0dk+4Q+9bTA6WuD45f57FHCQlOrgNANi6vu1kIzFL/jIP1JmxSsr20PvT7oSceM85jUXBRIYhUJggnTohRwIoTgdfPjC7S+Ay7UD743VOb3XNY7n2qWxqC5nLo3DPY+1beH0rrNDZ7CIhCW8F025LXXXunlKiQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add file and inode operations to allow the size of an mshare region to be set fallocate() or ftruncate(). Signed-off-by: Anthony Yznaga --- mm/mshare.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/mm/mshare.c b/mm/mshare.c index 551d12cb9fdb..5eed18bc3b51 100644 --- a/mm/mshare.c +++ b/mm/mshare.c @@ -16,18 +16,72 @@ #include #include #include +#include const unsigned long mshare_align = P4D_SIZE; +#define MSHARE_INITIALIZED 0x1 + struct mshare_data { struct mm_struct *mm; + unsigned long size; + unsigned long flags; }; +static int msharefs_set_size(struct mshare_data *m_data, unsigned long size) +{ + int error = -EINVAL; + + if (test_bit(MSHARE_INITIALIZED, &m_data->flags)) + goto out; + + if (m_data->size || (size & (mshare_align - 1))) + goto out; + + m_data->mm->task_size = m_data->size = size; + + set_bit(MSHARE_INITIALIZED, &m_data->flags); + error = 0; +out: + return error; +} + +static long msharefs_fallocate(struct file *file, int mode, loff_t offset, + loff_t len) +{ + struct inode *inode = file_inode(file); + struct mshare_data *m_data = inode->i_private; + int error; + + if (mode != FALLOC_FL_ALLOCATE_RANGE) + return -EOPNOTSUPP; + + if (offset) + return -EINVAL; + + inode_lock(inode); + + error = inode_newsize_ok(inode, len); + if (error) + goto out; + + error = msharefs_set_size(m_data, len); + if (error) + goto out; + + i_size_write(inode, len); +out: + inode_unlock(inode); + + return error; +} + static const struct inode_operations msharefs_dir_inode_ops; static const struct inode_operations msharefs_file_inode_ops; static const struct file_operations msharefs_file_operations = { .open = simple_open, + .fallocate = msharefs_fallocate, }; static int @@ -123,6 +177,32 @@ msharefs_mknod(struct mnt_idmap *idmap, struct inode *dir, return 0; } +static int msharefs_setattr(struct mnt_idmap *idmap, + struct dentry *dentry, struct iattr *attr) +{ + struct inode *inode = d_inode(dentry); + struct mshare_data *m_data = inode->i_private; + unsigned int ia_valid = attr->ia_valid; + int error; + + error = setattr_prepare(idmap, dentry, attr); + if (error) + return error; + + if (ia_valid & ATTR_SIZE) { + loff_t newsize = attr->ia_size; + + error = msharefs_set_size(m_data, newsize); + if (error) + return error; + + i_size_write(inode, newsize); + } + + setattr_copy(idmap, inode, attr); + return 0; +} + static int msharefs_create(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, bool excl) @@ -177,7 +257,7 @@ msharefs_unlink(struct inode *dir, struct dentry *dentry) } static const struct inode_operations msharefs_file_inode_ops = { - .setattr = simple_setattr, + .setattr = msharefs_setattr, }; static const struct inode_operations msharefs_dir_inode_ops = { -- 2.43.5