Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2229125pxb; Mon, 8 Mar 2021 18:52:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJwSM/h3E0dx87lrmRCjCY1WNWZJPuINjeszCv1CTvBa5z+rDzQlPuQdFwmh1sjzdffDvd10 X-Received: by 2002:a17:906:f1d6:: with SMTP id gx22mr1222154ejb.59.1615258369059; Mon, 08 Mar 2021 18:52:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615258369; cv=none; d=google.com; s=arc-20160816; b=KK03icJ/DiBBZ7ACZHLJFYNYk3soBkgSWVrEzB8R4uGcujH/em4u98VllINpXWoJJY jAILZ+z+USNoBx1CY1Y8iO5hN/wuU+wCUhUfnk4TRInB8jIvB/hVBpIvS2ytcA4Eh/WN htfaoDMTfIPqb4KHYE/0G/FC/xCkEqugbLDb7wYjx9aimJjXVOYxyOpzwpXz1D8ckEea zb6QIVJeHu3sQhv951EkVPsnMUz8idBLc/DNDn8fHiwMunAiEiK5i6lBqs+9nLyJ9czm HtaGmZtFLaWM0QpnBBnWe+d8tFpsIcPUwSAQ0f15rJVpkOX/RscUsmXE0+rO718FR6Mg CIxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=ruL05hCvUg9gtbdSoMWwmfsfzwuyxbHCl3pRR+VfLCw=; b=0tncgfojPtfWyZbl1cInlFASTWGHWJEfaHW0z/peVHlEZa8JByipvbQB4dfaJoQVeK ZTEZzwYNRCqu5QvIEXiVPU1Mme0MJzh7ldOxkBV5TpiPqAvXShbc5SSZfEyRESTFP4wc LVGcHFZsA13vI9DfZHnItT9rFCnuenQCT7QIDHjQrUi01ItMR2HPp4EhBz8NcRSDo6ox +MtjtyYZdvWL2eNqMvWs6blGs3ru/LhTwE4Eg/B2i4Wrm3ZZZgf4KuAcpvMEL6HUvexl k1nzXqLF7LX8fzQBpWyCw8EWEVRZyfAvF1PpjFyqbH4DmP1vSlUHBedgQ+Bs+w0gD+lZ Bhng== 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 d2si7504594eds.543.2021.03.08.18.52.26; Mon, 08 Mar 2021 18:52:49 -0800 (PST) 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 S229520AbhCICvL (ORCPT + 99 others); Mon, 8 Mar 2021 21:51:11 -0500 Received: from szxga04-in.huawei.com ([45.249.212.190]:12705 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230269AbhCICu4 (ORCPT ); Mon, 8 Mar 2021 21:50:56 -0500 Received: from DGGEMS412-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4Dvfm720MwzlTjp; Tue, 9 Mar 2021 10:48:39 +0800 (CST) Received: from [10.136.110.154] (10.136.110.154) by smtp.huawei.com (10.3.19.212) with Microsoft SMTP Server (TLS) id 14.3.498.0; Tue, 9 Mar 2021 10:50:49 +0800 Subject: Re: [f2fs-dev] [PATCH] f2fs: expose # of overprivision segments To: Jaegeuk Kim CC: , , References: <20210302054233.3886681-1-jaegeuk@kernel.org> <920469a9-45d3-68e3-1f8d-a436bdd60cfe@huawei.com> <05b43d3e-d735-ae34-5a4f-3d81a4fc8a9b@huawei.com> From: Chao Yu Message-ID: <37c84a6f-f42b-469e-5897-06da71887ba1@huawei.com> Date: Tue, 9 Mar 2021 10:50:49 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.136.110.154] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2021/3/9 8:07, Jaegeuk Kim wrote: > On 03/05, Chao Yu wrote: >> On 2021/3/5 1:50, Jaegeuk Kim wrote: >>> On 03/04, Chao Yu wrote: >>>> On 2021/3/3 2:44, Jaegeuk Kim wrote: >>>>> On 03/02, Jaegeuk Kim wrote: >>>>>> On 03/02, Chao Yu wrote: >>>>>>> On 2021/3/2 13:42, Jaegeuk Kim wrote: >>>>>>>> This is useful when checking conditions during checkpoint=disable in Android. >>>>>>> >>>>>>> This sysfs entry is readonly, how about putting this at >>>>>>> /sys/fs/f2fs//stat/? >>>>>> >>>>>> Urg.. "stat" is a bit confused. I'll take a look a better ones. >>>> >>>> Oh, I mean put it into "stat" directory, not "stat" entry, something like this: >>>> >>>> /sys/fs/f2fs//stat/ovp_segments >>> >>> I meant that too. Why is it like stat, since it's a geomerty? >> >> Hmm.. I feel a little bit weired to treat ovp_segments as 'stat' class, one reason >> is ovp_segments is readonly and is matching the readonly attribute of a stat. > > It seems I don't fully understand what you suggest here. I don't want to add the > # of ovp_segments in /stat, since it is not part of status, but put it in > / to sync with other # of free/dirty segments. If you can't read out easily, > I suggest to create symlinks to organize all the current mess. Alright. > >> >>> >>>> >>>>> >>>>> Taking a look at other entries using in Android, I feel that this one can't be >>>>> in stat or whatever other location, since I worry about the consistency with >>>>> similar dirty/free segments. It seems it's not easy to clean up the existing >>>>> ones anymore. >>>> >>>> Well, actually, the entry number are still increasing continuously, the result is >>>> that it becomes more and more slower and harder for me to find target entry name >>>> from that directory. >>>> >>>> IMO, once new readonly entry was added to "" directory, there is no chance >>>> to reloacate it due to interface compatibility. So I think this is the only >>>> chance to put it to the appropriate place at this time. >>> >>> I know, but this will diverge those info into different places. I don't have >>> big concern when finding a specific entry with this tho, how about making >>> symlinks to create a dir structure for your easy access? Or, using a script >>> would be alternative way. >> >> Yes, there should be some alternative ways to help to access f2fs sysfs >> interface, but from a point view of user, I'm not sure he can figure out those >> ways. >> >> For those fs meta stat, why not adding a single entry to include all info you >> need rather than adding them one by one? e.g. > > You can add that in /proc as well, which requires to parse back when retrieving > specific values. Copied. Thanks, > >> >> /proc/fs/f2fs//super_block >> /proc/fs/f2fs//checkpoint >> /proc/fs/f2fs//nat_table >> /proc/fs/f2fs//sit_table >> ... >> >> Thanks, >> >>> >>>> >>>> Thanks, >>>> >>>>> >>>>>> >>>>>>> >>>>>>>> >>>>>>>> Signed-off-by: Jaegeuk Kim >>>>>>>> --- >>>>>>>> fs/f2fs/sysfs.c | 8 ++++++++ >>>>>>>> 1 file changed, 8 insertions(+) >>>>>>>> >>>>>>>> diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c >>>>>>>> index e38a7f6921dd..254b6fa17406 100644 >>>>>>>> --- a/fs/f2fs/sysfs.c >>>>>>>> +++ b/fs/f2fs/sysfs.c >>>>>>>> @@ -91,6 +91,13 @@ static ssize_t free_segments_show(struct f2fs_attr *a, >>>>>>>> (unsigned long long)(free_segments(sbi))); >>>>>>>> } >>>>>>>> +static ssize_t ovp_segments_show(struct f2fs_attr *a, >>>>>>>> + struct f2fs_sb_info *sbi, char *buf) >>>>>>>> +{ >>>>>>>> + return sprintf(buf, "%llu\n", >>>>>>>> + (unsigned long long)(overprovision_segments(sbi))); >>>>>>>> +} >>>>>>>> + >>>>>>>> static ssize_t lifetime_write_kbytes_show(struct f2fs_attr *a, >>>>>>>> struct f2fs_sb_info *sbi, char *buf) >>>>>>>> { >>>>>>>> @@ -629,6 +636,7 @@ F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, node_io_flag, node_io_flag); >>>>>>>> F2FS_RW_ATTR(CPRC_INFO, ckpt_req_control, ckpt_thread_ioprio, ckpt_thread_ioprio); >>>>>>>> F2FS_GENERAL_RO_ATTR(dirty_segments); >>>>>>>> F2FS_GENERAL_RO_ATTR(free_segments); >>>>>>>> +F2FS_GENERAL_RO_ATTR(ovp_segments); >>>>>>> >>>>>>> Missed to add document entry in Documentation/ABI/testing/sysfs-fs-f2fs? >>>>>> >>>>>> Yeah, thanks. >>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>>> F2FS_GENERAL_RO_ATTR(lifetime_write_kbytes); >>>>>>>> F2FS_GENERAL_RO_ATTR(features); >>>>>>>> F2FS_GENERAL_RO_ATTR(current_reserved_blocks); >>>>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Linux-f2fs-devel mailing list >>>>>> Linux-f2fs-devel@lists.sourceforge.net >>>>>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel >>>>> . >>>>> >>> . >>> > . >