zisofs use mutex instead of semaphore
authorDave Young <hidave.darkstar@gmail.com>
Wed, 17 Oct 2007 06:26:10 +0000 (23:26 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 17 Oct 2007 15:42:47 +0000 (08:42 -0700)
Use mutex instead of semaphore in fs/isofs/compress.c, and remove an
unnecessary variable.

Signed-off-by: Dave Young <hidave.darkstar@gmail.com>
Acked-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/isofs/compress.c

index 6bbbdb5..37dbd64 100644 (file)
@@ -33,7 +33,7 @@ static char zisofs_sink_page[PAGE_CACHE_SIZE];
  * allocation; this avoids failures at block-decompression time.
  */
 static void *zisofs_zlib_workspace;
-static struct semaphore zisofs_zlib_semaphore;
+static DEFINE_MUTEX(zisofs_zlib_lock);
 
 /*
  * When decompressing, we typically obtain more than one page
@@ -180,9 +180,9 @@ static int zisofs_readpage(struct file *file, struct page *page)
 
                /* First block is special since it may be fractional.
                   We also wait for it before grabbing the zlib
-                  semaphore; odds are that the subsequent blocks are
+                  mutex; odds are that the subsequent blocks are
                   going to come in in short order so we don't hold
-                  the zlib semaphore longer than necessary. */
+                  the zlib mutex longer than necessary. */
 
                if ( !bh || (wait_on_buffer(bh), !buffer_uptodate(bh)) ) {
                        printk(KERN_DEBUG "zisofs: Hit null buffer, fpage = %d, xpage = %d, csize = %ld\n",
@@ -194,7 +194,7 @@ static int zisofs_readpage(struct file *file, struct page *page)
                csize -= stream.avail_in;
 
                stream.workspace = zisofs_zlib_workspace;
-               down(&zisofs_zlib_semaphore);
+               mutex_lock(&zisofs_zlib_lock);
                
                zerr = zlib_inflateInit(&stream);
                if ( zerr != Z_OK ) {
@@ -281,7 +281,7 @@ static int zisofs_readpage(struct file *file, struct page *page)
                zlib_inflateEnd(&stream);
 
        z_eio:
-               up(&zisofs_zlib_semaphore);
+               mutex_unlock(&zisofs_zlib_lock);
 
        b_eio:
                for ( i = 0 ; i < haveblocks ; i++ ) {
@@ -317,31 +317,16 @@ const struct address_space_operations zisofs_aops = {
        /* No bmap operation supported */
 };
 
-static int initialized;
-
 int __init zisofs_init(void)
 {
-       if ( initialized ) {
-               printk("zisofs_init: called more than once\n");
-               return 0;
-       }
-
        zisofs_zlib_workspace = vmalloc(zlib_inflate_workspacesize());
        if ( !zisofs_zlib_workspace )
                return -ENOMEM;
-       init_MUTEX(&zisofs_zlib_semaphore);
 
-       initialized = 1;
        return 0;
 }
 
 void zisofs_cleanup(void)
 {
-       if ( !initialized ) {
-               printk("zisofs_cleanup: called without initialization\n");
-               return;
-       }
-
        vfree(zisofs_zlib_workspace);
-       initialized = 0;
 }