diff options
| author | Steve French <sfrench@us.ibm.com> | 2006-01-12 17:47:08 -0500 |
|---|---|---|
| committer | Steve French <sfrench@us.ibm.com> | 2006-01-12 17:47:08 -0500 |
| commit | 94bc2be31a01a3055ec94176e595dfe208e92d3b (patch) | |
| tree | ebfbe81c6718a6390bfa1b99c6d228237d818576 /fs/libfs.c | |
| parent | c32a0b689cb9cc160cfcd19735bbf50bb70c6ef4 (diff) | |
| parent | 58cba4650a7a414eabd2b40cc9d8e45fcdf192d9 (diff) | |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/libfs.c')
| -rw-r--r-- | fs/libfs.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/fs/libfs.c b/fs/libfs.c index 58101dff2c66..63c020e6589e 100644 --- a/fs/libfs.c +++ b/fs/libfs.c | |||
| @@ -74,7 +74,7 @@ int dcache_dir_close(struct inode *inode, struct file *file) | |||
| 74 | 74 | ||
| 75 | loff_t dcache_dir_lseek(struct file *file, loff_t offset, int origin) | 75 | loff_t dcache_dir_lseek(struct file *file, loff_t offset, int origin) |
| 76 | { | 76 | { |
| 77 | down(&file->f_dentry->d_inode->i_sem); | 77 | mutex_lock(&file->f_dentry->d_inode->i_mutex); |
| 78 | switch (origin) { | 78 | switch (origin) { |
| 79 | case 1: | 79 | case 1: |
| 80 | offset += file->f_pos; | 80 | offset += file->f_pos; |
| @@ -82,7 +82,7 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int origin) | |||
| 82 | if (offset >= 0) | 82 | if (offset >= 0) |
| 83 | break; | 83 | break; |
| 84 | default: | 84 | default: |
| 85 | up(&file->f_dentry->d_inode->i_sem); | 85 | mutex_unlock(&file->f_dentry->d_inode->i_mutex); |
| 86 | return -EINVAL; | 86 | return -EINVAL; |
| 87 | } | 87 | } |
| 88 | if (offset != file->f_pos) { | 88 | if (offset != file->f_pos) { |
| @@ -93,20 +93,20 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int origin) | |||
| 93 | loff_t n = file->f_pos - 2; | 93 | loff_t n = file->f_pos - 2; |
| 94 | 94 | ||
| 95 | spin_lock(&dcache_lock); | 95 | spin_lock(&dcache_lock); |
| 96 | list_del(&cursor->d_child); | 96 | list_del(&cursor->d_u.d_child); |
| 97 | p = file->f_dentry->d_subdirs.next; | 97 | p = file->f_dentry->d_subdirs.next; |
| 98 | while (n && p != &file->f_dentry->d_subdirs) { | 98 | while (n && p != &file->f_dentry->d_subdirs) { |
| 99 | struct dentry *next; | 99 | struct dentry *next; |
| 100 | next = list_entry(p, struct dentry, d_child); | 100 | next = list_entry(p, struct dentry, d_u.d_child); |
| 101 | if (!d_unhashed(next) && next->d_inode) | 101 | if (!d_unhashed(next) && next->d_inode) |
| 102 | n--; | 102 | n--; |
| 103 | p = p->next; | 103 | p = p->next; |
| 104 | } | 104 | } |
| 105 | list_add_tail(&cursor->d_child, p); | 105 | list_add_tail(&cursor->d_u.d_child, p); |
| 106 | spin_unlock(&dcache_lock); | 106 | spin_unlock(&dcache_lock); |
| 107 | } | 107 | } |
| 108 | } | 108 | } |
| 109 | up(&file->f_dentry->d_inode->i_sem); | 109 | mutex_unlock(&file->f_dentry->d_inode->i_mutex); |
| 110 | return offset; | 110 | return offset; |
| 111 | } | 111 | } |
| 112 | 112 | ||
| @@ -126,7 +126,7 @@ int dcache_readdir(struct file * filp, void * dirent, filldir_t filldir) | |||
| 126 | { | 126 | { |
| 127 | struct dentry *dentry = filp->f_dentry; | 127 | struct dentry *dentry = filp->f_dentry; |
| 128 | struct dentry *cursor = filp->private_data; | 128 | struct dentry *cursor = filp->private_data; |
| 129 | struct list_head *p, *q = &cursor->d_child; | 129 | struct list_head *p, *q = &cursor->d_u.d_child; |
| 130 | ino_t ino; | 130 | ino_t ino; |
| 131 | int i = filp->f_pos; | 131 | int i = filp->f_pos; |
| 132 | 132 | ||
| @@ -153,7 +153,7 @@ int dcache_readdir(struct file * filp, void * dirent, filldir_t filldir) | |||
| 153 | } | 153 | } |
| 154 | for (p=q->next; p != &dentry->d_subdirs; p=p->next) { | 154 | for (p=q->next; p != &dentry->d_subdirs; p=p->next) { |
| 155 | struct dentry *next; | 155 | struct dentry *next; |
| 156 | next = list_entry(p, struct dentry, d_child); | 156 | next = list_entry(p, struct dentry, d_u.d_child); |
| 157 | if (d_unhashed(next) || !next->d_inode) | 157 | if (d_unhashed(next) || !next->d_inode) |
| 158 | continue; | 158 | continue; |
| 159 | 159 | ||
| @@ -261,7 +261,7 @@ int simple_empty(struct dentry *dentry) | |||
| 261 | int ret = 0; | 261 | int ret = 0; |
| 262 | 262 | ||
| 263 | spin_lock(&dcache_lock); | 263 | spin_lock(&dcache_lock); |
| 264 | list_for_each_entry(child, &dentry->d_subdirs, d_child) | 264 | list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child) |
| 265 | if (simple_positive(child)) | 265 | if (simple_positive(child)) |
| 266 | goto out; | 266 | goto out; |
| 267 | ret = 1; | 267 | ret = 1; |
| @@ -356,7 +356,7 @@ int simple_commit_write(struct file *file, struct page *page, | |||
| 356 | 356 | ||
| 357 | /* | 357 | /* |
| 358 | * No need to use i_size_read() here, the i_size | 358 | * No need to use i_size_read() here, the i_size |
| 359 | * cannot change under us because we hold the i_sem. | 359 | * cannot change under us because we hold the i_mutex. |
| 360 | */ | 360 | */ |
| 361 | if (pos > inode->i_size) | 361 | if (pos > inode->i_size) |
| 362 | i_size_write(inode, pos); | 362 | i_size_write(inode, pos); |
