Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp1184709ybh; Thu, 16 Jul 2020 05:41:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwL+HUqECd2BoJ7n7uXditcWkzq+9doETvwgOU5BRSS6AR4Dhg5vlfT6D/RJr6lCddq0dNd X-Received: by 2002:a17:907:94cf:: with SMTP id dn15mr3726844ejc.457.1594903285910; Thu, 16 Jul 2020 05:41:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594903285; cv=none; d=google.com; s=arc-20160816; b=vj691B9xuYDq4UJXLj3ZbZdv4GZ69Ug8cz6hK3fpEwjBojSqSiBRLZyx3LOzZWC0en cFHSRL7qg8t95mCvwq2MzlVVD3W2TDN8Jn9F3W7LM1YA+86lvIoXqtyzuZhFTTAJGUFy PuSaX1P/pPEHdDRTorCsdc3R1OKiYAX1Y7JhBeN7UYm2XzGLKQ4jEqvr8XcmqQri+MzA LkoAvC91ywOzZiBPQxwJ0tL3GtmGJyuFaO0nsKAcy+NuMeRDlSsYODYIOI/geb6V8r+r Ly+6rx8HK9DQbM0PRWrCHNe2UZ+4EycxWR0JLDVD63xOOm/zAD/duv8HOoYO8Xw9DMtY nKJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=LmqWpxV+jSiMR0Czbp0CfkRXPZ/QgqD9N6HbyNKcKGg=; b=bnx67zmljEitPYcuc9WDu4LsqyyWh7aUlXdvVdKDggHGSdxyYVlcfknUhmKXipjLwh VVgenG2Kj370BY2SGtUY4S4hv1RSxpa8fc1Y0KOFy8zTWONQMgT+LNtbDFsySLJ83PaB x4fH81YNVbMZzJqIGKEkKWeodVAQMkZXU/Z9L8x1uU9iDA1cKrx5p3nqmAhQO7sOHuBm 3YANJ6BDJ5LhxNTfjwl+B/esL39RVzY31qWNdJ+wJnihHkrIOtFe5D+QTAOcBzC3Bzf2 i6706lmHI4cxYpiAf7Q5fIj+iSKCSCUnh0Uj3gpKQ/OmZK0DfoH2TOHvyNKOHdnMVhdG W6OA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n6si3180668edb.96.2020.07.16.05.41.03; Thu, 16 Jul 2020 05:41:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728534AbgGPMjw (ORCPT + 99 others); Thu, 16 Jul 2020 08:39:52 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:7875 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728188AbgGPMjw (ORCPT ); Thu, 16 Jul 2020 08:39:52 -0400 Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id B58E3E23ED3454BD6129; Thu, 16 Jul 2020 20:39:44 +0800 (CST) Received: from [127.0.0.1] (10.57.22.126) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.487.0; Thu, 16 Jul 2020 20:39:37 +0800 Subject: Re: [PATCH -next] scsi: hisi_sas: Convert to DEFINE_SHOW_ATTRIBUTE To: Qinglang Miao , Greg Kroah-Hartman , John Garry CC: , References: <20200716084714.7872-1-miaoqinglang@huawei.com> From: luojiaxing Message-ID: Date: Thu, 16 Jul 2020 20:39:37 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <20200716084714.7872-1-miaoqinglang@huawei.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Originating-IP: [10.57.22.126] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Qinglang On 2020/7/16 16:47, Qinglang Miao wrote: > From: Yongqiang Liu > > Use DEFINE_SHOW_ATTRIBUTE macro to simplify the code. > > Signed-off-by: Yongqiang Liu > --- > drivers/scsi/hisi_sas/hisi_sas_main.c | 137 ++------------------------ > 1 file changed, 10 insertions(+), 127 deletions(-) > > diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c > index 852d2620e..f50b0c78f 100644 > --- a/drivers/scsi/hisi_sas/hisi_sas_main.c > +++ b/drivers/scsi/hisi_sas/hisi_sas_main.c > @@ -2870,19 +2870,7 @@ static int hisi_sas_debugfs_global_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_global_open(struct inode *inode, struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_global_show, > - inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_global_fops = { > - .open = hisi_sas_debugfs_global_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; I saw that your code is different from code in kernel 5.8-rc4, and it should be as follow: static const struct file_operations hisi_sas_debugfs_global_fops = {     .open = hisi_sas_debugfs_global_open,     .read = seq_read,     .llseek = seq_lseek,     .release = single_release,     .owner = THIS_MODULE, }; Plus, if we use this macro directly when we write this code, it really makes the code simpler. But if we accept the cleanup now, we might need to consider evading compilation failures when we merge these code back to some older kernel (e.g kernel 4.14 for centOS 7.6). I think this marco is introduced into kernel 4.16-rc2. So I don't see much additional benefit to us from this simplification. But this marco is quite helpful and I think I will use it somewhere else. Thanks Jiaxing > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_global); > > static int hisi_sas_debugfs_axi_show(struct seq_file *s, void *p) > { > @@ -2897,19 +2885,7 @@ static int hisi_sas_debugfs_axi_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_axi_open(struct inode *inode, struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_axi_show, > - inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_axi_fops = { > - .open = hisi_sas_debugfs_axi_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_axi); > > static int hisi_sas_debugfs_ras_show(struct seq_file *s, void *p) > { > @@ -2924,19 +2900,7 @@ static int hisi_sas_debugfs_ras_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_ras_open(struct inode *inode, struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_ras_show, > - inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_ras_fops = { > - .open = hisi_sas_debugfs_ras_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_ras); > > static int hisi_sas_debugfs_port_show(struct seq_file *s, void *p) > { > @@ -2951,18 +2915,7 @@ static int hisi_sas_debugfs_port_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_port_open(struct inode *inode, struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_port_show, inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_port_fops = { > - .open = hisi_sas_debugfs_port_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_port); > > static void hisi_sas_show_row_64(struct seq_file *s, int index, > int sz, __le64 *ptr) > @@ -3019,18 +2972,7 @@ static int hisi_sas_debugfs_cq_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_cq_open(struct inode *inode, struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_cq_show, inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_cq_fops = { > - .open = hisi_sas_debugfs_cq_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_cq); > > static void hisi_sas_dq_show_slot(struct seq_file *s, int slot, void *dq_ptr) > { > @@ -3052,18 +2994,7 @@ static int hisi_sas_debugfs_dq_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_dq_open(struct inode *inode, struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_dq_show, inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_dq_fops = { > - .open = hisi_sas_debugfs_dq_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_dq); > > static int hisi_sas_debugfs_iost_show(struct seq_file *s, void *p) > { > @@ -3080,18 +3011,7 @@ static int hisi_sas_debugfs_iost_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_iost_open(struct inode *inode, struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_iost_show, inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_iost_fops = { > - .open = hisi_sas_debugfs_iost_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_iost); > > static int hisi_sas_debugfs_iost_cache_show(struct seq_file *s, void *p) > { > @@ -3117,20 +3037,7 @@ static int hisi_sas_debugfs_iost_cache_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_iost_cache_open(struct inode *inode, > - struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_iost_cache_show, > - inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_iost_cache_fops = { > - .open = hisi_sas_debugfs_iost_cache_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_iost_cache); > > static int hisi_sas_debugfs_itct_show(struct seq_file *s, void *p) > { > @@ -3147,18 +3054,7 @@ static int hisi_sas_debugfs_itct_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_itct_open(struct inode *inode, struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_itct_show, inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_itct_fops = { > - .open = hisi_sas_debugfs_itct_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_itct); > > static int hisi_sas_debugfs_itct_cache_show(struct seq_file *s, void *p) > { > @@ -3184,20 +3080,7 @@ static int hisi_sas_debugfs_itct_cache_show(struct seq_file *s, void *p) > return 0; > } > > -static int hisi_sas_debugfs_itct_cache_open(struct inode *inode, > - struct file *filp) > -{ > - return single_open(filp, hisi_sas_debugfs_itct_cache_show, > - inode->i_private); > -} > - > -static const struct file_operations hisi_sas_debugfs_itct_cache_fops = { > - .open = hisi_sas_debugfs_itct_cache_open, > - .read_iter = seq_read_iter, > - .llseek = seq_lseek, > - .release = single_release, > - .owner = THIS_MODULE, > -}; > +DEFINE_SHOW_ATTRIBUTE(hisi_sas_debugfs_itct_cache); > > static void hisi_sas_debugfs_create_files(struct hisi_hba *hisi_hba) > {