All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan@kernel.org>
To: Chao Yu <chao2.yu@samsung.com>
Cc: ngupta@vflare.org, linux-kernel@vger.kernel.org,
	Jerome Marchand <jmarchan@redhat.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] zram: fix incorrectly stat with failed_reads
Date: Tue, 12 Aug 2014 16:37:40 +0900	[thread overview]
Message-ID: <20140812073740.GA9227@bbox> (raw)
In-Reply-To: <000001cfb53f$d63b6ea0$82b24be0$@samsung.com>

On Mon, Aug 11, 2014 at 04:39:17PM +0800, Chao Yu wrote:
> Since we allocate a temporary buffer in zram_bvec_read to handle partial page
> operations in this commit 924bd88d703e53d30f393fac6117f8f1bc79aab6 (Staging:
> zram: allow partial page operations), our ->failed_reads value may be incorrect
> as we do not increase its value when failed to allocate the temporary buffer.
> 
> Let's fix this issue and correct the annotation of failed_reads.

Good catch.
Just out of curiosity.

Did you catch it by code review or real workload?

> 
> Signed-off-by: Chao Yu <chao2.yu@samsung.com>
> ---
>  drivers/block/zram/zram_drv.c | 1 +
>  drivers/block/zram/zram_drv.h | 2 +-
>  2 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index dfa4024..bf8ea1b 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -413,6 +413,7 @@ static int zram_bvec_read(struct zram *zram, struct bio_vec *bvec,
>  
>  	if (!uncmem) {
>  		pr_info("Unable to allocate temp memory\n");
> +		atomic64_inc(&zram->stats.failed_reads);
>  		ret = -ENOMEM;
>  		goto out_cleanup;
>  	}
> diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h
> index 5b0afde..e0f725c 100644
> --- a/drivers/block/zram/zram_drv.h
> +++ b/drivers/block/zram/zram_drv.h
> @@ -84,7 +84,7 @@ struct zram_stats {
>  	atomic64_t compr_data_size;	/* compressed size of pages stored */
>  	atomic64_t num_reads;	/* failed + successful */
>  	atomic64_t num_writes;	/* --do-- */
> -	atomic64_t failed_reads;	/* should NEVER! happen */
> +	atomic64_t failed_reads;	/* can happen when memory is too low */
>  	atomic64_t failed_writes;	/* can happen when memory is too low */
>  	atomic64_t invalid_io;	/* non-page-aligned I/O requests */
>  	atomic64_t notify_free;	/* no. of swap slot free notifications */
> -- 
> 2.0.1.474.g72c7794

How abouting moving failed_reads/writes in zram_bvec_rw?

int zram_bvec_rw(..)
{
        if (rw == READ) {
                atomic64_inc(num_reads);
                ret = zram_bvec_read(xxx);
        } else {
                atomic64_inc(&num_writes);
                ret = zram_bvec_write(xxx);
        }

        if (unlikely(ret)) {
                if (rw == READ)
                        atomic64_inc(failed_reads);
                else
                        atomic64_inc(failed_writes);
        }
}

> 
> 
> --
> 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/

-- 
Kind regards,
Minchan Kim

  reply	other threads:[~2014-08-12  7:37 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-11  8:39 [PATCH] zram: fix incorrectly stat with failed_reads Chao Yu
2014-08-12  7:37 ` Minchan Kim [this message]
2014-08-12  9:40   ` Chao Yu
2014-08-12 11:33   ` Sergey Senozhatsky
2014-08-13  1:59   ` Chao Yu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140812073740.GA9227@bbox \
    --to=minchan@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=chao2.yu@samsung.com \
    --cc=jmarchan@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ngupta@vflare.org \
    --cc=sergey.senozhatsky@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.