aboutsummaryrefslogtreecommitdiffstats
path: root/fs/configfs/dir.c
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2007-01-17 18:34:51 -0500
committerDavid Woodhouse <dwmw2@infradead.org>2007-01-17 18:34:51 -0500
commit9cdf083f981b8d37b3212400a359368661385099 (patch)
treeaa15a6a08ad87e650dea40fb59b3180bef0d345b /fs/configfs/dir.c
parente499e01d234a31d59679b7b1e1cf628d917ba49a (diff)
parenta8b3485287731978899ced11f24628c927890e78 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'fs/configfs/dir.c')
-rw-r--r--fs/configfs/dir.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
index 8a3b6a1a6ad1..1814ba446809 100644
--- a/fs/configfs/dir.c
+++ b/fs/configfs/dir.c
@@ -93,8 +93,8 @@ static struct configfs_dirent *configfs_new_dirent(struct configfs_dirent * pare
93 * 93 *
94 * called with parent inode's i_mutex held 94 * called with parent inode's i_mutex held
95 */ 95 */
96int configfs_dirent_exists(struct configfs_dirent *parent_sd, 96static int configfs_dirent_exists(struct configfs_dirent *parent_sd,
97 const unsigned char *new) 97 const unsigned char *new)
98{ 98{
99 struct configfs_dirent * sd; 99 struct configfs_dirent * sd;
100 100
@@ -980,7 +980,7 @@ int configfs_rename_dir(struct config_item * item, const char *new_name)
980 980
981static int configfs_dir_open(struct inode *inode, struct file *file) 981static int configfs_dir_open(struct inode *inode, struct file *file)
982{ 982{
983 struct dentry * dentry = file->f_dentry; 983 struct dentry * dentry = file->f_path.dentry;
984 struct configfs_dirent * parent_sd = dentry->d_fsdata; 984 struct configfs_dirent * parent_sd = dentry->d_fsdata;
985 985
986 mutex_lock(&dentry->d_inode->i_mutex); 986 mutex_lock(&dentry->d_inode->i_mutex);
@@ -993,7 +993,7 @@ static int configfs_dir_open(struct inode *inode, struct file *file)
993 993
994static int configfs_dir_close(struct inode *inode, struct file *file) 994static int configfs_dir_close(struct inode *inode, struct file *file)
995{ 995{
996 struct dentry * dentry = file->f_dentry; 996 struct dentry * dentry = file->f_path.dentry;
997 struct configfs_dirent * cursor = file->private_data; 997 struct configfs_dirent * cursor = file->private_data;
998 998
999 mutex_lock(&dentry->d_inode->i_mutex); 999 mutex_lock(&dentry->d_inode->i_mutex);
@@ -1013,7 +1013,7 @@ static inline unsigned char dt_type(struct configfs_dirent *sd)
1013 1013
1014static int configfs_readdir(struct file * filp, void * dirent, filldir_t filldir) 1014static int configfs_readdir(struct file * filp, void * dirent, filldir_t filldir)
1015{ 1015{
1016 struct dentry *dentry = filp->f_dentry; 1016 struct dentry *dentry = filp->f_path.dentry;
1017 struct configfs_dirent * parent_sd = dentry->d_fsdata; 1017 struct configfs_dirent * parent_sd = dentry->d_fsdata;
1018 struct configfs_dirent *cursor = filp->private_data; 1018 struct configfs_dirent *cursor = filp->private_data;
1019 struct list_head *p, *q = &cursor->s_sibling; 1019 struct list_head *p, *q = &cursor->s_sibling;
@@ -1070,7 +1070,7 @@ static int configfs_readdir(struct file * filp, void * dirent, filldir_t filldir
1070 1070
1071static loff_t configfs_dir_lseek(struct file * file, loff_t offset, int origin) 1071static loff_t configfs_dir_lseek(struct file * file, loff_t offset, int origin)
1072{ 1072{
1073 struct dentry * dentry = file->f_dentry; 1073 struct dentry * dentry = file->f_path.dentry;
1074 1074
1075 mutex_lock(&dentry->d_inode->i_mutex); 1075 mutex_lock(&dentry->d_inode->i_mutex);
1076 switch (origin) { 1076 switch (origin) {
@@ -1080,7 +1080,7 @@ static loff_t configfs_dir_lseek(struct file * file, loff_t offset, int origin)
1080 if (offset >= 0) 1080 if (offset >= 0)
1081 break; 1081 break;
1082 default: 1082 default:
1083 mutex_unlock(&file->f_dentry->d_inode->i_mutex); 1083 mutex_unlock(&file->f_path.dentry->d_inode->i_mutex);
1084 return -EINVAL; 1084 return -EINVAL;
1085 } 1085 }
1086 if (offset != file->f_pos) { 1086 if (offset != file->f_pos) {
@@ -1176,8 +1176,9 @@ void configfs_unregister_subsystem(struct configfs_subsystem *subsys)
1176 return; 1176 return;
1177 } 1177 }
1178 1178
1179 mutex_lock(&configfs_sb->s_root->d_inode->i_mutex); 1179 mutex_lock_nested(&configfs_sb->s_root->d_inode->i_mutex,
1180 mutex_lock(&dentry->d_inode->i_mutex); 1180 I_MUTEX_PARENT);
1181 mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_CHILD);
1181 if (configfs_detach_prep(dentry)) { 1182 if (configfs_detach_prep(dentry)) {
1182 printk(KERN_ERR "configfs: Tried to unregister non-empty subsystem!\n"); 1183 printk(KERN_ERR "configfs: Tried to unregister non-empty subsystem!\n");
1183 } 1184 }