[Devel] [PATCH vz9] ploop: rework logging when punch hole or zero range is unsupported

Konstantin Khorenko khorenko at virtuozzo.com
Fri Jun 30 20:30:33 MSK 2023


Sasha, please, ask someone to review?
Thank you.

--
Best regards,

Konstantin Khorenko,
Virtuozzo Linux Kernel Team

On 23.05.2023 20:08, Alexander Atanasov wrote:
> We added a fallback to zero range if punch hole is not supported
> but when zero range is not supported either the log gets flooded.
> 
> Rework logging and restrict unsupported log messages to just one.
> 
> https://jira.vzint.dev/browse/PSBM-147401
> Signed-off-by: Alexander Atanasov <alexander.atanasov at virtuozzo.com>
> ---
>   drivers/md/dm-ploop-map.c | 16 +++++++++-------
>   1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/md/dm-ploop-map.c b/drivers/md/dm-ploop-map.c
> index 640cf8428d9b..589d49429cf9 100644
> --- a/drivers/md/dm-ploop-map.c
> +++ b/drivers/md/dm-ploop-map.c
> @@ -1050,17 +1050,19 @@ static int ploop_allocate_cluster(struct ploop *ploop, u32 *dst_clu)
>   	if (pos < top->file_preallocated_area_start) {
>   		/* Clu at @pos may contain dirty data */
>   		off = min_t(loff_t, old_size, end);
> -		if (!ploop->falloc_new_clu) {
> +		if (!ploop->falloc_new_clu)
>   			ret = ploop_punch_hole(file, pos, off - pos);
> -			if (unlikely(ret == -EOPNOTSUPP)) {
> -				ploop->falloc_new_clu = 1;
> -				PL_WARN("punch hole unsupported - disabling");
> -			}
> -		} else
> +		else
>   			ret = ploop_zero_range(file, pos, off - pos);
>   		if (ret) {
> -			if (printk_ratelimit())
> +			if (ret != -EOPNOTSUPP)
>   				PL_ERR("punch/zero area: %d", ret);
> +			else if (ploop->falloc_new_clu)
> +				PL_ERR_ONCE("zero range unsupported");
> +			else if (!ploop->falloc_new_clu) {
> +				ploop->falloc_new_clu = 1;
> +				PL_WARN("punch hole unsupported - disabling");
> +			}
>   			return ret;
>   		}
>   	}


More information about the Devel mailing list