diff options
Diffstat (limited to 'fs/jfs/namei.c')
-rw-r--r-- | fs/jfs/namei.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c index c79a4270f083..4a3e9f39c21d 100644 --- a/fs/jfs/namei.c +++ b/fs/jfs/namei.c | |||
@@ -85,6 +85,8 @@ static int jfs_create(struct inode *dip, struct dentry *dentry, int mode, | |||
85 | 85 | ||
86 | jfs_info("jfs_create: dip:0x%p name:%s", dip, dentry->d_name.name); | 86 | jfs_info("jfs_create: dip:0x%p name:%s", dip, dentry->d_name.name); |
87 | 87 | ||
88 | dquot_initialize(dip); | ||
89 | |||
88 | /* | 90 | /* |
89 | * search parent directory for entry/freespace | 91 | * search parent directory for entry/freespace |
90 | * (dtSearch() returns parent directory page pinned) | 92 | * (dtSearch() returns parent directory page pinned) |
@@ -215,6 +217,8 @@ static int jfs_mkdir(struct inode *dip, struct dentry *dentry, int mode) | |||
215 | 217 | ||
216 | jfs_info("jfs_mkdir: dip:0x%p name:%s", dip, dentry->d_name.name); | 218 | jfs_info("jfs_mkdir: dip:0x%p name:%s", dip, dentry->d_name.name); |
217 | 219 | ||
220 | dquot_initialize(dip); | ||
221 | |||
218 | /* link count overflow on parent directory ? */ | 222 | /* link count overflow on parent directory ? */ |
219 | if (dip->i_nlink == JFS_LINK_MAX) { | 223 | if (dip->i_nlink == JFS_LINK_MAX) { |
220 | rc = -EMLINK; | 224 | rc = -EMLINK; |
@@ -356,7 +360,8 @@ static int jfs_rmdir(struct inode *dip, struct dentry *dentry) | |||
356 | jfs_info("jfs_rmdir: dip:0x%p name:%s", dip, dentry->d_name.name); | 360 | jfs_info("jfs_rmdir: dip:0x%p name:%s", dip, dentry->d_name.name); |
357 | 361 | ||
358 | /* Init inode for quota operations. */ | 362 | /* Init inode for quota operations. */ |
359 | vfs_dq_init(ip); | 363 | dquot_initialize(dip); |
364 | dquot_initialize(ip); | ||
360 | 365 | ||
361 | /* directory must be empty to be removed */ | 366 | /* directory must be empty to be removed */ |
362 | if (!dtEmpty(ip)) { | 367 | if (!dtEmpty(ip)) { |
@@ -483,7 +488,8 @@ static int jfs_unlink(struct inode *dip, struct dentry *dentry) | |||
483 | jfs_info("jfs_unlink: dip:0x%p name:%s", dip, dentry->d_name.name); | 488 | jfs_info("jfs_unlink: dip:0x%p name:%s", dip, dentry->d_name.name); |
484 | 489 | ||
485 | /* Init inode for quota operations. */ | 490 | /* Init inode for quota operations. */ |
486 | vfs_dq_init(ip); | 491 | dquot_initialize(dip); |
492 | dquot_initialize(ip); | ||
487 | 493 | ||
488 | if ((rc = get_UCSname(&dname, dentry))) | 494 | if ((rc = get_UCSname(&dname, dentry))) |
489 | goto out; | 495 | goto out; |
@@ -805,6 +811,8 @@ static int jfs_link(struct dentry *old_dentry, | |||
805 | if (ip->i_nlink == 0) | 811 | if (ip->i_nlink == 0) |
806 | return -ENOENT; | 812 | return -ENOENT; |
807 | 813 | ||
814 | dquot_initialize(dir); | ||
815 | |||
808 | tid = txBegin(ip->i_sb, 0); | 816 | tid = txBegin(ip->i_sb, 0); |
809 | 817 | ||
810 | mutex_lock_nested(&JFS_IP(dir)->commit_mutex, COMMIT_MUTEX_PARENT); | 818 | mutex_lock_nested(&JFS_IP(dir)->commit_mutex, COMMIT_MUTEX_PARENT); |
@@ -896,6 +904,8 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, | |||
896 | 904 | ||
897 | jfs_info("jfs_symlink: dip:0x%p name:%s", dip, name); | 905 | jfs_info("jfs_symlink: dip:0x%p name:%s", dip, name); |
898 | 906 | ||
907 | dquot_initialize(dip); | ||
908 | |||
899 | ssize = strlen(name) + 1; | 909 | ssize = strlen(name) + 1; |
900 | 910 | ||
901 | /* | 911 | /* |
@@ -1087,6 +1097,9 @@ static int jfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
1087 | jfs_info("jfs_rename: %s %s", old_dentry->d_name.name, | 1097 | jfs_info("jfs_rename: %s %s", old_dentry->d_name.name, |
1088 | new_dentry->d_name.name); | 1098 | new_dentry->d_name.name); |
1089 | 1099 | ||
1100 | dquot_initialize(old_dir); | ||
1101 | dquot_initialize(new_dir); | ||
1102 | |||
1090 | old_ip = old_dentry->d_inode; | 1103 | old_ip = old_dentry->d_inode; |
1091 | new_ip = new_dentry->d_inode; | 1104 | new_ip = new_dentry->d_inode; |
1092 | 1105 | ||
@@ -1136,7 +1149,7 @@ static int jfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
1136 | } else if (new_ip) { | 1149 | } else if (new_ip) { |
1137 | IWRITE_LOCK(new_ip, RDWRLOCK_NORMAL); | 1150 | IWRITE_LOCK(new_ip, RDWRLOCK_NORMAL); |
1138 | /* Init inode for quota operations. */ | 1151 | /* Init inode for quota operations. */ |
1139 | vfs_dq_init(new_ip); | 1152 | dquot_initialize(new_ip); |
1140 | } | 1153 | } |
1141 | 1154 | ||
1142 | /* | 1155 | /* |
@@ -1360,6 +1373,8 @@ static int jfs_mknod(struct inode *dir, struct dentry *dentry, | |||
1360 | 1373 | ||
1361 | jfs_info("jfs_mknod: %s", dentry->d_name.name); | 1374 | jfs_info("jfs_mknod: %s", dentry->d_name.name); |
1362 | 1375 | ||
1376 | dquot_initialize(dir); | ||
1377 | |||
1363 | if ((rc = get_UCSname(&dname, dentry))) | 1378 | if ((rc = get_UCSname(&dname, dentry))) |
1364 | goto out; | 1379 | goto out; |
1365 | 1380 | ||
@@ -1541,8 +1556,8 @@ const struct inode_operations jfs_dir_inode_operations = { | |||
1541 | .getxattr = jfs_getxattr, | 1556 | .getxattr = jfs_getxattr, |
1542 | .listxattr = jfs_listxattr, | 1557 | .listxattr = jfs_listxattr, |
1543 | .removexattr = jfs_removexattr, | 1558 | .removexattr = jfs_removexattr, |
1544 | #ifdef CONFIG_JFS_POSIX_ACL | ||
1545 | .setattr = jfs_setattr, | 1559 | .setattr = jfs_setattr, |
1560 | #ifdef CONFIG_JFS_POSIX_ACL | ||
1546 | .check_acl = jfs_check_acl, | 1561 | .check_acl = jfs_check_acl, |
1547 | #endif | 1562 | #endif |
1548 | }; | 1563 | }; |