Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1502124ybl; Fri, 6 Dec 2019 19:25:27 -0800 (PST) X-Google-Smtp-Source: APXvYqyTgYbpx5z9TjntxhFtUGJF95f09dwyoPQ1tcOt0YWeP/o6chL6aG4FLQjANfTwblIiv7l9 X-Received: by 2002:aca:889:: with SMTP id 131mr15086781oii.3.1575689127370; Fri, 06 Dec 2019 19:25:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575689127; cv=none; d=google.com; s=arc-20160816; b=bhidhy3fgdRhLcplR3P1mS3grK2U8+I0dhlKdc++CkJpigKiCMbvGUGIP/uW9JHyAz GL4LVi1XnHwFh8Mu/BxaMHuUk+h1epKqRF73VcuKO8qZp4eSUANpZNzSs3miNoEtk0gE qIciBFYFdedPMofULFUzT1d11UuueZnqebYMurKyUmLLZKiIUmJ/7mkROsvzi3REtNmC c9I7fe2zhBD4CL1umy/tZvJCcltFGrjdAH8fUX/X+AquBNUyN9OBCr6D9gU6KzozgFZu 8fzSvOlNzscAR4j1fNtXAuOoRq8Fa6WwAdwW1CokY6i7xmVSFpjPlVrOU5GUZsaKA2n6 Srcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date:from :references:cc:to:subject; bh=IE4AM9FEm65DkqC5mSRFqP5AOH9oFzXO9bcgXiMACzo=; b=XEEfXo2HD1e/2PWXQzdzMTA9DsqBr/5d3sD6b8Nijn3/zuEMh87FyHD48lj5yHv+ap SumKbzrZ9HJ3fCRp9DL38kPD8f2mPpuQPIC8wD3pKErdfBl46l0U+pl2t3wCJ1J0OkWS nSeGCKX+Tx3VL8qOdy9qu8Dt9NGtRRGx3WMqbskgiZxVTx4iqjrzKlCtoFEViF2GGa4h 16W0fslqEGsY78BB4Wc0vpt1bWi850pKUnGKrRlthC6dczBWl4WFvev941e1JtPrHxiN 00A6nle1Sio29SbSHt96QqClrtIwHbtOdsPstOSdl1AzCGDYJ7R4naIWx5MwUvR7g/oD ffLg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q22si9217580otm.304.2019.12.06.19.24.41; Fri, 06 Dec 2019 19:25:27 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726418AbfLGDWJ (ORCPT + 99 others); Fri, 6 Dec 2019 22:22:09 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:16130 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726375AbfLGDWJ (ORCPT ); Fri, 6 Dec 2019 22:22:09 -0500 Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xB737Gqd108761 for ; Fri, 6 Dec 2019 22:22:08 -0500 Received: from e06smtp02.uk.ibm.com (e06smtp02.uk.ibm.com [195.75.94.98]) by mx0a-001b2d01.pphosted.com with ESMTP id 2wq9mhqhp1-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 06 Dec 2019 22:22:08 -0500 Received: from localhost by e06smtp02.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Sat, 7 Dec 2019 03:22:06 -0000 Received: from b06avi18878370.portsmouth.uk.ibm.com (9.149.26.194) by e06smtp02.uk.ibm.com (192.168.101.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Sat, 7 Dec 2019 03:22:02 -0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06avi18878370.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id xB73M1vt47448568 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 7 Dec 2019 03:22:01 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 63BE9AE04D; Sat, 7 Dec 2019 03:22:01 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B91A8AE045; Sat, 7 Dec 2019 03:21:59 +0000 (GMT) Received: from localhost.localdomain (unknown [9.85.92.151]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Sat, 7 Dec 2019 03:21:59 +0000 (GMT) Subject: Re: [PATCH v4 2/6] sysfs: wrap __compat_only_sysfs_link_entry_to_kobj function to change the symlink name To: Greg KH Cc: corbet@lwn.net, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org, mahesh@linux.vnet.ibm.com, hbathini@linux.ibm.com References: <20191206122434.29587-1-sourabhjain@linux.ibm.com> <20191206122434.29587-3-sourabhjain@linux.ibm.com> <20191206124642.GB1360047@kroah.com> <3aabdf19-ccbf-e99a-c560-2b110e8b536a@linux.ibm.com> <20191206191420.GA192422@kroah.com> From: Sourabh Jain Date: Sat, 7 Dec 2019 08:51:58 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <20191206191420.GA192422@kroah.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 x-cbid: 19120703-0008-0000-0000-0000033E70F5 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19120703-0009-0000-0000-00004A5D99AB Message-Id: <51893cad-e8df-a240-bc60-db245420d811@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-12-06_08:2019-12-05,2019-12-06 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 phishscore=0 mlxscore=0 bulkscore=0 clxscore=1015 spamscore=0 impostorscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 priorityscore=1501 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1912070022 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 12/7/19 12:44 AM, Greg KH wrote: > On Fri, Dec 06, 2019 at 11:57:53PM +0530, Sourabh Jain wrote: >> >> >> On 12/6/19 6:16 PM, Greg KH wrote: >>> On Fri, Dec 06, 2019 at 05:54:30PM +0530, Sourabh Jain wrote: >>>> The __compat_only_sysfs_link_entry_to_kobj function creates a symlink to a >>>> kobject but doesn't provide an option to change the symlink file name. >>>> >>>> This patch adds a wrapper function create_sysfs_symlink_entry_to_kobj that >>>> extends the __compat_only_sysfs_link_entry_to_kobj functionality which >>>> allows function caller to customize the symlink name. >>>> >>>> Signed-off-by: Sourabh Jain >>>> --- >>>> fs/sysfs/group.c | 28 +++++++++++++++++++++++++--- >>>> include/linux/sysfs.h | 12 ++++++++++++ >>>> 2 files changed, 37 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c >>>> index d41c21fef138..5eb38145b957 100644 >>>> --- a/fs/sysfs/group.c >>>> +++ b/fs/sysfs/group.c >>>> @@ -424,6 +424,25 @@ EXPORT_SYMBOL_GPL(sysfs_remove_link_from_group); >>>> int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj, >>>> struct kobject *target_kobj, >>>> const char *target_name) >>>> +{ >>>> + return create_sysfs_symlink_entry_to_kobj(kobj, target_kobj, >>>> + target_name, NULL); >>>> +} >>>> +EXPORT_SYMBOL_GPL(__compat_only_sysfs_link_entry_to_kobj); >>>> + >>>> +/** >>>> + * create_sysfs_symlink_entry_to_kobj - add a symlink to a kobject pointing >>>> + * to a group or an attribute >>>> + * @kobj: The kobject containing the group. >>>> + * @target_kobj: The target kobject. >>>> + * @target_name: The name of the target group or attribute. >>>> + * @symlink_name: The name of the symlink file (target_name will be >>>> + * considered if symlink_name is NULL). >>>> + */ >>>> +int create_sysfs_symlink_entry_to_kobj(struct kobject *kobj, >>>> + struct kobject *target_kobj, >>>> + const char *target_name, >>>> + const char *symlink_name) >>>> { >>>> struct kernfs_node *target; >>>> struct kernfs_node *entry; >>>> @@ -448,12 +467,15 @@ int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj, >>>> return -ENOENT; >>>> } >>>> >>>> - link = kernfs_create_link(kobj->sd, target_name, entry); >>>> + if (!symlink_name) >>>> + symlink_name = target_name; >>>> + >>>> + link = kernfs_create_link(kobj->sd, symlink_name, entry); >>>> if (IS_ERR(link) && PTR_ERR(link) == -EEXIST) >>>> - sysfs_warn_dup(kobj->sd, target_name); >>>> + sysfs_warn_dup(kobj->sd, symlink_name); >>>> >>>> kernfs_put(entry); >>>> kernfs_put(target); >>>> return PTR_ERR_OR_ZERO(link); >>>> } >>>> -EXPORT_SYMBOL_GPL(__compat_only_sysfs_link_entry_to_kobj); >>>> +EXPORT_SYMBOL_GPL(create_sysfs_symlink_entry_to_kobj); >>>> diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h >>>> index 5420817ed317..123c6f10333a 100644 >>>> --- a/include/linux/sysfs.h >>>> +++ b/include/linux/sysfs.h >>>> @@ -300,6 +300,10 @@ void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name, >>>> int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj, >>>> struct kobject *target_kobj, >>>> const char *target_name); >>>> +int create_sysfs_symlink_entry_to_kobj(struct kobject *kobj, >>>> + struct kobject *target_kobj, >>>> + const char *target_name, >>>> + const char *symlink_name); >>> >>> sysfs_create_symlink_entry_to_kobj()? >>> >>> I can't remember why we put __compat_only there, perhaps because we do >>> not want people to really use this unless you really really have to? >> >> We don't have much option here. I tried replicating the sysfs files >> in older patch series but creating symlink at old location is much >> better approach. >> >> The __compat_only_sysfs_link_entry_to_kobj function is pretty generic, >> unable to understand the reason behind restricting its usage. >> >>> >>> So then keep compat_only here as well? >> >> Sure, I will rename the wrapper function. >> >> But how about changing the function signature instead of creating >> a wrapper function? >> >> Considering the fact that there are only two places this function >> has called. >> >>> >>> What breaks if you remove those undocumented sysfs files? What >>> userspace tool do you have that will even notice? >> >> The scripts used in kdump service need those sysfs files to control >> the dump collection. So we can't just move the sysfs files to the >> new location. > > If you can not change them, then just document them and live with it. > Why do this extra work to create a symlink for something you will never > use? Eventually the scripts will change but I think it is better to have some overlap time to avoid breaking those scripts. Thanks, Sourabh Jain