summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debugfs/set_fields.c2
-rw-r--r--e2fsck/message.c4
-rw-r--r--ext2ed/inode_com.c8
-rw-r--r--lib/blkid/probe.h1
-rw-r--r--lib/e2p/feature.c2
-rw-r--r--lib/e2p/ls.c6
-rw-r--r--lib/ext2fs/ext2_fs.h9
-rw-r--r--lib/ext2fs/swapfs.c2
-rw-r--r--lib/ext2fs/tst_super_size.c2
9 files changed, 27 insertions, 9 deletions
diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c
index db1a99b7..3b401176 100644
--- a/debugfs/set_fields.c
+++ b/debugfs/set_fields.c
@@ -140,6 +140,8 @@ static struct field_set_info super_fields[] = {
parse_uint },
{ "snapshot_list", &set_sb.s_snapshot_list, 4, parse_uint },
{ "mount_opts", &set_sb.s_mount_opts, 64, parse_string },
+ { "usr_quota_inum", &set_sb.s_usr_quota_inum, 4, parse_uint },
+ { "grp_quota_inum", &set_sb.s_grp_quota_inum, 4, parse_uint },
{ 0, 0, 0, 0 }
};
diff --git a/e2fsck/message.c b/e2fsck/message.c
index 9aaedc50..74ab155c 100644
--- a/e2fsck/message.c
+++ b/e2fsck/message.c
@@ -151,8 +151,8 @@ static const char *special_inode_name[] =
N_("<The NULL inode>"), /* 0 */
N_("<The bad blocks inode>"), /* 1 */
"/", /* 2 */
- N_("<The ACL index inode>"), /* 3 */
- N_("<The ACL data inode>"), /* 4 */
+ N_("<The user quota inode>"), /* 3 */
+ N_("<The group quota inode>"), /* 4 */
N_("<The boot loader inode>"), /* 5 */
N_("<The undelete directory inode>"), /* 6 */
N_("<The group descriptor inode>"), /* 7 */
diff --git a/ext2ed/inode_com.c b/ext2ed/inode_com.c
index 843286c5..8d4b9f33 100644
--- a/ext2ed/inode_com.c
+++ b/ext2ed/inode_com.c
@@ -222,11 +222,11 @@ void type_ext2_inode___show (char *command_line)
case EXT2_ROOT_INO:
wprintw (show_win,"Root inode - ");
break;
- case EXT2_ACL_IDX_INO:
- wprintw (show_win,"ACL index inode - ");
+ case EXT4_USR_QUOTA_INO:
+ wprintw (show_win,"User quota inode - ");
break;
- case EXT2_ACL_DATA_INO:
- wprintw (show_win,"ACL data inode - ");
+ case EXT4_GRP_QUOTA_INO:
+ wprintw (show_win,"Group quota inode - ");
break;
case EXT2_BOOT_LOADER_INO:
wprintw (show_win,"Boot loader inode - ");
diff --git a/lib/blkid/probe.h b/lib/blkid/probe.h
index 37fc9c06..37e80eff 100644
--- a/lib/blkid/probe.h
+++ b/lib/blkid/probe.h
@@ -109,6 +109,7 @@ struct ext2_super_block {
#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010
#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020
#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040
+#define EXT4_FEATURE_RO_COMPAT_QUOTA 0x0100
/* for s_feature_incompat */
#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
diff --git a/lib/e2p/feature.c b/lib/e2p/feature.c
index c7f8a359..9324199b 100644
--- a/lib/e2p/feature.c
+++ b/lib/e2p/feature.c
@@ -55,6 +55,8 @@ static struct feature feature_list[] = {
"dir_nlink" },
{ E2P_FEATURE_RO_INCOMPAT, EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE,
"extra_isize" },
+ { E2P_FEATURE_RO_INCOMPAT, EXT4_FEATURE_RO_COMPAT_QUOTA,
+ "quota" },
{ E2P_FEATURE_INCOMPAT, EXT2_FEATURE_INCOMPAT_COMPRESSION,
"compression" },
diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c
index 5ef80988..8b8360a8 100644
--- a/lib/e2p/ls.c
+++ b/lib/e2p/ls.c
@@ -374,6 +374,12 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
fprintf(f, "Last error block #: %llu\n",
sb->s_last_error_block);
}
+ if (sb->s_usr_quota_inum)
+ fprintf(f, "User quota inode: %u\n",
+ sb->s_usr_quota_inum);
+ if (sb->s_grp_quota_inum)
+ fprintf(f, "Group quota inode: %u\n",
+ sb->s_grp_quota_inum);
}
void list_super (struct ext2_super_block * s)
diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index afd33a93..f396a10f 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -44,8 +44,8 @@
*/
#define EXT2_BAD_INO 1 /* Bad blocks inode */
#define EXT2_ROOT_INO 2 /* Root inode */
-#define EXT2_ACL_IDX_INO 3 /* ACL inode */
-#define EXT2_ACL_DATA_INO 4 /* ACL inode */
+#define EXT4_USR_QUOTA_INO 3 /* User quota inode */
+#define EXT4_GRP_QUOTA_INO 4 /* Group quota inode */
#define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */
#define EXT2_UNDEL_DIR_INO 6 /* Undelete directory inode */
#define EXT2_RESIZE_INO 7 /* Reserved group descriptors inode */
@@ -614,7 +614,9 @@ struct ext2_super_block {
__u8 s_last_error_func[32]; /* function where the error happened */
#define EXT4_S_ERR_END ext4_offsetof(struct ext2_super_block, s_mount_opts)
__u8 s_mount_opts[64];
- __u32 s_reserved[112]; /* Padding to the end of the block */
+ __u32 s_usr_quota_inum; /* inode number of user quota file */
+ __u32 s_grp_quota_inum; /* inode number of group quota file */
+ __u32 s_reserved[110]; /* Padding to the end of the block */
};
#define EXT4_S_ERR_LEN (EXT4_S_ERR_END - EXT4_S_ERR_START)
@@ -672,6 +674,7 @@ struct ext2_super_block {
#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020
#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040
#define EXT4_FEATURE_RO_COMPAT_HAS_SNAPSHOT 0x0080
+#define EXT4_FEATURE_RO_COMPAT_QUOTA 0x0100
#define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c
index 12427e0a..15ff6fce 100644
--- a/lib/ext2fs/swapfs.c
+++ b/lib/ext2fs/swapfs.c
@@ -76,6 +76,8 @@ void ext2fs_swap_super(struct ext2_super_block * sb)
sb->s_snapshot_r_blocks_count =
ext2fs_swab64(sb->s_snapshot_r_blocks_count);
sb->s_snapshot_list = ext2fs_swab32(sb->s_snapshot_list);
+ sb->s_usr_quota_inum = ext2fs_swab32(sb->s_usr_quota_inum);
+ sb->s_grp_quota_inum = ext2fs_swab32(sb->s_grp_quota_inum);
for (i=0; i < 4; i++)
sb->s_hash_seed[i] = ext2fs_swab32(sb->s_hash_seed[i]);
diff --git a/lib/ext2fs/tst_super_size.c b/lib/ext2fs/tst_super_size.c
index eb9114f1..a3a5b442 100644
--- a/lib/ext2fs/tst_super_size.c
+++ b/lib/ext2fs/tst_super_size.c
@@ -123,6 +123,8 @@ void check_superblock_fields()
check_field(s_last_error_block);
check_field(s_last_error_func);
check_field(s_mount_opts);
+ check_field(s_usr_quota_inum);
+ check_field(s_grp_quota_inum);
check_field(s_reserved);
printf("Ending offset is %d\n\n", cur_offset);
#endif