aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/ext2/super.c2
-rw-r--r--fs/ext3/super.c2
-rw-r--r--fs/ext4/super.c2
-rw-r--r--fs/jfs/super.c2
-rw-r--r--fs/reiserfs/super.c2
-rw-r--r--fs/super.c1
-rw-r--r--fs/udf/super.c2
-rw-r--r--fs/ufs/super.c2
-rw-r--r--include/linux/quotaops.h15
9 files changed, 14 insertions, 16 deletions
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 318ebc58bb7b..b9b77c3e7ae0 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -119,6 +119,8 @@ static void ext2_put_super (struct super_block * sb)
119 int i; 119 int i;
120 struct ext2_sb_info *sbi = EXT2_SB(sb); 120 struct ext2_sb_info *sbi = EXT2_SB(sb);
121 121
122 dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
123
122 if (sb->s_dirt) 124 if (sb->s_dirt)
123 ext2_write_super(sb); 125 ext2_write_super(sb);
124 126
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 9d5e582b514a..b2f3715988ba 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -410,6 +410,8 @@ static void ext3_put_super (struct super_block * sb)
410 struct ext3_super_block *es = sbi->s_es; 410 struct ext3_super_block *es = sbi->s_es;
411 int i, err; 411 int i, err;
412 412
413 dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
414
413 lock_kernel(); 415 lock_kernel();
414 416
415 ext3_xattr_put_super(sb); 417 ext3_xattr_put_super(sb);
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 08d31101eb05..808aca3a22f5 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -645,6 +645,8 @@ static void ext4_put_super(struct super_block *sb)
645 struct ext4_super_block *es = sbi->s_es; 645 struct ext4_super_block *es = sbi->s_es;
646 int i, err; 646 int i, err;
647 647
648 dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
649
648 flush_workqueue(sbi->dio_unwritten_wq); 650 flush_workqueue(sbi->dio_unwritten_wq);
649 destroy_workqueue(sbi->dio_unwritten_wq); 651 destroy_workqueue(sbi->dio_unwritten_wq);
650 652
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index b8a07d4c108e..7d940a3a3d93 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -179,6 +179,8 @@ static void jfs_put_super(struct super_block *sb)
179 179
180 jfs_info("In jfs_put_super"); 180 jfs_info("In jfs_put_super");
181 181
182 dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
183
182 lock_kernel(); 184 lock_kernel();
183 185
184 rc = jfs_umount(sb); 186 rc = jfs_umount(sb);
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
index 5dad5a2707bc..08879af0af0d 100644
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -466,6 +466,8 @@ static void reiserfs_put_super(struct super_block *s)
466 struct reiserfs_transaction_handle th; 466 struct reiserfs_transaction_handle th;
467 th.t_trans_id = 0; 467 th.t_trans_id = 0;
468 468
469 dquot_disable(s, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
470
469 reiserfs_write_lock(s); 471 reiserfs_write_lock(s);
470 472
471 if (s->s_dirt) 473 if (s->s_dirt)
diff --git a/fs/super.c b/fs/super.c
index a38e6e9b6f69..05f62e5d464d 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -160,7 +160,6 @@ void deactivate_locked_super(struct super_block *s)
160{ 160{
161 struct file_system_type *fs = s->s_type; 161 struct file_system_type *fs = s->s_type;
162 if (atomic_dec_and_test(&s->s_active)) { 162 if (atomic_dec_and_test(&s->s_active)) {
163 vfs_dq_off(s, 0);
164 fs->kill_sb(s); 163 fs->kill_sb(s);
165 put_filesystem(fs); 164 put_filesystem(fs);
166 put_super(s); 165 put_super(s);
diff --git a/fs/udf/super.c b/fs/udf/super.c
index b154c41a7a9a..76a61566f299 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -2102,6 +2102,8 @@ static void udf_put_super(struct super_block *sb)
2102 int i; 2102 int i;
2103 struct udf_sb_info *sbi; 2103 struct udf_sb_info *sbi;
2104 2104
2105 dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
2106
2105 sbi = UDF_SB(sb); 2107 sbi = UDF_SB(sb);
2106 2108
2107 lock_kernel(); 2109 lock_kernel();
diff --git a/fs/ufs/super.c b/fs/ufs/super.c
index 495fdc1df7eb..d3977c7128e3 100644
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -1227,6 +1227,8 @@ static void ufs_put_super(struct super_block *sb)
1227 1227
1228 UFSD("ENTER\n"); 1228 UFSD("ENTER\n");
1229 1229
1230 dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
1231
1230 if (sb->s_dirt) 1232 if (sb->s_dirt)
1231 ufs_write_super(sb); 1233 ufs_write_super(sb);
1232 1234
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
index 811529241e33..cfa2abb1b6d1 100644
--- a/include/linux/quotaops.h
+++ b/include/linux/quotaops.h
@@ -156,16 +156,6 @@ extern const struct quotactl_ops vfs_quotactl_ops;
156#define sb_dquot_ops (&dquot_operations) 156#define sb_dquot_ops (&dquot_operations)
157#define sb_quotactl_ops (&vfs_quotactl_ops) 157#define sb_quotactl_ops (&vfs_quotactl_ops)
158 158
159/* Cannot be called inside a transaction */
160static inline int vfs_dq_off(struct super_block *sb, int remount)
161{
162 int ret = -ENOSYS;
163
164 if (sb->s_qcop && sb->s_qcop->quota_off)
165 ret = sb->s_qcop->quota_off(sb, -1, remount);
166 return ret;
167}
168
169#else 159#else
170 160
171static inline int sb_has_quota_usage_enabled(struct super_block *sb, int type) 161static inline int sb_has_quota_usage_enabled(struct super_block *sb, int type)
@@ -232,11 +222,6 @@ static inline void dquot_free_inode(const struct inode *inode)
232{ 222{
233} 223}
234 224
235static inline int vfs_dq_off(struct super_block *sb, int remount)
236{
237 return 0;
238}
239
240static inline int dquot_transfer(struct inode *inode, struct iattr *iattr) 225static inline int dquot_transfer(struct inode *inode, struct iattr *iattr)
241{ 226{
242 return 0; 227 return 0;