On Mon, Aug 25, 2014 at 09:05:55AM +0900, Minchan Kim wrote: > @@ -513,6 +540,14 @@ static int zram_bvec_write(struct zram *zram, struct > bio_vec *bvec, u32 index, > ret = -ENOMEM; > goto out; > } > + > + if (zram->limit_pages && > + zs_get_total_pages(meta->mem_pool) > zram->limit_pages) { > + zs_free(meta->mem_pool, handle); > + ret = -ENOMEM; > + goto out; > + } > + > cmem = zs_map_object(meta->mem_pool, handle, ZS_MM_WO);
Hello, I don't follow up previous discussion, so I could be wrong. Why this enforcement should be here? I think that this has two problems. 1) alloc/free happens unnecessarilly if we have used memory over the limitation. 2) Even if this request doesn't do new allocation, it could be failed due to other's allocation. There is time gap between allocation and free, so legimate user who want to use preallocated zsmalloc memory could also see this condition true and then he will be failed. Thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/