aboutsummaryrefslogtreecommitdiffstats
path: root/e2fsck/pass1.c
diff options
context:
space:
mode:
authorLi Xi <pkuelelixi@gmail.com>2016-02-29 22:57:05 -0500
committerTheodore Ts'o <tytso@mit.edu>2016-03-06 17:33:39 -0500
commit080e09b46ff1f6b00b26231868002e781e98adf2 (patch)
tree8ec3adb58e87162def29c3cc8f89603d51bf9b73 /e2fsck/pass1.c
parent0c18d0368a8cbcff27a1923902cc29439981454f (diff)
downloadandroid_external_e2fsprogs-080e09b46ff1f6b00b26231868002e781e98adf2.tar.gz
android_external_e2fsprogs-080e09b46ff1f6b00b26231868002e781e98adf2.tar.bz2
android_external_e2fsprogs-080e09b46ff1f6b00b26231868002e781e98adf2.zip
Add project quota support
This patch adds project quota support. An new quota type PRJQUOTA(2) is added. EXT4_PRJ_QUOTA_INO(11) is reserved for project quota inode. The super block reservers an field s_prj_quota_inum for saving project quota inode. And each inode adds an internal field i_projid for saving its project ID. Signed-off-by: Li Xi <lixi@ddn.com> Signed-off-by: Wang Shilong <wshilong@ddn.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'e2fsck/pass1.c')
-rw-r--r--e2fsck/pass1.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index 8d0192ef..631d7355 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -102,7 +102,7 @@ struct process_block_struct {
struct process_inode_block {
ext2_ino_t ino;
- struct ext2_inode inode;
+ struct ext2_inode_large inode;
};
struct scan_callback_struct {
@@ -1774,7 +1774,8 @@ void e2fsck_pass1(e2fsck_t ctx)
inode->i_block[EXT2_TIND_BLOCK] ||
ext2fs_file_acl_block(fs, inode))) {
inodes_to_process[process_inode_count].ino = ino;
- inodes_to_process[process_inode_count].inode = *inode;
+ inodes_to_process[process_inode_count].inode =
+ *(struct ext2_inode_large *)inode;
process_inode_count++;
} else
check_blocks(ctx, &pctx, block_buf);
@@ -3120,7 +3121,8 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
}
}
- if (ino == EXT2_ROOT_INO || ino >= EXT2_FIRST_INODE(ctx->fs->super)) {
+ if (ino != quota_type2inum(PRJQUOTA, fs->super) &&
+ (ino == EXT2_ROOT_INO || ino >= EXT2_FIRST_INODE(ctx->fs->super))) {
quota_data_add(ctx->qctx, inode, ino,
pb.num_blocks * fs->blocksize);
quota_data_inodes(ctx->qctx, inode, ino, +1);