* [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter
@ 2012-10-27 16:03 Sergey Senozhatsky
2012-10-29 17:21 ` Nitin Gupta
0 siblings, 1 reply; 6+ messages in thread
From: Sergey Senozhatsky @ 2012-10-27 16:03 UTC (permalink / raw)
To: Nitin Gupta; +Cc: Greg Kroah-Hartman, linux-kernel
zram: handle mem suffixes in disk size zram_sysfs parameter
Use memparse() to allow mem suffixes in disksize sysfs number.
Examples:
echo 256K > /sys/block/zram0/disksize
echo 512M > /sys/block/zram0/disksize
echo 1G > /sys/block/zram0/disksize
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
---
drivers/staging/zram/zram_sysfs.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/zram/zram_sysfs.c b/drivers/staging/zram/zram_sysfs.c
index edb0ed4..6be318e 100644
--- a/drivers/staging/zram/zram_sysfs.c
+++ b/drivers/staging/zram/zram_sysfs.c
@@ -15,6 +15,7 @@
#include <linux/device.h>
#include <linux/genhd.h>
#include <linux/mm.h>
+#include <linux/kernel.h>
#include "zram_drv.h"
@@ -54,13 +55,12 @@ static ssize_t disksize_show(struct device *dev,
static ssize_t disksize_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
- int ret;
u64 disksize;
struct zram *zram = dev_to_zram(dev);
- ret = kstrtoull(buf, 10, &disksize);
- if (ret)
- return ret;
+ disksize = memparse(buf, NULL);
+ if (disksize < 1)
+ return -EINVAL;
down_write(&zram->init_lock);
if (zram->init_done) {
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter
2012-10-27 16:03 [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter Sergey Senozhatsky
@ 2012-10-29 17:21 ` Nitin Gupta
2012-10-29 17:30 ` Sergey Senozhatsky
2012-10-29 17:41 ` [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter (v2) Sergey Senozhatsky
0 siblings, 2 replies; 6+ messages in thread
From: Nitin Gupta @ 2012-10-29 17:21 UTC (permalink / raw)
To: Sergey Senozhatsky; +Cc: Greg Kroah-Hartman, linux-kernel
On 10/27/2012 09:03 AM, Sergey Senozhatsky wrote:
> zram: handle mem suffixes in disk size zram_sysfs parameter
>
> Use memparse() to allow mem suffixes in disksize sysfs number.
> Examples:
> echo 256K > /sys/block/zram0/disksize
> echo 512M > /sys/block/zram0/disksize
> echo 1G > /sys/block/zram0/disksize
>
> Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
>
> ---
>
> drivers/staging/zram/zram_sysfs.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/zram/zram_sysfs.c b/drivers/staging/zram/zram_sysfs.c
> index edb0ed4..6be318e 100644
> --- a/drivers/staging/zram/zram_sysfs.c
> +++ b/drivers/staging/zram/zram_sysfs.c
> @@ -15,6 +15,7 @@
> #include <linux/device.h>
> #include <linux/genhd.h>
> #include <linux/mm.h>
> +#include <linux/kernel.h>
>
> #include "zram_drv.h"
>
> @@ -54,13 +55,12 @@ static ssize_t disksize_show(struct device *dev,
> static ssize_t disksize_store(struct device *dev,
> struct device_attribute *attr, const char *buf, size_t len)
> {
> - int ret;
> u64 disksize;
> struct zram *zram = dev_to_zram(dev);
>
> - ret = kstrtoull(buf, 10, &disksize);
> - if (ret)
> - return ret;
> + disksize = memparse(buf, NULL);
> + if (disksize < 1)
> + return -EINVAL;
>
or, just: if (!disksize) ...
Thanks,
Nitin
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter
2012-10-29 17:21 ` Nitin Gupta
@ 2012-10-29 17:30 ` Sergey Senozhatsky
2012-10-29 17:41 ` [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter (v2) Sergey Senozhatsky
1 sibling, 0 replies; 6+ messages in thread
From: Sergey Senozhatsky @ 2012-10-29 17:30 UTC (permalink / raw)
To: Nitin Gupta; +Cc: Greg Kroah-Hartman, linux-kernel
On (10/29/12 10:21), Nitin Gupta wrote:
> >+#include <linux/kernel.h>
> >
> > #include "zram_drv.h"
> >
> >@@ -54,13 +55,12 @@ static ssize_t disksize_show(struct device *dev,
> > static ssize_t disksize_store(struct device *dev,
> > struct device_attribute *attr, const char *buf, size_t len)
> > {
> >- int ret;
> > u64 disksize;
> > struct zram *zram = dev_to_zram(dev);
> >
> >- ret = kstrtoull(buf, 10, &disksize);
> >- if (ret)
> >- return ret;
> >+ disksize = memparse(buf, NULL);
> >+ if (disksize < 1)
> >+ return -EINVAL;
> >
>
> or, just: if (!disksize) ...
>
will resend shortly.
-ss
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter (v2)
2012-10-29 17:21 ` Nitin Gupta
2012-10-29 17:30 ` Sergey Senozhatsky
@ 2012-10-29 17:41 ` Sergey Senozhatsky
2012-10-29 18:33 ` Nitin Gupta
1 sibling, 1 reply; 6+ messages in thread
From: Sergey Senozhatsky @ 2012-10-29 17:41 UTC (permalink / raw)
To: Nitin Gupta; +Cc: Greg Kroah-Hartman, linux-kernel
zram: handle mem suffixes in disk size zram_sysfs parameter
Use memparse() to allow mem suffixes in disksize sysfs number.
Examples:
echo 256K > /sys/block/zram0/disksize
echo 512M > /sys/block/zram0/disksize
echo 1G > /sys/block/zram0/disksize
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
---
drivers/staging/zram/zram_sysfs.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/zram/zram_sysfs.c b/drivers/staging/zram/zram_sysfs.c
index edb0ed4..de1eacf 100644
--- a/drivers/staging/zram/zram_sysfs.c
+++ b/drivers/staging/zram/zram_sysfs.c
@@ -15,6 +15,7 @@
#include <linux/device.h>
#include <linux/genhd.h>
#include <linux/mm.h>
+#include <linux/kernel.h>
#include "zram_drv.h"
@@ -54,13 +55,12 @@ static ssize_t disksize_show(struct device *dev,
static ssize_t disksize_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
- int ret;
u64 disksize;
struct zram *zram = dev_to_zram(dev);
- ret = kstrtoull(buf, 10, &disksize);
- if (ret)
- return ret;
+ disksize = memparse(buf, NULL);
+ if (!disksize)
+ return -EINVAL;
down_write(&zram->init_lock);
if (zram->init_done) {
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] zram: permit sleeping while in pool zs_malloc()
@ 2012-10-30 9:03 Sergey Senozhatsky
2012-10-30 18:04 ` Greg Kroah-Hartman
0 siblings, 1 reply; 6+ messages in thread
From: Sergey Senozhatsky @ 2012-10-30 9:03 UTC (permalink / raw)
To: Nitin Gupta; +Cc: Greg Kroah-Hartman, linux-kernel
zram: permit sleeping while in pool zs_malloc()
zram pool is created with GFP_NOIO flag, which may trigger errors because nested allocation
are able to sleep. set __GFP_WAIT pool flag in zram_init_device() to allow sleeping.
BUG: sleeping function called from invalid context at mm/page_alloc.c:2603
in_atomic(): 1, irqs_disabled(): 0, pid: 2555, name: mkfs.reiserfs
2 locks held by mkfs.reiserfs/2555:
#0: (&zram->init_lock){+++++.}, at: [<ffffffffa0127d18>] zram_make_request+0x48/0x270 [zram]
#1: (&zram->lock){++++..}, at: [<ffffffffa012742b>] zram_bvec_rw+0x3b/0x510 [zram]
Pid: 2555, comm: mkfs.reiserfs Tainted: G C 3.7.0-rc3-dbg-01664-gf2d9543-dirty #1401
Call Trace:
[<ffffffff8107984a>] __might_sleep+0x15a/0x250
[<ffffffff8111df9b>] __alloc_pages_nodemask+0x1bb/0x920
[<ffffffffa00f0b93>] ? zs_malloc+0x63/0x480 [zsmalloc]
[<ffffffff81320e2d>] ? do_raw_spin_unlock+0x5d/0xb0
[<ffffffffa00f0cf5>] zs_malloc+0x1c5/0x480 [zsmalloc]
[<ffffffffa0127574>] zram_bvec_rw+0x184/0x510 [zram]
[<ffffffffa0127e85>] zram_make_request+0x1b5/0x270 [zram]
[<ffffffff812ec0c2>] generic_make_request+0xc2/0x110
[<ffffffff812ec17a>] submit_bio+0x6a/0x140
[<ffffffff8119f27b>] submit_bh+0xfb/0x130
[<ffffffff811a2710>] __block_write_full_page+0x220/0x3d0
[<ffffffff810a7784>] ? __lock_is_held+0x54/0x80
[<ffffffff8119ffb0>] ? end_buffer_async_read+0x210/0x210
[<ffffffff811a7aa0>] ? blkdev_get_blocks+0xd0/0xd0
[<ffffffff811a7aa0>] ? blkdev_get_blocks+0xd0/0xd0
[<ffffffff8119ffb0>] ? end_buffer_async_read+0x210/0x210
[<ffffffff811a298f>] block_write_full_page_endio+0xcf/0x100
[<ffffffff8111f555>] ? clear_page_dirty_for_io+0x105/0x130
[<ffffffff811a29d5>] block_write_full_page+0x15/0x20
[<ffffffff811a7038>] blkdev_writepage+0x18/0x20
[<ffffffff8111f3aa>] __writepage+0x1a/0x50
[<ffffffff8111f8b0>] write_cache_pages+0x200/0x630
[<ffffffff8111e883>] ? free_hot_cold_page+0x113/0x1a0
[<ffffffff8111f390>] ? global_dirtyable_memory+0x40/0x40
[<ffffffff8111fd2d>] generic_writepages+0x4d/0x70
[<ffffffff81121071>] do_writepages+0x21/0x50
[<ffffffff81116939>] __filemap_fdatawrite_range+0x59/0x60
[<ffffffff81116a40>] filemap_write_and_wait_range+0x50/0x70
[<ffffffff811a73a4>] blkdev_fsync+0x24/0x50
[<ffffffff8119d5bd>] do_fsync+0x5d/0x90
[<ffffffff8119d990>] sys_fsync+0x10/0x20
[<ffffffff815dce06>] tracesys+0xd4/0xd9
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
---
drivers/staging/zram/zram_drv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c
index d2e0a85..47f2e3a 100644
--- a/drivers/staging/zram/zram_drv.c
+++ b/drivers/staging/zram/zram_drv.c
@@ -576,7 +576,7 @@ int zram_init_device(struct zram *zram)
/* zram devices sort of resembles non-rotational disks */
queue_flag_set_unlocked(QUEUE_FLAG_NONROT, zram->disk->queue);
- zram->mem_pool = zs_create_pool("zram", GFP_NOIO | __GFP_HIGHMEM);
+ zram->mem_pool = zs_create_pool("zram", GFP_NOIO | __GFP_WAIT | __GFP_HIGHMEM);
if (!zram->mem_pool) {
pr_err("Error creating memory pool\n");
ret = -ENOMEM;
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 2/2] zram: permit sleeping while in pool zs_malloc()
2012-10-30 9:03 [PATCH 2/2] zram: permit sleeping while in pool zs_malloc() Sergey Senozhatsky
@ 2012-10-30 18:04 ` Greg Kroah-Hartman
2012-10-30 19:00 ` [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter Sergey Senozhatsky
0 siblings, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2012-10-30 18:04 UTC (permalink / raw)
To: Sergey Senozhatsky; +Cc: Nitin Gupta, linux-kernel
On Tue, Oct 30, 2012 at 12:03:19PM +0300, Sergey Senozhatsky wrote:
> zram: permit sleeping while in pool zs_malloc()
2/2? Huh? Where is 1/2?
I have a raft of patches from you, all out of order, and full of
responses from Nitin, and so, I really have no idea what should and
should not be applied here.
So, I'm dropping them all. Please work with Nitin to get a series of
patches that are acceptable and resend them with the proper numbering.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter
2012-10-30 18:04 ` Greg Kroah-Hartman
@ 2012-10-30 19:00 ` Sergey Senozhatsky
0 siblings, 0 replies; 6+ messages in thread
From: Sergey Senozhatsky @ 2012-10-30 19:00 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Nitin Gupta, linux-kernel
zram: handle mem suffixes in disk size zram_sysfs parameter
Use memparse() to allow mem suffixes in disksize sysfs number.
Examples:
echo 256K > /sys/block/zram0/disksize
echo 512M > /sys/block/zram0/disksize
echo 1G > /sys/block/zram0/disksize
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
---
drivers/staging/zram/zram_sysfs.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/zram/zram_sysfs.c b/drivers/staging/zram/zram_sysfs.c
index edb0ed4..de1eacf 100644
--- a/drivers/staging/zram/zram_sysfs.c
+++ b/drivers/staging/zram/zram_sysfs.c
@@ -15,6 +15,7 @@
#include <linux/device.h>
#include <linux/genhd.h>
#include <linux/mm.h>
+#include <linux/kernel.h>
#include "zram_drv.h"
@@ -54,13 +55,12 @@ static ssize_t disksize_show(struct device *dev,
static ssize_t disksize_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
- int ret;
u64 disksize;
struct zram *zram = dev_to_zram(dev);
- ret = kstrtoull(buf, 10, &disksize);
- if (ret)
- return ret;
+ disksize = memparse(buf, NULL);
+ if (!disksize)
+ return -EINVAL;
down_write(&zram->init_lock);
if (zram->init_done) {
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-10-30 19:02 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-27 16:03 [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter Sergey Senozhatsky
2012-10-29 17:21 ` Nitin Gupta
2012-10-29 17:30 ` Sergey Senozhatsky
2012-10-29 17:41 ` [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter (v2) Sergey Senozhatsky
2012-10-29 18:33 ` Nitin Gupta
-- strict thread matches above, loose matches on Subject: below --
2012-10-30 9:03 [PATCH 2/2] zram: permit sleeping while in pool zs_malloc() Sergey Senozhatsky
2012-10-30 18:04 ` Greg Kroah-Hartman
2012-10-30 19:00 ` [PATCH 2/2] zram: handle mem suffixes in disk size zram_sysfs parameter Sergey Senozhatsky
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.