Re: [PATCH 1/3] xfs: fix per-cpu CIL structure aggregation racing with dying cpus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 24, 2023 at 04:21:20PM -0700, Darrick J. Wong wrote:
> @@ -554,6 +560,7 @@ xlog_cil_insert_items(
>  	int			iovhdr_res = 0, split_res = 0, ctx_res = 0;
>  	int			space_used;
>  	int			order;
> +	unsigned int		cpu_nr;
>  	struct xlog_cil_pcp	*cilpcp;
>  
>  	ASSERT(tp);
> @@ -577,7 +584,12 @@ xlog_cil_insert_items(
>  	 * can't be scheduled away between split sample/update operations that
>  	 * are done without outside locking to serialise them.
>  	 */
> -	cilpcp = get_cpu_ptr(cil->xc_pcp);
> +	cpu_nr = get_cpu();
> +	cilpcp = this_cpu_ptr(cil->xc_pcp);
> +
> +	/* Tell the future push that there was work added by this CPU. */
> +	if (!cpumask_test_cpu(cpu_nr, &ctx->cil_pcpmask))
> +		cpumask_test_and_set_cpu(cpu_nr, &ctx->cil_pcpmask);
>  
>  	/*
>  	 * We need to take the CIL checkpoint unit reservation on the first

This code also needs the put_cpu_ptr(cil->xc_pcp) converted to
put_cpu(), even though they end up doing exactly the same thing.

Other than that, it looks good. I'll pull this into my test trees
and give it a run...

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux