fat: drop lock/unlock super
Removed lock/unlock super. Added a new private s_lock mutex. Signed-off-by: Marco Stornelli <marco.stornelli@gmail.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -208,7 +208,7 @@ static struct dentry *msdos_lookup(struct inode *dir, struct dentry *dentry,
|
||||
struct inode *inode;
|
||||
int err;
|
||||
|
||||
lock_super(sb);
|
||||
mutex_lock(&MSDOS_SB(sb)->s_lock);
|
||||
err = msdos_find(dir, dentry->d_name.name, dentry->d_name.len, &sinfo);
|
||||
switch (err) {
|
||||
case -ENOENT:
|
||||
@@ -221,7 +221,7 @@ static struct dentry *msdos_lookup(struct inode *dir, struct dentry *dentry,
|
||||
default:
|
||||
inode = ERR_PTR(err);
|
||||
}
|
||||
unlock_super(sb);
|
||||
mutex_unlock(&MSDOS_SB(sb)->s_lock);
|
||||
return d_splice_alias(inode, dentry);
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ static int msdos_create(struct inode *dir, struct dentry *dentry, umode_t mode,
|
||||
unsigned char msdos_name[MSDOS_NAME];
|
||||
int err, is_hid;
|
||||
|
||||
lock_super(sb);
|
||||
mutex_lock(&MSDOS_SB(sb)->s_lock);
|
||||
|
||||
err = msdos_format_name(dentry->d_name.name, dentry->d_name.len,
|
||||
msdos_name, &MSDOS_SB(sb)->options);
|
||||
@@ -302,7 +302,7 @@ static int msdos_create(struct inode *dir, struct dentry *dentry, umode_t mode,
|
||||
|
||||
d_instantiate(dentry, inode);
|
||||
out:
|
||||
unlock_super(sb);
|
||||
mutex_unlock(&MSDOS_SB(sb)->s_lock);
|
||||
if (!err)
|
||||
err = fat_flush_inodes(sb, dir, inode);
|
||||
return err;
|
||||
@@ -316,7 +316,7 @@ static int msdos_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
struct fat_slot_info sinfo;
|
||||
int err;
|
||||
|
||||
lock_super(sb);
|
||||
mutex_lock(&MSDOS_SB(sb)->s_lock);
|
||||
/*
|
||||
* Check whether the directory is not in use, then check
|
||||
* whether it is empty.
|
||||
@@ -337,7 +337,7 @@ static int msdos_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
inode->i_ctime = CURRENT_TIME_SEC;
|
||||
fat_detach(inode);
|
||||
out:
|
||||
unlock_super(sb);
|
||||
mutex_unlock(&MSDOS_SB(sb)->s_lock);
|
||||
if (!err)
|
||||
err = fat_flush_inodes(sb, dir, inode);
|
||||
|
||||
@@ -354,7 +354,7 @@ static int msdos_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
|
||||
struct timespec ts;
|
||||
int err, is_hid, cluster;
|
||||
|
||||
lock_super(sb);
|
||||
mutex_lock(&MSDOS_SB(sb)->s_lock);
|
||||
|
||||
err = msdos_format_name(dentry->d_name.name, dentry->d_name.len,
|
||||
msdos_name, &MSDOS_SB(sb)->options);
|
||||
@@ -392,14 +392,14 @@ static int msdos_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
|
||||
|
||||
d_instantiate(dentry, inode);
|
||||
|
||||
unlock_super(sb);
|
||||
mutex_unlock(&MSDOS_SB(sb)->s_lock);
|
||||
fat_flush_inodes(sb, dir, inode);
|
||||
return 0;
|
||||
|
||||
out_free:
|
||||
fat_free_clusters(dir, cluster);
|
||||
out:
|
||||
unlock_super(sb);
|
||||
mutex_unlock(&MSDOS_SB(sb)->s_lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -411,7 +411,7 @@ static int msdos_unlink(struct inode *dir, struct dentry *dentry)
|
||||
struct fat_slot_info sinfo;
|
||||
int err;
|
||||
|
||||
lock_super(sb);
|
||||
mutex_lock(&MSDOS_SB(sb)->s_lock);
|
||||
err = msdos_find(dir, dentry->d_name.name, dentry->d_name.len, &sinfo);
|
||||
if (err)
|
||||
goto out;
|
||||
@@ -423,7 +423,7 @@ static int msdos_unlink(struct inode *dir, struct dentry *dentry)
|
||||
inode->i_ctime = CURRENT_TIME_SEC;
|
||||
fat_detach(inode);
|
||||
out:
|
||||
unlock_super(sb);
|
||||
mutex_unlock(&MSDOS_SB(sb)->s_lock);
|
||||
if (!err)
|
||||
err = fat_flush_inodes(sb, dir, inode);
|
||||
|
||||
@@ -606,7 +606,7 @@ static int msdos_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
unsigned char old_msdos_name[MSDOS_NAME], new_msdos_name[MSDOS_NAME];
|
||||
int err, is_hid;
|
||||
|
||||
lock_super(sb);
|
||||
mutex_lock(&MSDOS_SB(sb)->s_lock);
|
||||
|
||||
err = msdos_format_name(old_dentry->d_name.name,
|
||||
old_dentry->d_name.len, old_msdos_name,
|
||||
@@ -625,7 +625,7 @@ static int msdos_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
err = do_msdos_rename(old_dir, old_msdos_name, old_dentry,
|
||||
new_dir, new_msdos_name, new_dentry, is_hid);
|
||||
out:
|
||||
unlock_super(sb);
|
||||
mutex_unlock(&MSDOS_SB(sb)->s_lock);
|
||||
if (!err)
|
||||
err = fat_flush_inodes(sb, old_dir, new_dir);
|
||||
return err;
|
||||
|
Reference in New Issue
Block a user