quota: rename default quotactl methods to dquot_
[safe/jmp/linux-2.6] / fs / ufs / super.c
index 95d61cb..2b08a8d 100644 (file)
@@ -1016,6 +1016,9 @@ magic_found:
                case UFS_FSSTABLE:
                        UFSD("fs is stable\n");
                        break;
+               case UFS_FSLOG:
+                       UFSD("fs is logging fs\n");
+                       break;
                case UFS_FSOSF1:
                        UFSD("fs is DEC OSF/1\n");
                        break;
@@ -1042,7 +1045,11 @@ magic_found:
         */
        sb->s_op = &ufs_super_ops;
        sb->s_export_op = &ufs_export_ops;
-       sb->dq_op = NULL; /***/
+#ifdef CONFIG_QUOTA
+       sb->s_qcop = &dquot_quotactl_ops;
+       sb->dq_op = NULL; /* &dquot_operations */
+#endif
+
        sb->s_magic = fs32_to_cpu(sb, usb3->fs_magic);
 
        uspi->s_sblkno = fs32_to_cpu(sb, usb1->fs_sblkno);
@@ -1224,6 +1231,8 @@ static void ufs_put_super(struct super_block *sb)
                
        UFSD("ENTER\n");
 
+       dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
+
        if (sb->s_dirt)
                ufs_write_super(sb);
 
@@ -1245,7 +1254,9 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
        struct ufs_super_block_first * usb1;
        struct ufs_super_block_third * usb3;
        unsigned new_mount_opt, ufstype;
+       int enable_quota = 0;
        unsigned flags;
+       int err;
 
        lock_kernel();
        lock_super(sb);
@@ -1286,6 +1297,13 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
         * fs was mouted as rw, remounting ro
         */
        if (*mount_flags & MS_RDONLY) {
+               err = dquot_suspend(sb, -1);
+               if (err < 0) {
+                       unlock_super(sb);
+                       unlock_kernel();
+                       return err;
+               }
+
                ufs_put_super_internal(sb);
                usb1->fs_time = cpu_to_fs32(sb, get_seconds());
                if ((flags & UFS_ST_MASK) == UFS_ST_SUN
@@ -1324,11 +1342,14 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
                        return -EPERM;
                }
                sb->s_flags &= ~MS_RDONLY;
+               enable_quota = 1;
 #endif
        }
        UFS_SB(sb)->s_mount_opt = new_mount_opt;
        unlock_super(sb);
        unlock_kernel();
+       if (enable_quota)
+               dquot_resume(sb, -1);
        return 0;
 }
 
@@ -1434,7 +1455,7 @@ static void destroy_inodecache(void)
 
 static void ufs_clear_inode(struct inode *inode)
 {
-       vfs_dq_drop(inode);
+       dquot_drop(inode);
 }
 
 #ifdef CONFIG_QUOTA