2010-12-17 15:59:45

by Jerome Marchand

[permalink] [raw]
Subject: [PATCH 1/4] Staging: zram: make ZRAM depends on SYSFS


We can not configure zram device without sysfs anyway, so make zram
depends on it.

Signed-off-by: Jerome Marchand <[email protected]>
---
Kconfig | 2 +-
zram_drv.c | 4 ----
zram_sysfs.c | 4 ----
3 files changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/staging/zram/Kconfig b/drivers/staging/zram/Kconfig
index da079f8..d3982e6 100644
--- a/drivers/staging/zram/Kconfig
+++ b/drivers/staging/zram/Kconfig
@@ -1,6 +1,6 @@
config ZRAM
tristate "Compressed RAM block device support"
- depends on BLOCK
+ depends on BLOCK && SYSFS
select LZO_COMPRESS
select LZO_DECOMPRESS
default n
diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c
index 8c3c057..d649b3e 100644
--- a/drivers/staging/zram/zram_drv.c
+++ b/drivers/staging/zram/zram_drv.c
@@ -633,14 +633,12 @@ static int create_device(struct zram *zram, int device_id)

add_disk(zram->disk);

-#ifdef CONFIG_SYSFS
ret = sysfs_create_group(&disk_to_dev(zram->disk)->kobj,
&zram_disk_attr_group);
if (ret < 0) {
pr_warning("Error creating sysfs group");
goto out;
}
-#endif

zram->init_done = 0;

@@ -650,10 +648,8 @@ out:

