Hi, Kairui, When reading new swap cluster allocation code. Sorry, I didn't find time to review your patch at the first place. I found that in cluster_alloc_swap_entry(), the following code path is possible, cluster = this_cpu_ptr(si->percpu_cluster); offset = alloc_swap_scan_cluster(); ... spin_unlock(&ci->lock); spin_unlock(&si->lock); /* migrate to another cpu */ spin_lock(&ci->lock); spin_lock(&si->lock); cluster->next[order] = offset; That is, the per cpu cluster of a CPU may be changed on another CPU. I guess that this will not cause some functionality issue. However, this makes code harder to be reasoned. Is it possible to avoid unlock before changing per cpu cluster? Or, give up updating per cpu cluster if we need to unlock. -- Best Regards, Huang, Ying