Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1290761
| From | Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 1/2] zram: Less checks in zram_bvec_write() after error detection |
| Date | 2015-12-14 01:30 +0100 |
| Message-ID | <qFpbz-74M-3@gated-at.bofh.it> (permalink) |
| References | <qEuGl-43C-5@gated-at.bofh.it> <qEAsq-81R-25@gated-at.bofh.it> <qEAC6-862-19@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On (12/11/15 19:24), SF Markus Elfring wrote:
[..]
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index 47915d7..69d7fcd 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -652,9 +652,9 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
> size_t clen;
> unsigned long handle;
> struct page *page;
> - unsigned char *user_mem, *cmem, *src, *uncmem = NULL;
> + unsigned char *user_mem, *cmem, *src, *uncmem;
> struct zram_meta *meta = zram->meta;
> - struct zcomp_strm *zstrm = NULL;
> + struct zcomp_strm *zstrm;
> unsigned long alloced_pages;
>
> page = bvec->bv_page;
> @@ -664,13 +664,11 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
> * before to write the changes.
> */
> uncmem = kmalloc(PAGE_SIZE, GFP_NOIO);
> - if (!uncmem) {
> - ret = -ENOMEM;
> - goto out;
> - }
> + if (!uncmem)
> + return -ENOMEM;
ok.
> ret = zram_decompress_page(zram, uncmem, index);
> if (ret)
> - goto out;
> + goto free_uncmem;
here and later, I don't want to split `out' label.
you still need to do both 'if zstrm' and 'if is_partial_io' checks anyway, what's the gain?
the more labels we have the trickier it may get.
> }
>
> zstrm = zcomp_strm_find(zram->comp);
> @@ -696,7 +694,7 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
>
> atomic64_inc(&zram->stats.zero_pages);
> ret = 0;
> - goto out;
> + goto check_strm;
> }
>
> ret = zcomp_compress(zram->comp, zstrm, uncmem, &clen);
> @@ -708,7 +706,7 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
>
> if (unlikely(ret)) {
> pr_err("Compression failed! err=%d\n", ret);
> - goto out;
> + goto check_strm;
> }
> src = zstrm->buffer;
> if (unlikely(clen > max_zpage_size)) {
> @@ -722,7 +720,7 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
> pr_err("Error allocating memory for compressed page: %u, size=%zu\n",
> index, clen);
> ret = -ENOMEM;
> - goto out;
> + goto check_strm;
> }
>
> alloced_pages = zs_get_total_pages(meta->mem_pool);
> @@ -731,7 +729,7 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
> if (zram->limit_pages && alloced_pages > zram->limit_pages) {
> zs_free(meta->mem_pool, handle);
> ret = -ENOMEM;
> - goto out;
> + goto check_strm;
> }
>
> cmem = zs_map_object(meta->mem_pool, handle, ZS_MM_WO);
> @@ -762,11 +760,13 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
> /* Update stats */
> atomic64_add(clen, &zram->stats.compr_data_size);
> atomic64_inc(&zram->stats.pages_stored);
> -out:
> +check_strm:
> if (zstrm)
> zcomp_strm_release(zram->comp, zstrm);
> - if (is_partial_io(bvec))
> + if (is_partial_io(bvec)) {
> +free_uncmem:
> kfree(uncmem);
> + }
a label inside of `if'? no.
keep it the way it is please.
> return ret;
> }
-ss
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
Re: [PATCH 1/2] zram: Less checks in zram_bvec_write() after error detection Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> - 2015-12-14 01:30 +0100
Re: [PATCH 1/2] zram: Less checks in zram_bvec_write() after error detection SF Markus Elfring <elfring@users.sourceforge.net> - 2015-12-14 08:00 +0100
Re: [PATCH 1/2] zram: Less checks in zram_bvec_write() after error detection Julia Lawall <julia.lawall@lip6.fr> - 2015-12-14 08:20 +0100
Re: [PATCH 1/2] zram: Less checks in zram_bvec_write() after error detection Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> - 2015-12-14 11:10 +0100
Re: [PATCH 1/2] zram: Less checks in zram_bvec_write() after error detection SF Markus Elfring <elfring@users.sourceforge.net> - 2015-12-14 15:10 +0100
csiph-web