On Mon, Sep 22, 2014 at 02:17:33PM -0700, Andrew Morton wrote:
> On Mon, 22 Sep 2014 09:03:11 +0900 Minchan Kim <minc...@kernel.org> wrote:
> 
> > Some zram usecase could want lower fullness than default 80 to
> > avoid unnecessary swapout-and-fail-recover overhead.
> > 
> > A typical example is that mutliple swap with high piroirty
> > zram-swap and low priority HDD-swap so it could still enough
> > free swap space although one of swap devices is full(ie, zram).
> > It would be better to fail over to HDD-swap rather than failing
> > swap write to zram in this case.
> > 
> > This patch exports fullness to user so user can control it
> > via the knob.
> 
> Adding new userspace interfaces requires a pretty strong justification
> and it's unclear to me that this is being met.  In fact the whole
> patchset reads like "we have some problem, don't know how to fix it so
> let's add a userspace knob to make it someone else's problem".

I explained rationale in 4/5's reply but if it's not enough or wrong,
please tell me.

> 
> > index b13dc993291f..817738d14061 100644
> > --- a/Documentation/ABI/testing/sysfs-block-zram
> > +++ b/Documentation/ABI/testing/sysfs-block-zram
> > @@ -138,3 +138,13 @@ Description:
> >             amount of memory ZRAM can use to store the compressed data.  The
> >             limit could be changed in run time and "0" means disable the
> >             limit.  No limit is the initial state.  Unit: bytes
> > +
> > +What:              /sys/block/zram<id>/fullness
> > +Date:              August 2014
> > +Contact:   Minchan Kim <minc...@kernel.org>
> > +Description:
> > +           The fullness file is read/write and specifies how easily
> > +           zram become full state so if you set it to lower value,
> > +           zram can reach full state easily compared to higher value.
> > +           Curretnly, initial value is 80% but it could be changed.
> > +           Unit: Percentage
> 
> And I don't think that there is sufficient information here for a user
> to be able to work out what to do with this tunable.

I will put more words.

> 
> > --- a/drivers/block/zram/zram_drv.c
> > +++ b/drivers/block/zram/zram_drv.c
> > @@ -136,6 +136,37 @@ static ssize_t max_comp_streams_show(struct device 
> > *dev,
> >     return scnprintf(buf, PAGE_SIZE, "%d\n", val);
> >  }
> >  
> > +static ssize_t fullness_show(struct device *dev,
> > +           struct device_attribute *attr, char *buf)
> > +{
> > +   int val;
> > +   struct zram *zram = dev_to_zram(dev);
> > +
> > +   down_read(&zram->init_lock);
> > +   val = zram->fullness;
> > +   up_read(&zram->init_lock);
> 
> Did we really need to take a lock to display a value which became
> out-of-date as soon as we released that lock?
> 
> > +   return scnprintf(buf, PAGE_SIZE, "%d\n", val);
> > +}
> > +
> > +static ssize_t fullness_store(struct device *dev,
> > +           struct device_attribute *attr, const char *buf, size_t len)
> > +{
> > +   int err;
> > +   unsigned long val;
> > +   struct zram *zram = dev_to_zram(dev);
> > +
> > +   err = kstrtoul(buf, 10, &val);
> > +   if (err || val > 100)
> > +           return -EINVAL;
> 
> This overwrites the kstrtoul() return value.

Will fix.

Thanks for the reivew, Andrew.
-- 
Kind regards,
Minchan Kim
--
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/

Reply via email to