static void destroy_device(struct zram *zram)
{
-#ifdef CONFIG_SYSFS
sysfs_remove_group(&disk_to_dev(zram->disk)->kobj,
&zram_disk_attr_group);
-#endif

if (zram->disk) {
del_gendisk(zram->disk);
diff --git a/drivers/staging/zram/zram_sysfs.c b/drivers/staging/zram/zram_sysfs.c
index 6b3cf00..ad62db2 100644
--- a/drivers/staging/zram/zram_sysfs.c
+++ b/drivers/staging/zram/zram_sysfs.c
@@ -17,8 +17,6 @@

#include "zram_drv.h"

-#ifdef CONFIG_SYSFS
-
static u64 zram_stat64_read(struct zram *zram, u64 *v)
{
u64 val;
@@ -220,5 +218,3 @@ static struct attribute *zram_disk_attrs[] = {
struct attribute_group zram_disk_attr_group = {
.attrs = zram_disk_attrs,
};
-
-#endif /* CONFIG_SYSFS */


2010-12-17 16:02:35

by Jerome Marchand

[permalink] [raw]
Subject: [PATCH 2/4] Staging: zram: round up the disk size provided by user


Currently disksize_store() round down the disk size provided by user.
This is probably not what one would expect, so round up instead.

Signed-off-by: Jerome Marchand <[email protected]>
---
zram_sysfs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/zram/zram_sysfs.c b/drivers/staging/zram/zram_sysfs.c
index ad62db2..a70cc01 100644
--- a/drivers/staging/zram/zram_sysfs.c
+++ b/drivers/staging/zram/zram_sysfs.c
@@ -14,6 +14,7 @@

#include <linux/device.h>
#include <linux/genhd.h>
+#include <linux/mm.h>

#include "zram_drv.h"

@@ -65,7 +66,7 @@ static ssize_t disksize_store(struct device *dev,
if (ret)
return ret;

- zram->disksize &= PAGE_MASK;
+ zram->disksize = PAGE_ALIGN(zram->disksize);
set_capacity(zram->disk, zram->disksize >> SECTOR_SHIFT);

return len;

2010-12-17 16:03:24

by Jerome Marchand

[permalink] [raw]
Subject: [PATCH 3/4] Staging: zram: make zram_read return a bio error if the device is not initialized


Make zram_read() return a bio error if the device is not initialized
instead of pretending nothing happened.

Signed-off-by: Jerome Marchand <[email protected]>
---
zram_drv.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c
index d649b3e..4085958 100644
--- a/drivers/staging/zram/zram_drv.c
+++ b/drivers/staging/zram/zram_drv.c
@@ -208,8 +208,7 @@ static int zram_read(struct zram *zram, struct bio *bio)
struct bio_vec *bvec;

if (unlikely(!zram->init_done)) {
- set_bit(BIO_UPTODATE, &bio->bi_flags);
- bio_endio(bio, 0);
+ bio_endio(bio, -ENXIO);
return 0;
}

2010-12-17 16:04:16

by Jerome Marchand

[permalink] [raw]
Subject: [PATCH 4/4] Staging: zram: simplify zram_make_request


zram_read() and zram_write() always return zero, so make them return
void to simplify the code.

Signed-off-by: Jerome Marchand <[email protected]>
---
zram_drv.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/zram/zram_drv.c b/drivers/staging/zram/zram_drv.c
index 4085958..54577b0 100644
--- a/drivers/staging/zram/zram_drv.c
+++ b/drivers/staging/zram/zram_drv.c
@@ -200,7 +200,7 @@ static void handle_uncompressed_page(struct zram *zram,
flush_dcache_page(page);
}

-static int zram_read(struct zram *zram, struct bio *bio)
+static void zram_read(struct zram *zram, struct bio *bio)
{

int i;
@@ -209,7 +209,7 @@ static int zram_read(struct zram *zram, struct bio *bio)

if (unlikely(!zram->init_done)) {
bio_endio(bio, -ENXIO);
- return 0;
+ return;
}

zram_stat64_inc(zram, &zram->stats.num_reads);
@@ -271,14 +271,13 @@ static int zram_read(struct zram *zram, struct bio *bio)

set_bit(BIO_UPTODATE, &bio->bi_flags);
bio_endio(bio, 0);
- return 0;
+ return;

out:
bio_io_error(bio);
- return 0;
}

-static int zram_write(struct zram *zram, struct bio *bio)
+static void zram_write(struct zram *zram, struct bio *bio)
{
int i, ret;
u32 index;
@@ -402,11 +401,10 @@ memstore:

set_bit(BIO_UPTODATE, &bio->bi_flags);
bio_endio(bio, 0);
- return 0;
+ return;

out:
bio_io_error(bio);
- return 0;
}

/*
@@ -431,7 +429,6 @@ static inline int valid_io_request(struct zram *zram, struct bio *bio)
*/
static int zram_make_request(struct request_queue *queue, struct bio *bio)
{
- int ret = 0;
struct zram *zram = queue->queuedata;

if (unlikely(!zram->init_done)) {
@@ -448,15 +445,15 @@ static int zram_make_request(struct request_queue *queue, struct bio *bio)

switch (bio_data_dir(bio)) {
case READ:
- ret = zram_read(zram, bio);
+ zram_read(zram, bio);
break;

case WRITE:
- ret = zram_write(zram, bio);
+ zram_write(zram, bio);
break;
}

- return ret;
+ return 0;
}

void zram_reset_device(struct zram *zram)

2010-12-20 15:13:21

by Jeff Moyer

[permalink] [raw]
Subject: Re: [PATCH 1/4] Staging: zram: make ZRAM depends on SYSFS

Jerome Marchand <[email protected]> writes:

> We can not configure zram device without sysfs anyway, so make zram
> depends on it.
>
> Signed-off-by: Jerome Marchand <[email protected]>

Acked-by: Jeff Moyer <[email protected]>

2010-12-20 15:14:01

by Jeff Moyer

[permalink] [raw]
Subject: Re: [PATCH 2/4] Staging: zram: round up the disk size provided by user

Jerome Marchand <[email protected]> writes:

> Currently disksize_store() round down the disk size provided by user.
> This is probably not what one would expect, so round up instead.
>
> Signed-off-by: Jerome Marchand <[email protected]>

Acked-by: Jeff Moyer <[email protected]>

2010-12-20 15:14:19

by Jeff Moyer

[permalink] [raw]
Subject: Re: [PATCH 3/4] Staging: zram: make zram_read return a bio error if the device is not initialized

Jerome Marchand <[email protected]> writes:

> Make zram_read() return a bio error if the device is not initialized
> instead of pretending nothing happened.
>
> Signed-off-by: Jerome Marchand <[email protected]>

Acked-by: Jeff Moyer <[email protected]>

2010-12-20 15:14:53

by Jeff Moyer

[permalink] [raw]
Subject: Re: [PATCH 4/4] Staging: zram: simplify zram_make_request

Jerome Marchand <[email protected]> writes:

> zram_read() and zram_write() always return zero, so make them return
> void to simplify the code.
>
> Signed-off-by: Jerome Marchand <[email protected]>

Acked-by: Jeff Moyer <[email protected]>