tune2fs: Compute quota usage when turning on the 'quota' feature

When turning on the quota feature, tune2fs would create empty quota inodes and
set their inode numbers in superblock. This required e2fsck to be ran before
using the quota feature. This patch adds adds call to compute_quota() and make
sure that we write correct quota information in the quota files at tune2fs time
itself. This gets rid of the necessity for running e2fsck after setting the
quota feature. Also, tune2fs now does not use existing old quota files
(aquota.user and aquota.group) even if they exist.

Signed-off-by: Aditya Kali <adityakali@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
bitmap-optimize
Aditya Kali 2011-11-14 10:55:54 -05:00 committed by Theodore Ts'o
parent a86d55da8b
commit d7c6f4e6d0
1 changed files with 10 additions and 15 deletions

View File

@ -709,23 +709,18 @@ void handle_quota_options(ext2_filsys fs)
quota_init_context(&qctx, fs, -1);
if (usrquota == QOPT_ENABLE && !fs->super->s_usr_quota_inum) {
if ((qf_ino = quota_file_exists(fs, USRQUOTA, QFMT_VFS_V1)) > 0)
quota_set_sb_inum(fs, qf_ino, USRQUOTA);
else
quota_write_inode(qctx, USRQUOTA);
} else if (usrquota == QOPT_DISABLE) {
quota_remove_inode(fs, USRQUOTA);
}
if (usrquota == QOPT_ENABLE || grpquota == QOPT_ENABLE)
quota_compute_usage(qctx);
if (grpquota == QOPT_ENABLE && !fs->super->s_grp_quota_inum) {
if ((qf_ino = quota_file_exists(fs, GRPQUOTA, QFMT_VFS_V1)) > 0)
quota_set_sb_inum(fs, qf_ino, GRPQUOTA);
else
quota_write_inode(qctx, GRPQUOTA);
} else if (grpquota == QOPT_DISABLE) {
if (usrquota == QOPT_ENABLE)
quota_write_inode(qctx, USRQUOTA);
else if (usrquota == QOPT_DISABLE)
quota_remove_inode(fs, USRQUOTA);
if (grpquota == QOPT_ENABLE)
quota_write_inode(qctx, GRPQUOTA);
else if (grpquota == QOPT_DISABLE)
quota_remove_inode(fs, GRPQUOTA);
}
quota_release_context(&qctx);