diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/cifs/dir.c | 8 | ||||
| -rw-r--r-- | fs/cifs/fcntl.c | 4 | ||||
| -rw-r--r-- | fs/cifs/file.c | 4 | ||||
| -rw-r--r-- | fs/cifs/inode.c | 16 | ||||
| -rw-r--r-- | fs/cifs/link.c | 16 | ||||
| -rw-r--r-- | fs/cifs/readdir.c | 4 | ||||
| -rw-r--r-- | fs/cifs/xattr.c | 16 | ||||
| -rw-r--r-- | fs/namei.c | 12 | ||||
| -rw-r--r-- | fs/super.c | 2 |
9 files changed, 41 insertions, 41 deletions
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c index fed55e3c53df..632561dd9c50 100644 --- a/fs/cifs/dir.c +++ b/fs/cifs/dir.c | |||
| @@ -138,9 +138,9 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode, | |||
| 138 | cifs_sb = CIFS_SB(inode->i_sb); | 138 | cifs_sb = CIFS_SB(inode->i_sb); |
| 139 | pTcon = cifs_sb->tcon; | 139 | pTcon = cifs_sb->tcon; |
| 140 | 140 | ||
| 141 | down(&direntry->d_sb->s_vfs_rename_sem); | 141 | mutex_lock(&direntry->d_sb->s_vfs_rename_mutex); |
| 142 | full_path = build_path_from_dentry(direntry); | 142 | full_path = build_path_from_dentry(direntry); |
| 143 | up(&direntry->d_sb->s_vfs_rename_sem); | 143 | mutex_unlock(&direntry->d_sb->s_vfs_rename_mutex); |
| 144 | if(full_path == NULL) { | 144 | if(full_path == NULL) { |
| 145 | FreeXid(xid); | 145 | FreeXid(xid); |
| 146 | return -ENOMEM; | 146 | return -ENOMEM; |
| @@ -317,9 +317,9 @@ int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode, | |||
| 317 | cifs_sb = CIFS_SB(inode->i_sb); | 317 | cifs_sb = CIFS_SB(inode->i_sb); |
| 318 | pTcon = cifs_sb->tcon; | 318 | pTcon = cifs_sb->tcon; |
| 319 | 319 | ||
| 320 | down(&direntry->d_sb->s_vfs_rename_sem); | 320 | mutex_lock(&direntry->d_sb->s_vfs_rename_mutex); |
| 321 | full_path = build_path_from_dentry(direntry); | 321 | full_path = build_path_from_dentry(direntry); |
| 322 | up(&direntry->d_sb->s_vfs_rename_sem); | 322 | mutex_unlock(&direntry->d_sb->s_vfs_rename_mutex); |
| 323 | if(full_path == NULL) | 323 | if(full_path == NULL) |
| 324 | rc = -ENOMEM; | 324 | rc = -ENOMEM; |
| 325 | else if (pTcon->ses->capabilities & CAP_UNIX) { | 325 | else if (pTcon->ses->capabilities & CAP_UNIX) { |
diff --git a/fs/cifs/fcntl.c b/fs/cifs/fcntl.c index a7a47bb36bf3..ec4dfe9bf5ef 100644 --- a/fs/cifs/fcntl.c +++ b/fs/cifs/fcntl.c | |||
| @@ -86,9 +86,9 @@ int cifs_dir_notify(struct file * file, unsigned long arg) | |||
| 86 | cifs_sb = CIFS_SB(file->f_dentry->d_sb); | 86 | cifs_sb = CIFS_SB(file->f_dentry->d_sb); |
| 87 | pTcon = cifs_sb->tcon; | 87 | pTcon = cifs_sb->tcon; |
| 88 | 88 | ||
| 89 | down(&file->f_dentry->d_sb->s_vfs_rename_sem); | 89 | mutex_lock(&file->f_dentry->d_sb->s_vfs_rename_mutex); |
| 90 | full_path = build_path_from_dentry(file->f_dentry); | 90 | full_path = build_path_from_dentry(file->f_dentry); |
| 91 | up(&file->f_dentry->d_sb->s_vfs_rename_sem); | 91 | mutex_unlock(&file->f_dentry->d_sb->s_vfs_rename_mutex); |
| 92 | 92 | ||
| 93 | if(full_path == NULL) { | 93 | if(full_path == NULL) { |
| 94 | rc = -ENOMEM; | 94 | rc = -ENOMEM; |
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 675bd2568297..165d67426381 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
| @@ -203,9 +203,9 @@ int cifs_open(struct inode *inode, struct file *file) | |||
| 203 | } | 203 | } |
| 204 | } | 204 | } |
| 205 | 205 | ||
| 206 | down(&inode->i_sb->s_vfs_rename_sem); | 206 | mutex_lock(&inode->i_sb->s_vfs_rename_mutex); |
| 207 | full_path = build_path_from_dentry(file->f_dentry); | 207 | full_path = build_path_from_dentry(file->f_dentry); |
| 208 | up(&inode->i_sb->s_vfs_rename_sem); | 208 | mutex_unlock(&inode->i_sb->s_vfs_rename_mutex); |
| 209 | if (full_path == NULL) { | 209 | if (full_path == NULL) { |
| 210 | FreeXid(xid); | 210 | FreeXid(xid); |
| 211 | return -ENOMEM; | 211 | return -ENOMEM; |
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index 59359911f481..ff93a9f81d1c 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c | |||
| @@ -574,9 +574,9 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry) | |||
| 574 | 574 | ||
| 575 | /* Unlink can be called from rename so we can not grab the sem here | 575 | /* Unlink can be called from rename so we can not grab the sem here |
| 576 | since we deadlock otherwise */ | 576 | since we deadlock otherwise */ |
| 577 | /* down(&direntry->d_sb->s_vfs_rename_sem);*/ | 577 | /* mutex_lock(&direntry->d_sb->s_vfs_rename_mutex);*/ |
| 578 | full_path = build_path_from_dentry(direntry); | 578 | full_path = build_path_from_dentry(direntry); |
| 579 | /* up(&direntry->d_sb->s_vfs_rename_sem);*/ | 579 | /* mutex_unlock(&direntry->d_sb->s_vfs_rename_mutex);*/ |
| 580 | if (full_path == NULL) { | 580 | if (full_path == NULL) { |
| 581 | FreeXid(xid); | 581 | FreeXid(xid); |
| 582 | return -ENOMEM; | 582 | return -ENOMEM; |
| @@ -718,9 +718,9 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, int mode) | |||
| 718 | cifs_sb = CIFS_SB(inode->i_sb); | 718 | cifs_sb = CIFS_SB(inode->i_sb); |
| 719 | pTcon = cifs_sb->tcon; | 719 | pTcon = cifs_sb->tcon; |
| 720 | 720 | ||
| 721 | down(&inode->i_sb->s_vfs_rename_sem); | 721 | mutex_lock(&inode->i_sb->s_vfs_rename_mutex); |
| 722 | full_path = build_path_from_dentry(direntry); | 722 | full_path = build_path_from_dentry(direntry); |
| 723 | up(&inode->i_sb->s_vfs_rename_sem); | 723 | mutex_unlock(&inode->i_sb->s_vfs_rename_mutex); |
| 724 | if (full_path == NULL) { | 724 | if (full_path == NULL) { |
| 725 | FreeXid(xid); | 725 | FreeXid(xid); |
| 726 | return -ENOMEM; | 726 | return -ENOMEM; |
| @@ -803,9 +803,9 @@ int cifs_rmdir(struct inode *inode, struct dentry *direntry) | |||
| 803 | cifs_sb = CIFS_SB(inode->i_sb); | 803 | cifs_sb = CIFS_SB(inode->i_sb); |
| 804 | pTcon = cifs_sb->tcon; | 804 | pTcon = cifs_sb->tcon; |
| 805 | 805 | ||
| 806 | down(&inode->i_sb->s_vfs_rename_sem); | 806 | mutex_lock(&inode->i_sb->s_vfs_rename_mutex); |
| 807 | full_path = build_path_from_dentry(direntry); | 807 | full_path = build_path_from_dentry(direntry); |
| 808 | up(&inode->i_sb->s_vfs_rename_sem); | 808 | mutex_unlock(&inode->i_sb->s_vfs_rename_mutex); |
| 809 | if (full_path == NULL) { | 809 | if (full_path == NULL) { |
| 810 | FreeXid(xid); | 810 | FreeXid(xid); |
| 811 | return -ENOMEM; | 811 | return -ENOMEM; |
| @@ -1137,9 +1137,9 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs) | |||
| 1137 | rc = 0; | 1137 | rc = 0; |
| 1138 | } | 1138 | } |
| 1139 | 1139 | ||
| 1140 | down(&direntry->d_sb->s_vfs_rename_sem); | 1140 | mutex_lock(&direntry->d_sb->s_vfs_rename_mutex); |
| 1141 | full_path = build_path_from_dentry(direntry); | 1141 | full_path = build_path_from_dentry(direntry); |
| 1142 | up(&direntry->d_sb->s_vfs_rename_sem); | 1142 | mutex_unlock(&direntry->d_sb->s_vfs_rename_mutex); |
| 1143 | if (full_path == NULL) { | 1143 | if (full_path == NULL) { |
| 1144 | FreeXid(xid); | 1144 | FreeXid(xid); |
| 1145 | return -ENOMEM; | 1145 | return -ENOMEM; |
diff --git a/fs/cifs/link.c b/fs/cifs/link.c index 0f99aae33162..8d0da7c87c7b 100644 --- a/fs/cifs/link.c +++ b/fs/cifs/link.c | |||
| @@ -48,10 +48,10 @@ cifs_hardlink(struct dentry *old_file, struct inode *inode, | |||
| 48 | /* No need to check for cross device links since server will do that | 48 | /* No need to check for cross device links since server will do that |
| 49 | BB note DFS case in future though (when we may have to check) */ | 49 | BB note DFS case in future though (when we may have to check) */ |
| 50 | 50 | ||
| 51 | down(&inode->i_sb->s_vfs_rename_sem); | 51 | mutex_lock(&inode->i_sb->s_vfs_rename_mutex); |
| 52 | fromName = build_path_from_dentry(old_file); | 52 | fromName = build_path_from_dentry(old_file); |
| 53 | toName = build_path_from_dentry(direntry); | 53 | toName = build_path_from_dentry(direntry); |
| 54 | up(&inode->i_sb->s_vfs_rename_sem); | 54 | mutex_unlock(&inode->i_sb->s_vfs_rename_mutex); |
| 55 | if((fromName == NULL) || (toName == NULL)) { | 55 | if((fromName == NULL) || (toName == NULL)) { |
| 56 | rc = -ENOMEM; | 56 | rc = -ENOMEM; |
| 57 | goto cifs_hl_exit; | 57 | goto cifs_hl_exit; |
| @@ -103,9 +103,9 @@ cifs_follow_link(struct dentry *direntry, struct nameidata *nd) | |||
| 103 | 103 | ||
| 104 | xid = GetXid(); | 104 | xid = GetXid(); |
| 105 | 105 | ||
| 106 | down(&direntry->d_sb->s_vfs_rename_sem); | 106 | mutex_lock(&direntry->d_sb->s_vfs_rename_mutex); |
| 107 | full_path = build_path_from_dentry(direntry); | 107 | full_path = build_path_from_dentry(direntry); |
| 108 | up(&direntry->d_sb->s_vfs_rename_sem); | 108 | mutex_unlock(&direntry->d_sb->s_vfs_rename_mutex); |
| 109 | 109 | ||
| 110 | if (!full_path) | 110 | if (!full_path) |
| 111 | goto out_no_free; | 111 | goto out_no_free; |
| @@ -164,9 +164,9 @@ cifs_symlink(struct inode *inode, struct dentry *direntry, const char *symname) | |||
| 164 | cifs_sb = CIFS_SB(inode->i_sb); | 164 | cifs_sb = CIFS_SB(inode->i_sb); |
| 165 | pTcon = cifs_sb->tcon; | 165 | pTcon = cifs_sb->tcon; |
| 166 | 166 | ||
| 167 | down(&inode->i_sb->s_vfs_rename_sem); | 167 | mutex_lock(&inode->i_sb->s_vfs_rename_mutex); |
| 168 | full_path = build_path_from_dentry(direntry); | 168 | full_path = build_path_from_dentry(direntry); |
| 169 | up(&inode->i_sb->s_vfs_rename_sem); | 169 | mutex_unlock(&inode->i_sb->s_vfs_rename_mutex); |
| 170 | 170 | ||
| 171 | if(full_path == NULL) { | 171 | if(full_path == NULL) { |
| 172 | FreeXid(xid); | 172 | FreeXid(xid); |
| @@ -232,9 +232,9 @@ cifs_readlink(struct dentry *direntry, char __user *pBuffer, int buflen) | |||
| 232 | 232 | ||
| 233 | /* BB would it be safe against deadlock to grab this sem | 233 | /* BB would it be safe against deadlock to grab this sem |
| 234 | even though rename itself grabs the sem and calls lookup? */ | 234 | even though rename itself grabs the sem and calls lookup? */ |
| 235 | /* down(&inode->i_sb->s_vfs_rename_sem);*/ | 235 | /* mutex_lock(&inode->i_sb->s_vfs_rename_mutex);*/ |
| 236 | full_path = build_path_from_dentry(direntry); | 236 | full_path = build_path_from_dentry(direntry); |
| 237 | /* up(&inode->i_sb->s_vfs_rename_sem);*/ | 237 | /* mutex_unlock(&inode->i_sb->s_vfs_rename_mutex);*/ |
| 238 | 238 | ||
| 239 | if(full_path == NULL) { | 239 | if(full_path == NULL) { |
| 240 | FreeXid(xid); | 240 | FreeXid(xid); |
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c index 288cc048d37f..edb3b6eb34bc 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c | |||
| @@ -404,9 +404,9 @@ static int initiate_cifs_search(const int xid, struct file *file) | |||
| 404 | if(pTcon == NULL) | 404 | if(pTcon == NULL) |
| 405 | return -EINVAL; | 405 | return -EINVAL; |
| 406 | 406 | ||
| 407 | down(&file->f_dentry->d_sb->s_vfs_rename_sem); | 407 | mutex_lock(&file->f_dentry->d_sb->s_vfs_rename_mutex); |
| 408 | full_path = build_path_from_dentry(file->f_dentry); | 408 | full_path = build_path_from_dentry(file->f_dentry); |
| 409 | up(&file->f_dentry->d_sb->s_vfs_rename_sem); | 409 | mutex_unlock(&file->f_dentry->d_sb->s_vfs_rename_mutex); |
| 410 | 410 | ||
| 411 | if(full_path == NULL) { | 411 | if(full_path == NULL) { |
| 412 | return -ENOMEM; | 412 | return -ENOMEM; |
diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c index 777e3363c2a4..3938444d87b2 100644 --- a/fs/cifs/xattr.c +++ b/fs/cifs/xattr.c | |||
| @@ -62,9 +62,9 @@ int cifs_removexattr(struct dentry * direntry, const char * ea_name) | |||
| 62 | cifs_sb = CIFS_SB(sb); | 62 | cifs_sb = CIFS_SB(sb); |
| 63 | pTcon = cifs_sb->tcon; | 63 | pTcon = cifs_sb->tcon; |
| 64 | 64 | ||
| 65 | down(&sb->s_vfs_rename_sem); | 65 | mutex_lock(&sb->s_vfs_rename_mutex); |
| 66 | full_path = build_path_from_dentry(direntry); | 66 | full_path = build_path_from_dentry(direntry); |
| 67 | up(&sb->s_vfs_rename_sem); | 67 | mutex_unlock(&sb->s_vfs_rename_mutex); |
| 68 | if(full_path == NULL) { | 68 | if(full_path == NULL) { |
| 69 | FreeXid(xid); | 69 | FreeXid(xid); |
| 70 | return -ENOMEM; | 70 | return -ENOMEM; |
| @@ -116,9 +116,9 @@ int cifs_setxattr(struct dentry * direntry, const char * ea_name, | |||
| 116 | cifs_sb = CIFS_SB(sb); | 116 | cifs_sb = CIFS_SB(sb); |
| 117 | pTcon = cifs_sb->tcon; | 117 | pTcon = cifs_sb->tcon; |
| 118 | 118 | ||
| 119 | down(&sb->s_vfs_rename_sem); | 119 | mutex_lock(&sb->s_vfs_rename_mutex); |
| 120 | full_path = build_path_from_dentry(direntry); | 120 | full_path = build_path_from_dentry(direntry); |
| 121 | up(&sb->s_vfs_rename_sem); | 121 | mutex_unlock(&sb->s_vfs_rename_mutex); |
| 122 | if(full_path == NULL) { | 122 | if(full_path == NULL) { |
| 123 | FreeXid(xid); | 123 | FreeXid(xid); |
| 124 | return -ENOMEM; | 124 | return -ENOMEM; |
| @@ -223,9 +223,9 @@ ssize_t cifs_getxattr(struct dentry * direntry, const char * ea_name, | |||
| 223 | cifs_sb = CIFS_SB(sb); | 223 | cifs_sb = CIFS_SB(sb); |
| 224 | pTcon = cifs_sb->tcon; | 224 | pTcon = cifs_sb->tcon; |
| 225 | 225 | ||
| 226 | down(&sb->s_vfs_rename_sem); | 226 | mutex_lock(&sb->s_vfs_rename_mutex); |
| 227 | full_path = build_path_from_dentry(direntry); | 227 | full_path = build_path_from_dentry(direntry); |
| 228 | up(&sb->s_vfs_rename_sem); | 228 | mutex_unlock(&sb->s_vfs_rename_mutex); |
| 229 | if(full_path == NULL) { | 229 | if(full_path == NULL) { |
| 230 | FreeXid(xid); | 230 | FreeXid(xid); |
| 231 | return -ENOMEM; | 231 | return -ENOMEM; |
| @@ -341,9 +341,9 @@ ssize_t cifs_listxattr(struct dentry * direntry, char * data, size_t buf_size) | |||
| 341 | cifs_sb = CIFS_SB(sb); | 341 | cifs_sb = CIFS_SB(sb); |
| 342 | pTcon = cifs_sb->tcon; | 342 | pTcon = cifs_sb->tcon; |
| 343 | 343 | ||
| 344 | down(&sb->s_vfs_rename_sem); | 344 | mutex_lock(&sb->s_vfs_rename_mutex); |
| 345 | full_path = build_path_from_dentry(direntry); | 345 | full_path = build_path_from_dentry(direntry); |
| 346 | up(&sb->s_vfs_rename_sem); | 346 | mutex_unlock(&sb->s_vfs_rename_mutex); |
| 347 | if(full_path == NULL) { | 347 | if(full_path == NULL) { |
| 348 | FreeXid(xid); | 348 | FreeXid(xid); |
| 349 | return -ENOMEM; | 349 | return -ENOMEM; |
diff --git a/fs/namei.c b/fs/namei.c index 8dc2b038d5d9..c72b940797fc 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
| @@ -104,7 +104,7 @@ | |||
| 104 | */ | 104 | */ |
| 105 | /* | 105 | /* |
| 106 | * [Sep 2001 AV] Single-semaphore locking scheme (kudos to David Holland) | 106 | * [Sep 2001 AV] Single-semaphore locking scheme (kudos to David Holland) |
| 107 | * implemented. Let's see if raised priority of ->s_vfs_rename_sem gives | 107 | * implemented. Let's see if raised priority of ->s_vfs_rename_mutex gives |
| 108 | * any extra contention... | 108 | * any extra contention... |
| 109 | */ | 109 | */ |
| 110 | 110 | ||
| @@ -1422,7 +1422,7 @@ struct dentry *lock_rename(struct dentry *p1, struct dentry *p2) | |||
| 1422 | return NULL; | 1422 | return NULL; |
| 1423 | } | 1423 | } |
| 1424 | 1424 | ||
| 1425 | down(&p1->d_inode->i_sb->s_vfs_rename_sem); | 1425 | mutex_lock(&p1->d_inode->i_sb->s_vfs_rename_mutex); |
| 1426 | 1426 | ||
| 1427 | for (p = p1; p->d_parent != p; p = p->d_parent) { | 1427 | for (p = p1; p->d_parent != p; p = p->d_parent) { |
| 1428 | if (p->d_parent == p2) { | 1428 | if (p->d_parent == p2) { |
| @@ -1450,7 +1450,7 @@ void unlock_rename(struct dentry *p1, struct dentry *p2) | |||
| 1450 | mutex_unlock(&p1->d_inode->i_mutex); | 1450 | mutex_unlock(&p1->d_inode->i_mutex); |
| 1451 | if (p1 != p2) { | 1451 | if (p1 != p2) { |
| 1452 | mutex_unlock(&p2->d_inode->i_mutex); | 1452 | mutex_unlock(&p2->d_inode->i_mutex); |
| 1453 | up(&p1->d_inode->i_sb->s_vfs_rename_sem); | 1453 | mutex_unlock(&p1->d_inode->i_sb->s_vfs_rename_mutex); |
| 1454 | } | 1454 | } |
| 1455 | } | 1455 | } |
| 1456 | 1456 | ||
| @@ -2277,17 +2277,17 @@ asmlinkage long sys_link(const char __user *oldname, const char __user *newname) | |||
| 2277 | * a) we can get into loop creation. Check is done in is_subdir(). | 2277 | * a) we can get into loop creation. Check is done in is_subdir(). |
| 2278 | * b) race potential - two innocent renames can create a loop together. | 2278 | * b) race potential - two innocent renames can create a loop together. |
| 2279 | * That's where 4.4 screws up. Current fix: serialization on | 2279 | * That's where 4.4 screws up. Current fix: serialization on |
| 2280 | * sb->s_vfs_rename_sem. We might be more accurate, but that's another | 2280 | * sb->s_vfs_rename_mutex. We might be more accurate, but that's another |
| 2281 | * story. | 2281 | * story. |
| 2282 | * c) we have to lock _three_ objects - parents and victim (if it exists). | 2282 | * c) we have to lock _three_ objects - parents and victim (if it exists). |
| 2283 | * And that - after we got ->i_mutex on parents (until then we don't know | 2283 | * And that - after we got ->i_mutex on parents (until then we don't know |
| 2284 | * whether the target exists). Solution: try to be smart with locking | 2284 | * whether the target exists). Solution: try to be smart with locking |
| 2285 | * order for inodes. We rely on the fact that tree topology may change | 2285 | * order for inodes. We rely on the fact that tree topology may change |
| 2286 | * only under ->s_vfs_rename_sem _and_ that parent of the object we | 2286 | * only under ->s_vfs_rename_mutex _and_ that parent of the object we |
| 2287 | * move will be locked. Thus we can rank directories by the tree | 2287 | * move will be locked. Thus we can rank directories by the tree |
| 2288 | * (ancestors first) and rank all non-directories after them. | 2288 | * (ancestors first) and rank all non-directories after them. |
| 2289 | * That works since everybody except rename does "lock parent, lookup, | 2289 | * That works since everybody except rename does "lock parent, lookup, |
| 2290 | * lock child" and rename is under ->s_vfs_rename_sem. | 2290 | * lock child" and rename is under ->s_vfs_rename_mutex. |
| 2291 | * HOWEVER, it relies on the assumption that any object with ->lookup() | 2291 | * HOWEVER, it relies on the assumption that any object with ->lookup() |
| 2292 | * has no more than 1 dentry. If "hybrid" objects will ever appear, | 2292 | * has no more than 1 dentry. If "hybrid" objects will ever appear, |
| 2293 | * we'd better make sure that there's no link(2) for them. | 2293 | * we'd better make sure that there's no link(2) for them. |
diff --git a/fs/super.c b/fs/super.c index 9cc6545dfa4c..425861cb1caa 100644 --- a/fs/super.c +++ b/fs/super.c | |||
| @@ -76,7 +76,7 @@ static struct super_block *alloc_super(void) | |||
| 76 | down_write(&s->s_umount); | 76 | down_write(&s->s_umount); |
| 77 | s->s_count = S_BIAS; | 77 | s->s_count = S_BIAS; |
| 78 | atomic_set(&s->s_active, 1); | 78 | atomic_set(&s->s_active, 1); |
| 79 | sema_init(&s->s_vfs_rename_sem,1); | 79 | mutex_init(&s->s_vfs_rename_mutex); |
| 80 | mutex_init(&s->s_dquot.dqio_mutex); | 80 | mutex_init(&s->s_dquot.dqio_mutex); |
| 81 | mutex_init(&s->s_dquot.dqonoff_mutex); | 81 | mutex_init(&s->s_dquot.dqonoff_mutex); |
| 82 | init_rwsem(&s->s_dquot.dqptr_sem); | 82 | init_rwsem(&s->s_dquot.dqptr_sem); |
