[PATCH] sem2mutex: autofs4 wq_sem
authorIngo Molnar <mingo@elte.hu>
Thu, 23 Mar 2006 11:00:41 +0000 (03:00 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 23 Mar 2006 15:38:13 +0000 (07:38 -0800)
Semaphore to mutex conversion.

The conversion was generated via scripts, and the result was validated
automatically via a script as well.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Ian Kent <raven@themaw.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/autofs4/autofs_i.h
fs/autofs4/inode.c
fs/autofs4/waitq.c

index 385bed0..f54c5b2 100644 (file)
@@ -13,6 +13,7 @@
 /* Internal header file for autofs */
 
 #include <linux/auto_fs4.h>
+#include <linux/mutex.h>
 #include <linux/list.h>
 
 /* This is the range of ioctl() numbers we claim as ours */
@@ -102,7 +103,7 @@ struct autofs_sb_info {
        int reghost_enabled;
        int needs_reghost;
        struct super_block *sb;
-       struct semaphore wq_sem;
+       struct mutex wq_mutex;
        spinlock_t fs_lock;
        struct autofs_wait_queue *queues; /* Wait queue pointer */
 };
index 2d30828..1ad98d4 100644 (file)
@@ -269,7 +269,7 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
        sbi->sb = s;
        sbi->version = 0;
        sbi->sub_version = 0;
-       init_MUTEX(&sbi->wq_sem);
+       mutex_init(&sbi->wq_mutex);
        spin_lock_init(&sbi->fs_lock);
        sbi->queues = NULL;
        s->s_blocksize = 1024;
index 394ff36..be78e93 100644 (file)
@@ -178,7 +178,7 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
                return -ENOENT;
        }
 
-       if (down_interruptible(&sbi->wq_sem)) {
+       if (mutex_lock_interruptible(&sbi->wq_mutex)) {
                kfree(name);
                return -EINTR;
        }
@@ -194,7 +194,7 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
                /* Can't wait for an expire if there's no mount */
                if (notify == NFY_NONE && !d_mountpoint(dentry)) {
                        kfree(name);
-                       up(&sbi->wq_sem);
+                       mutex_unlock(&sbi->wq_mutex);
                        return -ENOENT;
                }
 
@@ -202,7 +202,7 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
                wq = kmalloc(sizeof(struct autofs_wait_queue),GFP_KERNEL);
                if ( !wq ) {
                        kfree(name);
-                       up(&sbi->wq_sem);
+                       mutex_unlock(&sbi->wq_mutex);
                        return -ENOMEM;
                }
 
@@ -218,10 +218,10 @@ int autofs4_wait(struct autofs_sb_info *sbi, struct dentry *dentry,
                wq->status = -EINTR; /* Status return if interrupted */
                atomic_set(&wq->wait_ctr, 2);
                atomic_set(&wq->notified, 1);
-               up(&sbi->wq_sem);
+               mutex_unlock(&sbi->wq_mutex);
        } else {
                atomic_inc(&wq->wait_ctr);
-               up(&sbi->wq_sem);
+               mutex_unlock(&sbi->wq_mutex);
                kfree(name);
                DPRINTK("existing wait id = 0x%08lx, name = %.*s, nfy=%d",
                        (unsigned long) wq->wait_queue_token, wq->len, wq->name, notify);
@@ -282,19 +282,19 @@ int autofs4_wait_release(struct autofs_sb_info *sbi, autofs_wqt_t wait_queue_tok
 {
        struct autofs_wait_queue *wq, **wql;
 
-       down(&sbi->wq_sem);
+       mutex_lock(&sbi->wq_mutex);
        for ( wql = &sbi->queues ; (wq = *wql) != 0 ; wql = &wq->next ) {
                if ( wq->wait_queue_token == wait_queue_token )
                        break;
        }
 
        if ( !wq ) {
-               up(&sbi->wq_sem);
+               mutex_unlock(&sbi->wq_mutex);
                return -EINVAL;
        }
 
        *wql = wq->next;        /* Unlink from chain */
-       up(&sbi->wq_sem);
+       mutex_unlock(&sbi->wq_mutex);
        kfree(wq->name);
        wq->name = NULL;        /* Do not wait on this queue */