diff options
| -rw-r--r-- | fs/udf/balloc.c | 43 | ||||
| -rw-r--r-- | fs/udf/file.c | 26 | ||||
| -rw-r--r-- | fs/udf/ialloc.c | 21 | ||||
| -rw-r--r-- | fs/udf/inode.c | 5 | ||||
| -rw-r--r-- | fs/udf/namei.c | 20 | ||||
| -rw-r--r-- | fs/udf/super.c | 18 | ||||
| -rw-r--r-- | fs/udf/udfdecl.h | 1 |
7 files changed, 6 insertions, 128 deletions
diff --git a/fs/udf/balloc.c b/fs/udf/balloc.c index 9a9378b4eb5a..b608efaa4cee 100644 --- a/fs/udf/balloc.c +++ b/fs/udf/balloc.c | |||
| @@ -21,7 +21,6 @@ | |||
| 21 | 21 | ||
| 22 | #include "udfdecl.h" | 22 | #include "udfdecl.h" |
| 23 | 23 | ||
| 24 | #include <linux/quotaops.h> | ||
| 25 | #include <linux/buffer_head.h> | 24 | #include <linux/buffer_head.h> |
| 26 | #include <linux/bitops.h> | 25 | #include <linux/bitops.h> |
| 27 | 26 | ||
| @@ -159,8 +158,6 @@ static void udf_bitmap_free_blocks(struct super_block *sb, | |||
| 159 | udf_debug("byte=%2x\n", | 158 | udf_debug("byte=%2x\n", |
| 160 | ((char *)bh->b_data)[(bit + i) >> 3]); | 159 | ((char *)bh->b_data)[(bit + i) >> 3]); |
| 161 | } else { | 160 | } else { |
| 162 | if (inode) | ||
| 163 | dquot_free_block(inode, 1); | ||
| 164 | udf_add_free_space(sb, sbi->s_partition, 1); | 161 | udf_add_free_space(sb, sbi->s_partition, 1); |
| 165 | } | 162 | } |
| 166 | } | 163 | } |
| @@ -210,15 +207,8 @@ static int udf_bitmap_prealloc_blocks(struct super_block *sb, | |||
| 210 | bit = block % (sb->s_blocksize << 3); | 207 | bit = block % (sb->s_blocksize << 3); |
| 211 | 208 | ||
| 212 | while (bit < (sb->s_blocksize << 3) && block_count > 0) { | 209 | while (bit < (sb->s_blocksize << 3) && block_count > 0) { |
| 213 | if (!udf_test_bit(bit, bh->b_data)) | 210 | if (!udf_clear_bit(bit, bh->b_data)) |
| 214 | goto out; | 211 | goto out; |
| 215 | else if (dquot_prealloc_block(inode, 1)) | ||
| 216 | goto out; | ||
| 217 | else if (!udf_clear_bit(bit, bh->b_data)) { | ||
| 218 | udf_debug("bit already cleared for block %d\n", bit); | ||
| 219 | dquot_free_block(inode, 1); | ||
| 220 | goto out; | ||
| 221 | } | ||
| 222 | block_count--; | 212 | block_count--; |
| 223 | alloc_count++; | 213 | alloc_count++; |
| 224 | bit++; | 214 | bit++; |
| @@ -338,20 +328,6 @@ search_back: | |||
| 338 | } | 328 | } |
| 339 | 329 | ||
| 340 | got_block: | 330 | got_block: |
| 341 | |||
| 342 | /* | ||
| 343 | * Check quota for allocation of this block. | ||
| 344 | */ | ||
| 345 | if (inode) { | ||
| 346 | int ret = dquot_alloc_block(inode, 1); | ||
| 347 | |||
| 348 | if (ret) { | ||
| 349 | mutex_unlock(&sbi->s_alloc_mutex); | ||
| 350 | *err = ret; | ||
| 351 | return 0; | ||
| 352 | } | ||
| 353 | } | ||
| 354 | |||
| 355 | newblock = bit + (block_group << (sb->s_blocksize_bits + 3)) - | 331 | newblock = bit + (block_group << (sb->s_blocksize_bits + 3)) - |
| 356 | (sizeof(struct spaceBitmapDesc) << 3); | 332 | (sizeof(struct spaceBitmapDesc) << 3); |
| 357 | 333 | ||
| @@ -401,10 +377,6 @@ static void udf_table_free_blocks(struct super_block *sb, | |||
| 401 | } | 377 | } |
| 402 | 378 | ||
| 403 | iinfo = UDF_I(table); | 379 | iinfo = UDF_I(table); |
| 404 | /* We do this up front - There are some error conditions that | ||
| 405 | could occure, but.. oh well */ | ||
| 406 | if (inode) | ||
| 407 | dquot_free_block(inode, count); | ||
| 408 | udf_add_free_space(sb, sbi->s_partition, count); | 380 | udf_add_free_space(sb, sbi->s_partition, count); |
| 409 | 381 | ||
| 410 | start = bloc->logicalBlockNum + offset; | 382 | start = bloc->logicalBlockNum + offset; |
| @@ -649,10 +621,7 @@ static int udf_table_prealloc_blocks(struct super_block *sb, | |||
| 649 | epos.offset -= adsize; | 621 | epos.offset -= adsize; |
| 650 | 622 | ||
| 651 | alloc_count = (elen >> sb->s_blocksize_bits); | 623 | alloc_count = (elen >> sb->s_blocksize_bits); |
| 652 | if (inode && dquot_prealloc_block(inode, | 624 | if (alloc_count > block_count) { |
| 653 | alloc_count > block_count ? block_count : alloc_count)) | ||
| 654 | alloc_count = 0; | ||
| 655 | else if (alloc_count > block_count) { | ||
| 656 | alloc_count = block_count; | 625 | alloc_count = block_count; |
| 657 | eloc.logicalBlockNum += alloc_count; | 626 | eloc.logicalBlockNum += alloc_count; |
| 658 | elen -= (alloc_count << sb->s_blocksize_bits); | 627 | elen -= (alloc_count << sb->s_blocksize_bits); |
| @@ -752,14 +721,6 @@ static int udf_table_new_block(struct super_block *sb, | |||
| 752 | newblock = goal_eloc.logicalBlockNum; | 721 | newblock = goal_eloc.logicalBlockNum; |
| 753 | goal_eloc.logicalBlockNum++; | 722 | goal_eloc.logicalBlockNum++; |
| 754 | goal_elen -= sb->s_blocksize; | 723 | goal_elen -= sb->s_blocksize; |
| 755 | if (inode) { | ||
| 756 | *err = dquot_alloc_block(inode, 1); | ||
| 757 | if (*err) { | ||
| 758 | brelse(goal_epos.bh); | ||
| 759 | mutex_unlock(&sbi->s_alloc_mutex); | ||
| 760 | return 0; | ||
| 761 | } | ||
| 762 | } | ||
| 763 | 724 | ||
| 764 | if (goal_elen) | 725 | if (goal_elen) |
| 765 | udf_write_aext(table, &goal_epos, &goal_eloc, goal_elen, 1); | 726 | udf_write_aext(table, &goal_epos, &goal_eloc, goal_elen, 1); |
diff --git a/fs/udf/file.c b/fs/udf/file.c index baae3a723946..0db1d672950e 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c | |||
| @@ -34,7 +34,6 @@ | |||
| 34 | #include <linux/errno.h> | 34 | #include <linux/errno.h> |
| 35 | #include <linux/smp_lock.h> | 35 | #include <linux/smp_lock.h> |
| 36 | #include <linux/pagemap.h> | 36 | #include <linux/pagemap.h> |
| 37 | #include <linux/quotaops.h> | ||
| 38 | #include <linux/buffer_head.h> | 37 | #include <linux/buffer_head.h> |
| 39 | #include <linux/aio.h> | 38 | #include <linux/aio.h> |
| 40 | #include <linux/smp_lock.h> | 39 | #include <linux/smp_lock.h> |
| @@ -219,7 +218,7 @@ const struct file_operations udf_file_operations = { | |||
| 219 | .read = do_sync_read, | 218 | .read = do_sync_read, |
| 220 | .aio_read = generic_file_aio_read, | 219 | .aio_read = generic_file_aio_read, |
| 221 | .unlocked_ioctl = udf_ioctl, | 220 | .unlocked_ioctl = udf_ioctl, |
| 222 | .open = dquot_file_open, | 221 | .open = generic_file_open, |
| 223 | .mmap = generic_file_mmap, | 222 | .mmap = generic_file_mmap, |
| 224 | .write = do_sync_write, | 223 | .write = do_sync_write, |
| 225 | .aio_write = udf_file_aio_write, | 224 | .aio_write = udf_file_aio_write, |
| @@ -229,29 +228,6 @@ const struct file_operations udf_file_operations = { | |||
| 229 | .llseek = generic_file_llseek, | 228 | .llseek = generic_file_llseek, |
| 230 | }; | 229 | }; |
| 231 | 230 | ||
| 232 | int udf_setattr(struct dentry *dentry, struct iattr *iattr) | ||
| 233 | { | ||
| 234 | struct inode *inode = dentry->d_inode; | ||
| 235 | int error; | ||
| 236 | |||
| 237 | error = inode_change_ok(inode, iattr); | ||
| 238 | if (error) | ||
| 239 | return error; | ||
| 240 | |||
| 241 | if (is_quota_modification(inode, iattr)) | ||
| 242 | dquot_initialize(inode); | ||
| 243 | |||
| 244 | if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) || | ||
| 245 | (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) { | ||
| 246 | error = dquot_transfer(inode, iattr); | ||
| 247 | if (error) | ||
| 248 | return error; | ||
| 249 | } | ||
| 250 | |||
| 251 | return inode_setattr(inode, iattr); | ||
| 252 | } | ||
| 253 | |||
| 254 | const struct inode_operations udf_file_inode_operations = { | 231 | const struct inode_operations udf_file_inode_operations = { |
| 255 | .truncate = udf_truncate, | 232 | .truncate = udf_truncate, |
| 256 | .setattr = udf_setattr, | ||
| 257 | }; | 233 | }; |
diff --git a/fs/udf/ialloc.c b/fs/udf/ialloc.c index 2b5586c7f02a..18cd7111185d 100644 --- a/fs/udf/ialloc.c +++ b/fs/udf/ialloc.c | |||
| @@ -20,7 +20,6 @@ | |||
| 20 | 20 | ||
| 21 | #include "udfdecl.h" | 21 | #include "udfdecl.h" |
| 22 | #include <linux/fs.h> | 22 | #include <linux/fs.h> |
| 23 | #include <linux/quotaops.h> | ||
| 24 | #include <linux/sched.h> | 23 | #include <linux/sched.h> |
| 25 | #include <linux/slab.h> | 24 | #include <linux/slab.h> |
| 26 | 25 | ||
| @@ -32,13 +31,6 @@ void udf_free_inode(struct inode *inode) | |||
| 32 | struct super_block *sb = inode->i_sb; | 31 | struct super_block *sb = inode->i_sb; |
| 33 | struct udf_sb_info *sbi = UDF_SB(sb); | 32 | struct udf_sb_info *sbi = UDF_SB(sb); |
| 34 | 33 | ||
| 35 | /* | ||
| 36 | * Note: we must free any quota before locking the superblock, | ||
| 37 | * as writing the quota to disk may need the lock as well. | ||
| 38 | */ | ||
| 39 | dquot_free_inode(inode); | ||
| 40 | dquot_drop(inode); | ||
| 41 | |||
| 42 | clear_inode(inode); | 34 | clear_inode(inode); |
| 43 | 35 | ||
| 44 | mutex_lock(&sbi->s_alloc_mutex); | 36 | mutex_lock(&sbi->s_alloc_mutex); |
| @@ -61,7 +53,7 @@ struct inode *udf_new_inode(struct inode *dir, int mode, int *err) | |||
| 61 | struct super_block *sb = dir->i_sb; | 53 | struct super_block *sb = dir->i_sb; |
| 62 | struct udf_sb_info *sbi = UDF_SB(sb); | 54 | struct udf_sb_info *sbi = UDF_SB(sb); |
| 63 | struct inode *inode; | 55 | struct inode *inode; |
| 64 | int block, ret; | 56 | int block; |
| 65 | uint32_t start = UDF_I(dir)->i_location.logicalBlockNum; | 57 | uint32_t start = UDF_I(dir)->i_location.logicalBlockNum; |
| 66 | struct udf_inode_info *iinfo; | 58 | struct udf_inode_info *iinfo; |
| 67 | struct udf_inode_info *dinfo = UDF_I(dir); | 59 | struct udf_inode_info *dinfo = UDF_I(dir); |
| @@ -146,17 +138,6 @@ struct inode *udf_new_inode(struct inode *dir, int mode, int *err) | |||
| 146 | insert_inode_hash(inode); | 138 | insert_inode_hash(inode); |
| 147 | mark_inode_dirty(inode); | 139 | mark_inode_dirty(inode); |
| 148 | 140 | ||
| 149 | dquot_initialize(inode); | ||
| 150 | ret = dquot_alloc_inode(inode); | ||
| 151 | if (ret) { | ||
| 152 | dquot_drop(inode); | ||
| 153 | inode->i_flags |= S_NOQUOTA; | ||
| 154 | inode->i_nlink = 0; | ||
| 155 | iput(inode); | ||
| 156 | *err = ret; | ||
| 157 | return NULL; | ||
| 158 | } | ||
| 159 | |||
| 160 | *err = 0; | 141 | *err = 0; |
| 161 | return inode; | 142 | return inode; |
| 162 | } | 143 | } |
diff --git a/fs/udf/inode.c b/fs/udf/inode.c index 8a3fbd177cab..124852bcf6fe 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c | |||
| @@ -36,7 +36,6 @@ | |||
| 36 | #include <linux/pagemap.h> | 36 | #include <linux/pagemap.h> |
| 37 | #include <linux/buffer_head.h> | 37 | #include <linux/buffer_head.h> |
| 38 | #include <linux/writeback.h> | 38 | #include <linux/writeback.h> |
| 39 | #include <linux/quotaops.h> | ||
| 40 | #include <linux/slab.h> | 39 | #include <linux/slab.h> |
| 41 | #include <linux/crc-itu-t.h> | 40 | #include <linux/crc-itu-t.h> |
| 42 | 41 | ||
| @@ -71,9 +70,6 @@ static int udf_get_block(struct inode *, sector_t, struct buffer_head *, int); | |||
| 71 | 70 | ||
| 72 | void udf_delete_inode(struct inode *inode) | 71 | void udf_delete_inode(struct inode *inode) |
| 73 | { | 72 | { |
| 74 | if (!is_bad_inode(inode)) | ||
| 75 | dquot_initialize(inode); | ||
| 76 | |||
| 77 | truncate_inode_pages(&inode->i_data, 0); | 73 | truncate_inode_pages(&inode->i_data, 0); |
| 78 | 74 | ||
| 79 | if (is_bad_inode(inode)) | 75 | if (is_bad_inode(inode)) |
| @@ -113,7 +109,6 @@ void udf_clear_inode(struct inode *inode) | |||
| 113 | (unsigned long long)iinfo->i_lenExtents); | 109 | (unsigned long long)iinfo->i_lenExtents); |
| 114 | } | 110 | } |
| 115 | 111 | ||
| 116 | dquot_drop(inode); | ||
| 117 | kfree(iinfo->i_ext.i_data); | 112 | kfree(iinfo->i_ext.i_data); |
| 118 | iinfo->i_ext.i_data = NULL; | 113 | iinfo->i_ext.i_data = NULL; |
| 119 | } | 114 | } |
diff --git a/fs/udf/namei.c b/fs/udf/namei.c index 585f733615dc..bf5fc674193c 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c | |||
| @@ -27,7 +27,6 @@ | |||
| 27 | #include <linux/errno.h> | 27 | #include <linux/errno.h> |
| 28 | #include <linux/mm.h> | 28 | #include <linux/mm.h> |
| 29 | #include <linux/slab.h> | 29 | #include <linux/slab.h> |
| 30 | #include <linux/quotaops.h> | ||
| 31 | #include <linux/smp_lock.h> | 30 | #include <linux/smp_lock.h> |
| 32 | #include <linux/buffer_head.h> | 31 | #include <linux/buffer_head.h> |
| 33 | #include <linux/sched.h> | 32 | #include <linux/sched.h> |
| @@ -563,8 +562,6 @@ static int udf_create(struct inode *dir, struct dentry *dentry, int mode, | |||
| 563 | int err; | 562 | int err; |
| 564 | struct udf_inode_info *iinfo; | 563 | struct udf_inode_info *iinfo; |
| 565 | 564 | ||
| 566 | dquot_initialize(dir); | ||
| 567 | |||
| 568 | lock_kernel(); | 565 | lock_kernel(); |
| 569 | inode = udf_new_inode(dir, mode, &err); | 566 | inode = udf_new_inode(dir, mode, &err); |
| 570 | if (!inode) { | 567 | if (!inode) { |
| @@ -617,8 +614,6 @@ static int udf_mknod(struct inode *dir, struct dentry *dentry, int mode, | |||
| 617 | if (!old_valid_dev(rdev)) | 614 | if (!old_valid_dev(rdev)) |
| 618 | return -EINVAL; | 615 | return -EINVAL; |
| 619 | 616 | ||
| 620 | dquot_initialize(dir); | ||
| 621 | |||
| 622 | lock_kernel(); | 617 | lock_kernel(); |
| 623 | err = -EIO; | 618 | err = -EIO; |
| 624 | inode = udf_new_inode(dir, mode, &err); | 619 | inode = udf_new_inode(dir, mode, &err); |
| @@ -664,8 +659,6 @@ static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode) | |||
| 664 | struct udf_inode_info *dinfo = UDF_I(dir); | 659 | struct udf_inode_info *dinfo = UDF_I(dir); |
| 665 | struct udf_inode_info *iinfo; | 660 | struct udf_inode_info *iinfo; |
| 666 | 661 | ||
| 667 | dquot_initialize(dir); | ||
| 668 | |||
| 669 | lock_kernel(); | 662 | lock_kernel(); |
| 670 | err = -EMLINK; | 663 | err = -EMLINK; |
| 671 | if (dir->i_nlink >= (256 << sizeof(dir->i_nlink)) - 1) | 664 | if (dir->i_nlink >= (256 << sizeof(dir->i_nlink)) - 1) |
| @@ -800,8 +793,6 @@ static int udf_rmdir(struct inode *dir, struct dentry *dentry) | |||
| 800 | struct fileIdentDesc *fi, cfi; | 793 | struct fileIdentDesc *fi, cfi; |
| 801 | struct kernel_lb_addr tloc; | 794 | struct kernel_lb_addr tloc; |
| 802 | 795 | ||
| 803 | dquot_initialize(dir); | ||
| 804 | |||
| 805 | retval = -ENOENT; | 796 | retval = -ENOENT; |
| 806 | lock_kernel(); | 797 | lock_kernel(); |
| 807 | fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); | 798 | fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); |
| @@ -848,8 +839,6 @@ static int udf_unlink(struct inode *dir, struct dentry *dentry) | |||
| 848 | struct fileIdentDesc cfi; | 839 | struct fileIdentDesc cfi; |
| 849 | struct kernel_lb_addr tloc; | 840 | struct kernel_lb_addr tloc; |
| 850 | 841 | ||
| 851 | dquot_initialize(dir); | ||
| 852 | |||
| 853 | retval = -ENOENT; | 842 | retval = -ENOENT; |
| 854 | lock_kernel(); | 843 | lock_kernel(); |
| 855 | fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); | 844 | fi = udf_find_entry(dir, &dentry->d_name, &fibh, &cfi); |
| @@ -904,8 +893,6 @@ static int udf_symlink(struct inode *dir, struct dentry *dentry, | |||
| 904 | struct buffer_head *bh; | 893 | struct buffer_head *bh; |
| 905 | struct udf_inode_info *iinfo; | 894 | struct udf_inode_info *iinfo; |
| 906 | 895 | ||
| 907 | dquot_initialize(dir); | ||
| 908 | |||
| 909 | lock_kernel(); | 896 | lock_kernel(); |
| 910 | inode = udf_new_inode(dir, S_IFLNK | S_IRWXUGO, &err); | 897 | inode = udf_new_inode(dir, S_IFLNK | S_IRWXUGO, &err); |
| 911 | if (!inode) | 898 | if (!inode) |
| @@ -1075,8 +1062,6 @@ static int udf_link(struct dentry *old_dentry, struct inode *dir, | |||
| 1075 | int err; | 1062 | int err; |
| 1076 | struct buffer_head *bh; | 1063 | struct buffer_head *bh; |
| 1077 | 1064 | ||
| 1078 | dquot_initialize(dir); | ||
| 1079 | |||
| 1080 | lock_kernel(); | 1065 | lock_kernel(); |
| 1081 | if (inode->i_nlink >= (256 << sizeof(inode->i_nlink)) - 1) { | 1066 | if (inode->i_nlink >= (256 << sizeof(inode->i_nlink)) - 1) { |
| 1082 | unlock_kernel(); | 1067 | unlock_kernel(); |
| @@ -1139,9 +1124,6 @@ static int udf_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 1139 | struct kernel_lb_addr tloc; | 1124 | struct kernel_lb_addr tloc; |
| 1140 | struct udf_inode_info *old_iinfo = UDF_I(old_inode); | 1125 | struct udf_inode_info *old_iinfo = UDF_I(old_inode); |
| 1141 | 1126 | ||
| 1142 | dquot_initialize(old_dir); | ||
| 1143 | dquot_initialize(new_dir); | ||
| 1144 | |||
| 1145 | lock_kernel(); | 1127 | lock_kernel(); |
| 1146 | ofi = udf_find_entry(old_dir, &old_dentry->d_name, &ofibh, &ocfi); | 1128 | ofi = udf_find_entry(old_dir, &old_dentry->d_name, &ofibh, &ocfi); |
| 1147 | if (ofi) { | 1129 | if (ofi) { |
| @@ -1387,7 +1369,6 @@ const struct export_operations udf_export_ops = { | |||
| 1387 | const struct inode_operations udf_dir_inode_operations = { | 1369 | const struct inode_operations udf_dir_inode_operations = { |
| 1388 | .lookup = udf_lookup, | 1370 | .lookup = udf_lookup, |
| 1389 | .create = udf_create, | 1371 | .create = udf_create, |
| 1390 | .setattr = udf_setattr, | ||
| 1391 | .link = udf_link, | 1372 | .link = udf_link, |
| 1392 | .unlink = udf_unlink, | 1373 | .unlink = udf_unlink, |
| 1393 | .symlink = udf_symlink, | 1374 | .symlink = udf_symlink, |
| @@ -1400,5 +1381,4 @@ const struct inode_operations udf_symlink_inode_operations = { | |||
| 1400 | .readlink = generic_readlink, | 1381 | .readlink = generic_readlink, |
| 1401 | .follow_link = page_follow_link_light, | 1382 | .follow_link = page_follow_link_light, |
| 1402 | .put_link = page_put_link, | 1383 | .put_link = page_put_link, |
| 1403 | .setattr = udf_setattr, | ||
| 1404 | }; | 1384 | }; |
diff --git a/fs/udf/super.c b/fs/udf/super.c index 5e03592369d7..612d1e2e285a 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c | |||
| @@ -54,7 +54,6 @@ | |||
| 54 | #include <linux/vmalloc.h> | 54 | #include <linux/vmalloc.h> |
| 55 | #include <linux/errno.h> | 55 | #include <linux/errno.h> |
| 56 | #include <linux/mount.h> | 56 | #include <linux/mount.h> |
| 57 | #include <linux/quotaops.h> | ||
| 58 | #include <linux/seq_file.h> | 57 | #include <linux/seq_file.h> |
| 59 | #include <linux/bitmap.h> | 58 | #include <linux/bitmap.h> |
| 60 | #include <linux/crc-itu-t.h> | 59 | #include <linux/crc-itu-t.h> |
| @@ -587,18 +586,11 @@ static int udf_remount_fs(struct super_block *sb, int *flags, char *options) | |||
| 587 | if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) | 586 | if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) |
| 588 | goto out_unlock; | 587 | goto out_unlock; |
| 589 | 588 | ||
| 590 | if (*flags & MS_RDONLY) { | 589 | if (*flags & MS_RDONLY) |
| 591 | udf_close_lvid(sb); | 590 | udf_close_lvid(sb); |
| 592 | 591 | else | |
| 593 | error = dquot_suspend(sb, -1); | ||
| 594 | } else { | ||
| 595 | udf_open_lvid(sb); | 592 | udf_open_lvid(sb); |
| 596 | 593 | ||
| 597 | /* mark the fs r/w for quota activity */ | ||
| 598 | sb->s_flags &= ~MS_RDONLY; | ||
| 599 | dquot_resume(sb, -1); | ||
| 600 | } | ||
| 601 | |||
| 602 | out_unlock: | 594 | out_unlock: |
| 603 | unlock_kernel(); | 595 | unlock_kernel(); |
| 604 | return error; | 596 | return error; |
| @@ -1948,10 +1940,6 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent) | |||
| 1948 | /* Fill in the rest of the superblock */ | 1940 | /* Fill in the rest of the superblock */ |
| 1949 | sb->s_op = &udf_sb_ops; | 1941 | sb->s_op = &udf_sb_ops; |
| 1950 | sb->s_export_op = &udf_export_ops; | 1942 | sb->s_export_op = &udf_export_ops; |
| 1951 | #ifdef CONFIG_QUOTA | ||
| 1952 | sb->s_qcop = &dquot_quotactl_ops; | ||
| 1953 | sb->dq_op = NULL; /* &dquot_operations */ | ||
| 1954 | #endif | ||
| 1955 | 1943 | ||
| 1956 | sb->s_dirt = 0; | 1944 | sb->s_dirt = 0; |
| 1957 | sb->s_magic = UDF_SUPER_MAGIC; | 1945 | sb->s_magic = UDF_SUPER_MAGIC; |
| @@ -2106,8 +2094,6 @@ static void udf_put_super(struct super_block *sb) | |||
| 2106 | int i; | 2094 | int i; |
| 2107 | struct udf_sb_info *sbi; | 2095 | struct udf_sb_info *sbi; |
| 2108 | 2096 | ||
| 2109 | dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED); | ||
| 2110 | |||
| 2111 | sbi = UDF_SB(sb); | 2097 | sbi = UDF_SB(sb); |
| 2112 | 2098 | ||
| 2113 | lock_kernel(); | 2099 | lock_kernel(); |
diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h index 9079ff7d6255..2bac0354891f 100644 --- a/fs/udf/udfdecl.h +++ b/fs/udf/udfdecl.h | |||
| @@ -131,7 +131,6 @@ extern int udf_write_fi(struct inode *inode, struct fileIdentDesc *, | |||
| 131 | 131 | ||
| 132 | /* file.c */ | 132 | /* file.c */ |
| 133 | extern long udf_ioctl(struct file *, unsigned int, unsigned long); | 133 | extern long udf_ioctl(struct file *, unsigned int, unsigned long); |
| 134 | extern int udf_setattr(struct dentry *dentry, struct iattr *iattr); | ||
| 135 | /* inode.c */ | 134 | /* inode.c */ |
| 136 | extern struct inode *udf_iget(struct super_block *, struct kernel_lb_addr *); | 135 | extern struct inode *udf_iget(struct super_block *, struct kernel_lb_addr *); |
| 137 | extern int udf_sync_inode(struct inode *); | 136 | extern int udf_sync_inode(struct inode *); |
