Commit 7bf6d78d authored by Ingo Molnar's avatar Ingo Molnar Committed by Linus Torvalds

[PATCH] sem2mutex: HPFS

Semaphore to mutex conversion.

The conversion was generated via scripts, and the result was validated
automatically via a script as well.
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 1d5599e3
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
//#define DBG //#define DBG
//#define DEBUG_LOCKS //#define DEBUG_LOCKS
#include <linux/mutex.h>
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/buffer_head.h> #include <linux/buffer_head.h>
#include <linux/hpfs_fs.h> #include <linux/hpfs_fs.h>
...@@ -57,8 +58,8 @@ struct hpfs_inode_info { ...@@ -57,8 +58,8 @@ struct hpfs_inode_info {
unsigned i_ea_uid : 1; /* file's uid is stored in ea */ unsigned i_ea_uid : 1; /* file's uid is stored in ea */
unsigned i_ea_gid : 1; /* file's gid is stored in ea */ unsigned i_ea_gid : 1; /* file's gid is stored in ea */
unsigned i_dirty : 1; unsigned i_dirty : 1;
struct semaphore i_sem; struct mutex i_mutex;
struct semaphore i_parent; struct mutex i_parent_mutex;
loff_t **i_rddir_off; loff_t **i_rddir_off;
struct inode vfs_inode; struct inode vfs_inode;
}; };
......
...@@ -186,9 +186,9 @@ void hpfs_write_inode(struct inode *i) ...@@ -186,9 +186,9 @@ void hpfs_write_inode(struct inode *i)
kfree(hpfs_inode->i_rddir_off); kfree(hpfs_inode->i_rddir_off);
hpfs_inode->i_rddir_off = NULL; hpfs_inode->i_rddir_off = NULL;
} }
down(&hpfs_inode->i_parent); mutex_lock(&hpfs_inode->i_parent_mutex);
if (!i->i_nlink) { if (!i->i_nlink) {
up(&hpfs_inode->i_parent); mutex_unlock(&hpfs_inode->i_parent_mutex);
return; return;
} }
parent = iget_locked(i->i_sb, hpfs_inode->i_parent_dir); parent = iget_locked(i->i_sb, hpfs_inode->i_parent_dir);
...@@ -199,14 +199,14 @@ void hpfs_write_inode(struct inode *i) ...@@ -199,14 +199,14 @@ void hpfs_write_inode(struct inode *i)
hpfs_read_inode(parent); hpfs_read_inode(parent);
unlock_new_inode(parent); unlock_new_inode(parent);
} }
down(&hpfs_inode->i_sem); mutex_lock(&hpfs_inode->i_mutex);
hpfs_write_inode_nolock(i); hpfs_write_inode_nolock(i);
up(&hpfs_inode->i_sem); mutex_unlock(&hpfs_inode->i_mutex);
iput(parent); iput(parent);
} else { } else {
mark_inode_dirty(i); mark_inode_dirty(i);
} }
up(&hpfs_inode->i_parent); mutex_unlock(&hpfs_inode->i_parent_mutex);
} }
void hpfs_write_inode_nolock(struct inode *i) void hpfs_write_inode_nolock(struct inode *i)
......
...@@ -60,7 +60,7 @@ static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) ...@@ -60,7 +60,7 @@ static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
if (dee.read_only) if (dee.read_only)
result->i_mode &= ~0222; result->i_mode &= ~0222;
down(&hpfs_i(dir)->i_sem); mutex_lock(&hpfs_i(dir)->i_mutex);
r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0);
if (r == 1) if (r == 1)
goto bail3; goto bail3;
...@@ -101,11 +101,11 @@ static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) ...@@ -101,11 +101,11 @@ static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
hpfs_write_inode_nolock(result); hpfs_write_inode_nolock(result);
} }
d_instantiate(dentry, result); d_instantiate(dentry, result);
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
unlock_kernel(); unlock_kernel();
return 0; return 0;
bail3: bail3:
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
iput(result); iput(result);
bail2: bail2:
hpfs_brelse4(&qbh0); hpfs_brelse4(&qbh0);
...@@ -168,7 +168,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc ...@@ -168,7 +168,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc
result->i_data.a_ops = &hpfs_aops; result->i_data.a_ops = &hpfs_aops;
hpfs_i(result)->mmu_private = 0; hpfs_i(result)->mmu_private = 0;
down(&hpfs_i(dir)->i_sem); mutex_lock(&hpfs_i(dir)->i_mutex);
r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0);
if (r == 1) if (r == 1)
goto bail2; goto bail2;
...@@ -193,12 +193,12 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc ...@@ -193,12 +193,12 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc
hpfs_write_inode_nolock(result); hpfs_write_inode_nolock(result);
} }
d_instantiate(dentry, result); d_instantiate(dentry, result);
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
unlock_kernel(); unlock_kernel();
return 0; return 0;
bail2: bail2:
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
iput(result); iput(result);
bail1: bail1:
brelse(bh); brelse(bh);
...@@ -254,7 +254,7 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t ...@@ -254,7 +254,7 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t
result->i_blocks = 1; result->i_blocks = 1;
init_special_inode(result, mode, rdev); init_special_inode(result, mode, rdev);
down(&hpfs_i(dir)->i_sem); mutex_lock(&hpfs_i(dir)->i_mutex);
r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0);
if (r == 1) if (r == 1)
goto bail2; goto bail2;
...@@ -271,12 +271,12 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t ...@@ -271,12 +271,12 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t
hpfs_write_inode_nolock(result); hpfs_write_inode_nolock(result);
d_instantiate(dentry, result); d_instantiate(dentry, result);
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
brelse(bh); brelse(bh);
unlock_kernel(); unlock_kernel();
return 0; return 0;
bail2: bail2:
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
iput(result); iput(result);
bail1: bail1:
brelse(bh); brelse(bh);
...@@ -333,7 +333,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy ...@@ -333,7 +333,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy
result->i_op = &page_symlink_inode_operations; result->i_op = &page_symlink_inode_operations;
result->i_data.a_ops = &hpfs_symlink_aops; result->i_data.a_ops = &hpfs_symlink_aops;
down(&hpfs_i(dir)->i_sem); mutex_lock(&hpfs_i(dir)->i_mutex);
r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0);
if (r == 1) if (r == 1)
goto bail2; goto bail2;
...@@ -352,11 +352,11 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy ...@@ -352,11 +352,11 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy
hpfs_write_inode_nolock(result); hpfs_write_inode_nolock(result);
d_instantiate(dentry, result); d_instantiate(dentry, result);
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
unlock_kernel(); unlock_kernel();
return 0; return 0;
bail2: bail2:
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
iput(result); iput(result);
bail1: bail1:
brelse(bh); brelse(bh);
...@@ -382,8 +382,8 @@ static int hpfs_unlink(struct inode *dir, struct dentry *dentry) ...@@ -382,8 +382,8 @@ static int hpfs_unlink(struct inode *dir, struct dentry *dentry)
lock_kernel(); lock_kernel();
hpfs_adjust_length((char *)name, &len); hpfs_adjust_length((char *)name, &len);
again: again:
down(&hpfs_i(inode)->i_parent); mutex_lock(&hpfs_i(inode)->i_parent_mutex);
down(&hpfs_i(dir)->i_sem); mutex_lock(&hpfs_i(dir)->i_mutex);
err = -ENOENT; err = -ENOENT;
de = map_dirent(dir, hpfs_i(dir)->i_dno, (char *)name, len, &dno, &qbh); de = map_dirent(dir, hpfs_i(dir)->i_dno, (char *)name, len, &dno, &qbh);
if (!de) if (!de)
...@@ -410,8 +410,8 @@ static int hpfs_unlink(struct inode *dir, struct dentry *dentry) ...@@ -410,8 +410,8 @@ static int hpfs_unlink(struct inode *dir, struct dentry *dentry)
if (rep++) if (rep++)
break; break;
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
up(&hpfs_i(inode)->i_parent); mutex_unlock(&hpfs_i(inode)->i_parent_mutex);
d_drop(dentry); d_drop(dentry);
spin_lock(&dentry->d_lock); spin_lock(&dentry->d_lock);
if (atomic_read(&dentry->d_count) > 1 || if (atomic_read(&dentry->d_count) > 1 ||
...@@ -442,8 +442,8 @@ static int hpfs_unlink(struct inode *dir, struct dentry *dentry) ...@@ -442,8 +442,8 @@ static int hpfs_unlink(struct inode *dir, struct dentry *dentry)
out1: out1:
hpfs_brelse4(&qbh); hpfs_brelse4(&qbh);
out: out:
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
up(&hpfs_i(inode)->i_parent); mutex_unlock(&hpfs_i(inode)->i_parent_mutex);
unlock_kernel(); unlock_kernel();
return err; return err;
} }
...@@ -463,8 +463,8 @@ static int hpfs_rmdir(struct inode *dir, struct dentry *dentry) ...@@ -463,8 +463,8 @@ static int hpfs_rmdir(struct inode *dir, struct dentry *dentry)
hpfs_adjust_length((char *)name, &len); hpfs_adjust_length((char *)name, &len);
lock_kernel(); lock_kernel();
down(&hpfs_i(inode)->i_parent); mutex_lock(&hpfs_i(inode)->i_parent_mutex);
down(&hpfs_i(dir)->i_sem); mutex_lock(&hpfs_i(dir)->i_mutex);
err = -ENOENT; err = -ENOENT;
de = map_dirent(dir, hpfs_i(dir)->i_dno, (char *)name, len, &dno, &qbh); de = map_dirent(dir, hpfs_i(dir)->i_dno, (char *)name, len, &dno, &qbh);
if (!de) if (!de)
...@@ -502,8 +502,8 @@ static int hpfs_rmdir(struct inode *dir, struct dentry *dentry) ...@@ -502,8 +502,8 @@ static int hpfs_rmdir(struct inode *dir, struct dentry *dentry)
out1: out1:
hpfs_brelse4(&qbh); hpfs_brelse4(&qbh);
out: out:
up(&hpfs_i(dir)->i_sem); mutex_unlock(&hpfs_i(dir)->i_mutex);
up(&hpfs_i(inode)->i_parent); mutex_unlock(&hpfs_i(inode)->i_parent_mutex);
unlock_kernel(); unlock_kernel();
return err; return err;
} }
...@@ -565,12 +565,12 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry, ...@@ -565,12 +565,12 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
lock_kernel(); lock_kernel();
/* order doesn't matter, due to VFS exclusion */ /* order doesn't matter, due to VFS exclusion */
down(&hpfs_i(i)->i_parent); mutex_lock(&hpfs_i(i)->i_parent_mutex);
if (new_inode) if (new_inode)
down(&hpfs_i(new_inode)->i_parent); mutex_lock(&hpfs_i(new_inode)->i_parent_mutex);
down(&hpfs_i(old_dir)->i_sem); mutex_lock(&hpfs_i(old_dir)->i_mutex);
if (new_dir != old_dir) if (new_dir != old_dir)
down(&hpfs_i(new_dir)->i_sem); mutex_lock(&hpfs_i(new_dir)->i_mutex);
/* Erm? Moving over the empty non-busy directory is perfectly legal */ /* Erm? Moving over the empty non-busy directory is perfectly legal */
if (new_inode && S_ISDIR(new_inode->i_mode)) { if (new_inode && S_ISDIR(new_inode->i_mode)) {
...@@ -650,11 +650,11 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry, ...@@ -650,11 +650,11 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
hpfs_decide_conv(i, (char *)new_name, new_len); hpfs_decide_conv(i, (char *)new_name, new_len);
end1: end1:
if (old_dir != new_dir) if (old_dir != new_dir)
up(&hpfs_i(new_dir)->i_sem); mutex_unlock(&hpfs_i(new_dir)->i_mutex);
up(&hpfs_i(old_dir)->i_sem); mutex_unlock(&hpfs_i(old_dir)->i_mutex);
up(&hpfs_i(i)->i_parent); mutex_unlock(&hpfs_i(i)->i_parent_mutex);
if (new_inode) if (new_inode)
up(&hpfs_i(new_inode)->i_parent); mutex_unlock(&hpfs_i(new_inode)->i_parent_mutex);
unlock_kernel(); unlock_kernel();
return err; return err;
} }
......
...@@ -181,8 +181,8 @@ static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags) ...@@ -181,8 +181,8 @@ static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) == if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
SLAB_CTOR_CONSTRUCTOR) { SLAB_CTOR_CONSTRUCTOR) {
init_MUTEX(&ei->i_sem); mutex_init(&ei->i_mutex);
init_MUTEX(&ei->i_parent); mutex_init(&ei->i_parent_mutex);
inode_init_once(&ei->vfs_inode); inode_init_once(&ei->vfs_inode);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment