diff options
author | David Woodhouse <dwmw2@infradead.org> | 2007-01-17 18:34:51 -0500 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2007-01-17 18:34:51 -0500 |
commit | 9cdf083f981b8d37b3212400a359368661385099 (patch) | |
tree | aa15a6a08ad87e650dea40fb59b3180bef0d345b /fs/configfs/dir.c | |
parent | e499e01d234a31d59679b7b1e1cf628d917ba49a (diff) | |
parent | a8b3485287731978899ced11f24628c927890e78 (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.c | 19 |
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 | */ |
96 | int configfs_dirent_exists(struct configfs_dirent *parent_sd, | 96 | static 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 | ||
981 | static int configfs_dir_open(struct inode *inode, struct file *file) | 981 | static 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 | ||
994 | static int configfs_dir_close(struct inode *inode, struct file *file) | 994 | static 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 | ||
1014 | static int configfs_readdir(struct file * filp, void * dirent, filldir_t filldir) | 1014 | static 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 | ||
1071 | static loff_t configfs_dir_lseek(struct file * file, loff_t offset, int origin) | 1071 | static 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 | } |