[Devel] [PATCH] fs/fuse kio: skip iostat count for unknown req types

Pavel Butsykin pbutsykin at virtuozzo.com
Mon Jun 3 10:28:52 MSK 2019



On 03.06.2019 10:18, Pavel Butsykin wrote:
> 
> 
> On 03.06.2019 10:14, Kirill Tkhai wrote:
>> On 03.06.2019 09:41, Pavel Butsykin wrote:
>>>
>>>
>>> On 31.05.2019 19:06, Kirill Tkhai wrote:
>>>> On 31.05.2019 12:23, Pavel Butsykin wrote:
>>>>> There are still some number of response req types:
>>>>> PCS_CS_WRITE_ZERO_RESP
>>>>> PCS_CS_WRITE_HOLE_RESP
>>>>> PCS_CS_REPLICATEX_RESP
>>>>> PCS_CS_FIEMAP_RESP
>>>>> PCS_CS_MAP_PROP_RESP
>>>>>
>>>>> It makes no sense to count statistics for such requests, so for them the stat
>>>>> count will simply be skipped.
>>>>>
>>>>> Signed-off-by: Pavel Butsykin <pbutsykin at virtuozzo.com>
>>>>> ---
>>>>>     fs/fuse/kio/pcs/fuse_stat.c | 7 ++++---
>>>>>     1 file changed, 4 insertions(+), 3 deletions(-)
>>>>>
>>>>> diff --git a/fs/fuse/kio/pcs/fuse_stat.c b/fs/fuse/kio/pcs/fuse_stat.c
>>>>> index 06be3c75240c..31ff73d6c3dc 100644
>>>>> --- a/fs/fuse/kio/pcs/fuse_stat.c
>>>>> +++ b/fs/fuse/kio/pcs/fuse_stat.c
>>>>> @@ -654,7 +654,6 @@ struct fuse_val_stat *req_stat_entry(struct pcs_fuse_io_stat *io, u32 type)
>>>>>     		default:
>>>>>     			break;
>>>>>     	}
>>>>> -	WARN_ON_ONCE(1);
>>>>>     	return NULL;
>>>>>     }
>>>>>     
>>>>> @@ -663,9 +662,11 @@ static void fuse_iostat_count(struct pcs_fuse_io_stat_sync *iostat,
>>>>>     {
>>>>>     	struct fuse_val_stat *se;
>>>>>     
>>>>> -	write_seqlock(&iostat->seqlock);
>>>>>     	se = req_stat_entry(iostat->CURR(iostat), type);
>>>>
>>>> Shouldn't iostat->CURR(iostat) be obtained under seqlock?
>>>>
>>>
>>> Yep, iostat->CURR(iostat) should be under seqlock, thanks for fixup!
>>
>> I think it may be useful to add some lockdep check into CURR and other macros.
> 
> Yes, it makes sense, taking into account that it's not the most obvious
> synchronization.
> 

Unfortunately, the use of this macro does not always mean taking seqlock,
examples:
pcs_fuse_fstat_alloc(), pcs_fuse_fstat_free(), pcs_fuse_io_stat_alloc().

>> Kirill
>>
> 
> _______________________________________________
> Devel mailing list
> Devel at openvz.org
> https://lists.openvz.org/mailman/listinfo/devel
> 



More information about the Devel mailing list