efivars works fine with this v2 patch.

Tested-by: Seiji Aguchi <seiji.agu...@hds.com>

> -----Original Message-----
> From: Aruna Balakrishnaiah [mailto:ar...@linux.vnet.ibm.com]
> Sent: Thursday, September 12, 2013 2:51 AM
> To: linuxppc-...@ozlabs.org; tony.l...@intel.com; Seiji Aguchi; 
> linux-kernel@vger.kernel.org; keesc...@chromium.org
> Cc: jkeni...@linux.vnet.ibm.com; mah...@linux.vnet.ibm.com; 
> cbouatmai...@gmail.com; ana...@in.ibm.com; ccr...@android.com
> Subject: [PATCH v2] pstore: Adjust buffer size for compression for smaller 
> registered buffers
> 
> When backends (ex: efivars) have smaller registered buffers, the big_oops_buf
> is quite too big for them as number of repeated occurences in the text 
> captured
> will be less. Patch takes care of adjusting the buffer size based on the
> registered buffer size. cmpr values has been arrived after doing experiments 
> with
> plain text for buffers of size 1k - 4k (Smaller the buffer size repeated 
> occurence
> will be less) and with sample crash log for buffers ranging from 4k - 10k.
> 
> Reported-by: Seiji Aguchi <seiji.agu...@hds.com>
> Signed-off-by: Aruna Balakrishnaiah <ar...@linux.vnet.ibm.com>
> ---
> Changes from v1:
>       Retain the cmpr = 45 for buffers ranging of size 4k - 10k. 45 seems to 
> work.
> I added an additional headroom of 3%. Revert it back to 45.
> 
>  fs/pstore/platform.c |   23 ++++++++++++++++++++++-
>  1 file changed, 22 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
> index 4ffb7ab..57b4219 100644
> --- a/fs/pstore/platform.c
> +++ b/fs/pstore/platform.c
> @@ -195,8 +195,29 @@ error:
>  static void allocate_buf_for_compression(void)
>  {
>       size_t size;
> +     size_t cmpr;
> +
> +     switch (psinfo->bufsize) {
> +     /* buffer range for efivars */
> +     case 1000 ... 2000:
> +             cmpr = 56;
> +             break;
> +     case 2001 ... 3000:
> +             cmpr = 54;
> +             break;
> +     case 3001 ... 3999:
> +             cmpr = 52;
> +             break;
> +     /* buffer range for nvram, erst */
> +     case 4000 ... 10000:
> +             cmpr = 45;
> +             break;
> +     default:
> +             cmpr = 60;
> +             break;
> +     }
> 
> -     big_oops_buf_sz = (psinfo->bufsize * 100) / 45;
> +     big_oops_buf_sz = (psinfo->bufsize * 100) / cmpr;
>       big_oops_buf = kmalloc(big_oops_buf_sz, GFP_KERNEL);
>       if (big_oops_buf) {
>               size = max(zlib_deflate_workspacesize(WINDOW_BITS, MEM_LEVEL),

N�����r��y����b�X��ǧv�^�)޺{.n�+����{����zX����ܨ}���Ơz�&j:+v�������zZ+��+zf���h���~����i���z��w���?�����&�)ߢf��^jǫy�m��@A�a���
0��h���i

Reply via email to