Revert "zram: use zram->lock to protect zram_free_page() in swap free notify path"
authorBen Hutchings <ben@decadent.org.uk>
Sun, 20 Oct 2013 12:37:39 +0000 (13:37 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Sat, 26 Oct 2013 20:06:11 +0000 (21:06 +0100)
This reverts commit 9e443904906ca2b5b3ae71f34ac4a4fa6905623e, which
was commit 57ab048532c0d975538cebd4456491b5c34248f4 upstream.

Taking the semaphore here leads to sleeping in atomic context.  This
was fixed in mainline commit a0c516cbfc74 ("zram: don't grab mutex in
zram_slot_free_noity") but that is too difficult to backport.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/staging/zram/zram_drv.c
drivers/staging/zram/zram_drv.h

index 926d483..d197b3e 100644 (file)
@@ -709,9 +709,7 @@ static void zram_slot_free_notify(struct block_device *bdev,
        struct zram *zram;
 
        zram = bdev->bd_disk->private_data;
-       down_write(&zram->lock);
        zram_free_page(zram, index);
-       up_write(&zram->lock);
        zram_stat64_inc(zram, &zram->stats.notify_free);
 }
 
index 87f2fec..e5cd246 100644 (file)
@@ -107,9 +107,8 @@ struct zram {
        void *compress_buffer;
        struct table *table;
        spinlock_t stat64_lock; /* protect 64-bit stats */
-       struct rw_semaphore lock; /* protect compression buffers, table,
-                                  * 32bit stat counters against concurrent
-                                  * notifications, reads and writes */
+       struct rw_semaphore lock; /* protect compression buffers and table
+                                  * against concurrent read and writes */
        struct request_queue *queue;
        struct gendisk *disk;
        int init_done;