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-ker...@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), _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev