Message ID | CAO3qy=HC58uTfpq13b31wOqJ79pWrnuP3TVfUCDesxStW3xfWQ@mail.gmail.com |
---|---|
State | Not Applicable, archived |
Headers | show |
On Wed, Jan 25, 2017 at 08:07:29PM +0300, Artem Blagodarenko wrote: > This patch removes i_dir_acl macros and macros users. > Now structure field can be accessed as i_size_high. This field > is useful for largedir feature. Incidentally, you could just make this a 4-patch series, where this patch is the first one followed by the other three patches. It'd make the dependency between this patch and the other three more obvious. (You could make it even /more/ obvious by sending a cover letter and then the four patches as "replies" to the cover letter, per lkml convention.) --D > > Signed-off-by: Alexey Lyashkov <alexey.lyashkov@seagate.com> > Signed-off-by: Artem Blagodarenko <artem.blagodarenko@seagate.com> > --- > debugfs/debugfs.c | 16 +++++++--------- > debugfs/set_fields.c | 1 - > e2fsck/message.c | 4 ---- > e2fsck/pass1.c | 3 +-- > e2fsck/pass2.c | 8 -------- > e2fsck/problem.c | 5 ----- > e2fsck/problem.h | 3 --- > lib/ext2fs/ext2_fs.h | 6 ++---- > lib/ext2fs/swapfs.c | 2 +- > tests/d_special_files/expect | 10 +++++----- > tests/f_badcluster/expect | 14 +++++++------- > tests/f_recnect_bad/expect.1 | 3 --- > 12 files changed, 23 insertions(+), 52 deletions(-) > > diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c > index b40d9e2..795bdc3 100644 > --- a/debugfs/debugfs.c > +++ b/debugfs/debugfs.c > @@ -841,16 +841,15 @@ void internal_dump_inode(FILE *out, const char *prefix, > fprintf(out, "%d\n", inode->i_size); > if (os == EXT2_OS_HURD) > fprintf(out, > - "%sFile ACL: %d Directory ACL: %d Translator: %d\n", > + "%sFile ACL: %d Translator: %d\n", > prefix, > - inode->i_file_acl, LINUX_S_ISDIR(inode->i_mode) ? > inode->i_dir_acl : 0, > + inode->i_file_acl, > inode->osd1.hurd1.h_i_translator); > else > - fprintf(out, "%sFile ACL: %llu Directory ACL: %d\n", > + fprintf(out, "%sFile ACL: %llu\n", > prefix, > inode->i_file_acl | ((long long) > - (inode->osd2.linux2.l_i_file_acl_high) << 32), > - LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0); > + (inode->osd2.linux2.l_i_file_acl_high) << 32)); > if (os != EXT2_OS_HURD) > fprintf(out, "%sLinks: %d Blockcount: %llu\n", > prefix, inode->i_links_count, > @@ -1347,10 +1346,9 @@ void do_modify_inode(int argc, char *argv[]) > modify_u32(argv[0], "Reserved1", decimal_format, &inode.i_reserved1); > #endif > modify_u32(argv[0], "File acl", decimal_format, &inode.i_file_acl); > - if (LINUX_S_ISDIR(inode.i_mode)) > - modify_u32(argv[0], "Directory acl", decimal_format, &inode.i_dir_acl); > - else > - modify_u32(argv[0], "High 32bits of size", decimal_format, > &inode.i_size_high); > + > + modify_u32(argv[0], "High 32bits of size", decimal_format, > + &inode.i_size_high); > > if (os == EXT2_OS_HURD) > modify_u32(argv[0], "Translator Block", > diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c > index ff9b7b6..ca68862 100644 > --- a/debugfs/set_fields.c > +++ b/debugfs/set_fields.c > @@ -212,7 +212,6 @@ static struct field_set_info inode_fields[] = { > /* Special case: i_file_acl_high is 2 bytes */ > { "file_acl", &set_inode.i_file_acl, > &set_inode.osd2.linux2.l_i_file_acl_high, 6, parse_uint }, > - { "dir_acl", &set_inode.i_dir_acl, NULL, 4, parse_uint, FLAG_ALIAS }, > { "faddr", &set_inode.i_faddr, NULL, 4, parse_uint }, > { "frag", &set_inode.osd2.hurd2.h_i_frag, NULL, 1, parse_uint, > FLAG_ALIAS }, > { "fsize", &set_inode.osd2.hurd2.h_i_fsize, NULL, 1, parse_uint }, > diff --git a/e2fsck/message.c b/e2fsck/message.c > index 1c3fcd8..d21ba05 100644 > --- a/e2fsck/message.c > +++ b/e2fsck/message.c > @@ -318,10 +318,6 @@ static _INLINE_ void expand_inode_expression(FILE > *f, ext2_filsys fs, char ch, > case 'f': > fprintf(f, "%llu", ext2fs_file_acl_block(fs, inode)); > break; > - case 'd': > - fprintf(f, "%u", (LINUX_S_ISDIR(inode->i_mode) ? > - inode->i_dir_acl : 0)); > - break; > case 'u': > fprintf(f, "%d", inode_uid(*inode)); > break; > diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c > index 8ef40f6..2d21aae 100644 > --- a/e2fsck/pass1.c > +++ b/e2fsck/pass1.c > @@ -1715,8 +1715,7 @@ void e2fsck_pass1(e2fsck_t ctx) > frag = fsize = 0; > } > > - if (inode->i_faddr || frag || fsize || > - (LINUX_S_ISDIR(inode->i_mode) && inode->i_dir_acl)) > + if (inode->i_faddr || frag || fsize) > mark_inode_bad(ctx, ino); > if ((fs->super->s_creator_os != EXT2_OS_HURD) && > !ext2fs_has_feature_64bit(fs->super) && > diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c > index 11c19e8..3b141db 100644 > --- a/e2fsck/pass2.c > +++ b/e2fsck/pass2.c > @@ -1811,14 +1811,6 @@ int e2fsck_process_bad_inode(e2fsck_t ctx, > ext2_ino_t dir, > } else > not_fixed++; > } > - if (inode.i_dir_acl && > - LINUX_S_ISDIR(inode.i_mode)) { > - if (fix_problem(ctx, PR_2_DIR_ACL_ZERO, &pctx)) { > - inode.i_dir_acl = 0; > - inode_modified++; > - } else > - not_fixed++; > - } > > if (inode_modified) > e2fsck_write_inode(ctx, ino, &inode, "process_bad_inode"); > diff --git a/e2fsck/problem.c b/e2fsck/problem.c > index 34a671e..ce2f79d 100644 > --- a/e2fsck/problem.c > +++ b/e2fsck/problem.c > @@ -1360,11 +1360,6 @@ static struct e2fsck_problem problem_table[] = { > N_("i_file_acl @F %If, @s zero.\n"), > PROMPT_CLEAR, 0 }, > > - /* i_dir_acl should be zero */ > - { PR_2_DIR_ACL_ZERO, > - N_("i_dir_acl @F %Id, @s zero.\n"), > - PROMPT_CLEAR, 0 }, > - > /* i_frag should be zero */ > { PR_2_FRAG_ZERO, > N_("i_frag @F %N, @s zero.\n"), > diff --git a/e2fsck/problem.h b/e2fsck/problem.h > index 86cb614..f07f9b6 100644 > --- a/e2fsck/problem.h > +++ b/e2fsck/problem.h > @@ -808,9 +808,6 @@ struct problem_context { > /* i_file_acl should be zero */ > #define PR_2_FILE_ACL_ZERO 0x02000E > > -/* i_dir_acl should be zero */ > -#define PR_2_DIR_ACL_ZERO 0x02000F > - > /* i_frag should be zero */ > #define PR_2_FRAG_ZERO 0x020010 > > diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h > index 27a7d3a..195e366 100644 > --- a/lib/ext2fs/ext2_fs.h > +++ b/lib/ext2fs/ext2_fs.h > @@ -398,7 +398,7 @@ struct ext2_inode { > __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ > __u32 i_generation; /* File version (for NFS) */ > __u32 i_file_acl; /* File ACL */ > - __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ > + __u32 i_size_high; > __u32 i_faddr; /* Fragment address */ > union { > struct { > @@ -446,7 +446,7 @@ struct ext2_inode_large { > __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ > __u32 i_generation; /* File version (for NFS) */ > __u32 i_file_acl; /* File ACL */ > - __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ > + __u32 i_size_high; > __u32 i_faddr; /* Fragment address */ > union { > struct { > @@ -484,8 +484,6 @@ struct ext2_inode_large { > #define EXT4_EPOCH_BITS 2 > #define EXT4_EPOCH_MASK ((1 << EXT4_EPOCH_BITS) - 1) > > -#define i_dir_acl i_size_high > - > #define i_checksum_lo osd2.linux2.l_i_checksum_lo > > #define inode_includes(size, field) \ > diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c > index d63fc55..2d05ee7 100644 > --- a/lib/ext2fs/swapfs.c > +++ b/lib/ext2fs/swapfs.c > @@ -247,7 +247,7 @@ void ext2fs_swap_inode_full(ext2_filsys fs, struct > ext2_inode_large *t, > has_extents = 1; > if (!hostorder && (t->i_flags & EXT4_INLINE_DATA_FL)) > has_inline_data = 1; > - t->i_dir_acl = ext2fs_swab32(f->i_dir_acl); > + t->i_size_high = ext2fs_swab32(f->i_size_high); > /* > * Extent data and inline data are swapped on access, not here > */ > diff --git a/tests/d_special_files/expect b/tests/d_special_files/expect > index f729b0f..c825932 100644 > --- a/tests/d_special_files/expect > +++ b/tests/d_special_files/expect > @@ -5,7 +5,7 @@ debugfs -R ''stat foo'' -w test.img > Inode: 12 Type: symlink Mode: 0777 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 3 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > @@ -17,7 +17,7 @@ debugfs -R ''stat foo2'' -w test.img > Inode: 13 Type: symlink Mode: 0777 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 80 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 2 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > @@ -42,7 +42,7 @@ debugfs -R ''stat pipe'' -w test.img > Inode: 14 Type: FIFO Mode: 0000 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 0 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > @@ -55,7 +55,7 @@ debugfs -R ''stat sda'' -w test.img > Inode: 15 Type: block special Mode: 0000 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 0 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > @@ -67,7 +67,7 @@ debugfs -R ''stat null'' -w test.img > Inode: 16 Type: character special Mode: 0000 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 0 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > diff --git a/tests/f_badcluster/expect b/tests/f_badcluster/expect > index 65a1641..75a3820 100644 > --- a/tests/f_badcluster/expect > +++ b/tests/f_badcluster/expect > @@ -116,7 +116,7 @@ debugfs: stat /a > Inode: 12 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152157 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -128,7 +128,7 @@ debugfs: stat /b > Inode: 13 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152158 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -140,7 +140,7 @@ debugfs: stat /c > Inode: 14 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152159 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -152,7 +152,7 @@ debugfs: stat /d > Inode: 15 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152160 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -163,7 +163,7 @@ debugfs: stat /e > Inode: 16 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152161 Version: 0x00000001 > User: 0 Group: 0 Size: 6144 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -175,7 +175,7 @@ debugfs: stat /f > Inode: 17 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152162 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -187,7 +187,7 @@ debugfs: stat /g > Inode: 18 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152163 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > diff --git a/tests/f_recnect_bad/expect.1 b/tests/f_recnect_bad/expect.1 > index 8ba81e6..6433c8d 100644 > --- a/tests/f_recnect_bad/expect.1 > +++ b/tests/f_recnect_bad/expect.1 > @@ -3,9 +3,6 @@ Pass 2: Checking directory structure > i_faddr for inode 15 (/test/quux) is 23, should be zero. > Clear? yes > > -i_dir_acl for inode 15 (/test/quux) is 12, should be zero. > -Clear? yes > - > i_file_acl for inode 13 (/test/???) is 12, should be zero. > Clear? yes > > --
On Jan 25, 2017, at 10:07 AM, Artem Blagodarenko <artem.blagodarenko@seagate.com> wrote: > > This patch removes i_dir_acl macros and macros users. I agree with Darrick that this should be the first patch in the largedir series, otherwise it isn't clear that those later patches are dependent upon this one. > Now structure field can be accessed as i_size_high. This field > is useful for largedir feature. I think most of the patch is good, but it is important to not start allowing i_size_high to be used for directories without the LARGEDIR feature. Otherwise, old filesystems with corrupted directory inodes may have very large file sizes even though they shouldn't. > Signed-off-by: Alexey Lyashkov <alexey.lyashkov@seagate.com> > Signed-off-by: Artem Blagodarenko <artem.blagodarenko@seagate.com> > --- > debugfs/debugfs.c | 16 +++++++--------- > debugfs/set_fields.c | 1 - > e2fsck/message.c | 4 ---- > e2fsck/pass1.c | 3 +-- > e2fsck/pass2.c | 8 -------- > e2fsck/problem.c | 5 ----- > e2fsck/problem.h | 3 --- > lib/ext2fs/ext2_fs.h | 6 ++---- > lib/ext2fs/swapfs.c | 2 +- > tests/d_special_files/expect | 10 +++++----- > tests/f_badcluster/expect | 14 +++++++------- > tests/f_recnect_bad/expect.1 | 3 --- > 12 files changed, 23 insertions(+), 52 deletions(-) > > diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c > index b40d9e2..795bdc3 100644 > --- a/debugfs/debugfs.c > +++ b/debugfs/debugfs.c > @@ -841,16 +841,15 @@ void internal_dump_inode(FILE *out, const char *prefix, > fprintf(out, "%d\n", inode->i_size); > if (os == EXT2_OS_HURD) > fprintf(out, > - "%sFile ACL: %d Directory ACL: %d Translator: %d\n", > + "%sFile ACL: %d Translator: %d\n", > prefix, > - inode->i_file_acl, LINUX_S_ISDIR(inode->i_mode) ? > inode->i_dir_acl : 0, > + inode->i_file_acl, > inode->osd1.hurd1.h_i_translator); > else > - fprintf(out, "%sFile ACL: %llu Directory ACL: %d\n", > + fprintf(out, "%sFile ACL: %llu\n", > prefix, > inode->i_file_acl | ((long long) > - (inode->osd2.linux2.l_i_file_acl_high) << 32), > - LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0); > + (inode->osd2.linux2.l_i_file_acl_high) << 32)); > if (os != EXT2_OS_HURD) > fprintf(out, "%sLinks: %d Blockcount: %llu\n", > prefix, inode->i_links_count, > @@ -1347,10 +1346,9 @@ void do_modify_inode(int argc, char *argv[]) > modify_u32(argv[0], "Reserved1", decimal_format, &inode.i_reserved1); > #endif > modify_u32(argv[0], "File acl", decimal_format, &inode.i_file_acl); > - if (LINUX_S_ISDIR(inode.i_mode)) > - modify_u32(argv[0], "Directory acl", decimal_format, &inode.i_dir_acl); > - else > - modify_u32(argv[0], "High 32bits of size", decimal_format, &inode.i_size_high); > + > + modify_u32(argv[0], "High 32bits of size", decimal_format, > + &inode.i_size_high); > > if (os == EXT2_OS_HURD) > modify_u32(argv[0], "Translator Block", > diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c > index ff9b7b6..ca68862 100644 > --- a/debugfs/set_fields.c > +++ b/debugfs/set_fields.c > @@ -212,7 +212,6 @@ static struct field_set_info inode_fields[] = { > /* Special case: i_file_acl_high is 2 bytes */ > { "file_acl", &set_inode.i_file_acl, > &set_inode.osd2.linux2.l_i_file_acl_high, 6, parse_uint }, > - { "dir_acl", &set_inode.i_dir_acl, NULL, 4, parse_uint, FLAG_ALIAS }, > { "faddr", &set_inode.i_faddr, NULL, 4, parse_uint }, > { "frag", &set_inode.osd2.hurd2.h_i_frag, NULL, 1, parse_uint, FLAG_ALIAS }, > { "fsize", &set_inode.osd2.hurd2.h_i_fsize, NULL, 1, parse_uint }, > diff --git a/e2fsck/message.c b/e2fsck/message.c > index 1c3fcd8..d21ba05 100644 > --- a/e2fsck/message.c > +++ b/e2fsck/message.c > @@ -318,10 +318,6 @@ static _INLINE_ void expand_inode_expression(FILE > *f, ext2_filsys fs, char ch, > case 'f': > fprintf(f, "%llu", ext2fs_file_acl_block(fs, inode)); > break; > - case 'd': > - fprintf(f, "%u", (LINUX_S_ISDIR(inode->i_mode) ? > - inode->i_dir_acl : 0)); > - break; > case 'u': > fprintf(f, "%d", inode_uid(*inode)); > break; > diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c > index 8ef40f6..2d21aae 100644 > --- a/e2fsck/pass1.c > +++ b/e2fsck/pass1.c > @@ -1715,8 +1715,7 @@ void e2fsck_pass1(e2fsck_t ctx) > frag = fsize = 0; > } > > - if (inode->i_faddr || frag || fsize || > - (LINUX_S_ISDIR(inode->i_mode) && inode->i_dir_acl)) This check should be kept until the LARGEDIR support is added, at which point it should be conditional on LARGEDIR being enabled. > + if (inode->i_faddr || frag || fsize) > mark_inode_bad(ctx, ino); > if ((fs->super->s_creator_os != EXT2_OS_HURD) && > !ext2fs_has_feature_64bit(fs->super) && > diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c > index 11c19e8..3b141db 100644 > --- a/e2fsck/pass2.c > +++ b/e2fsck/pass2.c > @@ -1811,14 +1811,6 @@ int e2fsck_process_bad_inode(e2fsck_t ctx, > ext2_ino_t dir, > } else > not_fixed++; > } > - if (inode.i_dir_acl && > - LINUX_S_ISDIR(inode.i_mode)) { > - if (fix_problem(ctx, PR_2_DIR_ACL_ZERO, &pctx)) { I think this check should also be removed only as part of the patch that adds LARGEDIR support, similar to how the LARGE_FILE feature was added. > - inode.i_dir_acl = 0; > - inode_modified++; > - } else > - not_fixed++; > - } > > if (inode_modified) > e2fsck_write_inode(ctx, ino, &inode, "process_bad_inode"); > diff --git a/e2fsck/problem.c b/e2fsck/problem.c > index 34a671e..ce2f79d 100644 > --- a/e2fsck/problem.c > +++ b/e2fsck/problem.c > @@ -1360,11 +1360,6 @@ static struct e2fsck_problem problem_table[] = { > N_("i_file_acl @F %If, @s zero.\n"), > PROMPT_CLEAR, 0 }, > > - /* i_dir_acl should be zero */ > - { PR_2_DIR_ACL_ZERO, > - N_("i_dir_acl @F %Id, @s zero.\n"), This should be renamed to PR_2_DIR_SIZE_HIGH_ZERO or similar. > - PROMPT_CLEAR, 0 }, > - > /* i_frag should be zero */ > { PR_2_FRAG_ZERO, > N_("i_frag @F %N, @s zero.\n"), > diff --git a/e2fsck/problem.h b/e2fsck/problem.h > index 86cb614..f07f9b6 100644 > --- a/e2fsck/problem.h > +++ b/e2fsck/problem.h > @@ -808,9 +808,6 @@ struct problem_context { > /* i_file_acl should be zero */ > #define PR_2_FILE_ACL_ZERO 0x02000E > > -/* i_dir_acl should be zero */ > -#define PR_2_DIR_ACL_ZERO 0x02000F > - > /* i_frag should be zero */ > #define PR_2_FRAG_ZERO 0x020010 > > diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h > index 27a7d3a..195e366 100644 > --- a/lib/ext2fs/ext2_fs.h > +++ b/lib/ext2fs/ext2_fs.h > @@ -398,7 +398,7 @@ struct ext2_inode { > __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ > __u32 i_generation; /* File version (for NFS) */ > __u32 i_file_acl; /* File ACL */ > - __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ > + __u32 i_size_high; > __u32 i_faddr; /* Fragment address */ > union { > struct { > @@ -446,7 +446,7 @@ struct ext2_inode_large { > __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ > __u32 i_generation; /* File version (for NFS) */ > __u32 i_file_acl; /* File ACL */ > - __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ > + __u32 i_size_high; > __u32 i_faddr; /* Fragment address */ > union { > struct { > @@ -484,8 +484,6 @@ struct ext2_inode_large { > #define EXT4_EPOCH_BITS 2 > #define EXT4_EPOCH_MASK ((1 << EXT4_EPOCH_BITS) - 1) > > -#define i_dir_acl i_size_high > - > #define i_checksum_lo osd2.linux2.l_i_checksum_lo > > #define inode_includes(size, field) \ > diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c > index d63fc55..2d05ee7 100644 > --- a/lib/ext2fs/swapfs.c > +++ b/lib/ext2fs/swapfs.c > @@ -247,7 +247,7 @@ void ext2fs_swap_inode_full(ext2_filsys fs, struct > ext2_inode_large *t, > has_extents = 1; > if (!hostorder && (t->i_flags & EXT4_INLINE_DATA_FL)) > has_inline_data = 1; > - t->i_dir_acl = ext2fs_swab32(f->i_dir_acl); > + t->i_size_high = ext2fs_swab32(f->i_size_high); > /* > * Extent data and inline data are swapped on access, not here > */ > diff --git a/tests/d_special_files/expect b/tests/d_special_files/expect > index f729b0f..c825932 100644 > --- a/tests/d_special_files/expect > +++ b/tests/d_special_files/expect > @@ -5,7 +5,7 @@ debugfs -R ''stat foo'' -w test.img > Inode: 12 Type: symlink Mode: 0777 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 3 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > @@ -17,7 +17,7 @@ debugfs -R ''stat foo2'' -w test.img > Inode: 13 Type: symlink Mode: 0777 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 80 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 2 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > @@ -42,7 +42,7 @@ debugfs -R ''stat pipe'' -w test.img > Inode: 14 Type: FIFO Mode: 0000 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 0 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > @@ -55,7 +55,7 @@ debugfs -R ''stat sda'' -w test.img > Inode: 15 Type: block special Mode: 0000 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 0 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > @@ -67,7 +67,7 @@ debugfs -R ''stat null'' -w test.img > Inode: 16 Type: character special Mode: 0000 Flags: 0x0 > Generation: 0 Version: 0x00000000 > User: 0 Group: 0 Size: 0 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 > diff --git a/tests/f_badcluster/expect b/tests/f_badcluster/expect > index 65a1641..75a3820 100644 > --- a/tests/f_badcluster/expect > +++ b/tests/f_badcluster/expect > @@ -116,7 +116,7 @@ debugfs: stat /a > Inode: 12 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152157 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -128,7 +128,7 @@ debugfs: stat /b > Inode: 13 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152158 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -140,7 +140,7 @@ debugfs: stat /c > Inode: 14 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152159 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -152,7 +152,7 @@ debugfs: stat /d > Inode: 15 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152160 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 0 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -163,7 +163,7 @@ debugfs: stat /e > Inode: 16 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152161 Version: 0x00000001 > User: 0 Group: 0 Size: 6144 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -175,7 +175,7 @@ debugfs: stat /f > Inode: 17 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152162 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > @@ -187,7 +187,7 @@ debugfs: stat /g > Inode: 18 Type: regular Mode: 0644 Flags: 0x80000 > Generation: 1117152163 Version: 0x00000001 > User: 0 Group: 0 Size: 3072 > -File ACL: 0 Directory ACL: 0 > +File ACL: 0 > Links: 1 Blockcount: 32 > Fragment: Address: 0 Number: 0 Size: 0 > ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 > diff --git a/tests/f_recnect_bad/expect.1 b/tests/f_recnect_bad/expect.1 > index 8ba81e6..6433c8d 100644 > --- a/tests/f_recnect_bad/expect.1 > +++ b/tests/f_recnect_bad/expect.1 > @@ -3,9 +3,6 @@ Pass 2: Checking directory structure > i_faddr for inode 15 (/test/quux) is 23, should be zero. > Clear? yes > > -i_dir_acl for inode 15 (/test/quux) is 12, should be zero. > -Clear? yes > - > i_file_acl for inode 13 (/test/???) is 12, should be zero. > Clear? yes > > -- Cheers, Andreas
diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c index b40d9e2..795bdc3 100644 --- a/debugfs/debugfs.c +++ b/debugfs/debugfs.c @@ -841,16 +841,15 @@ void internal_dump_inode(FILE *out, const char *prefix, fprintf(out, "%d\n", inode->i_size); if (os == EXT2_OS_HURD) fprintf(out, - "%sFile ACL: %d Directory ACL: %d Translator: %d\n", + "%sFile ACL: %d Translator: %d\n", prefix, - inode->i_file_acl, LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0, + inode->i_file_acl, inode->osd1.hurd1.h_i_translator); else - fprintf(out, "%sFile ACL: %llu Directory ACL: %d\n", + fprintf(out, "%sFile ACL: %llu\n", prefix, inode->i_file_acl | ((long long) - (inode->osd2.linux2.l_i_file_acl_high) << 32), - LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0); + (inode->osd2.linux2.l_i_file_acl_high) << 32)); if (os != EXT2_OS_HURD) fprintf(out, "%sLinks: %d Blockcount: %llu\n", prefix, inode->i_links_count, @@ -1347,10 +1346,9 @@ void do_modify_inode(int argc, char *argv[]) modify_u32(argv[0], "Reserved1", decimal_format, &inode.i_reserved1); #endif modify_u32(argv[0], "File acl", decimal_format, &inode.i_file_acl); - if (LINUX_S_ISDIR(inode.i_mode)) - modify_u32(argv[0], "Directory acl", decimal_format, &inode.i_dir_acl); - else - modify_u32(argv[0], "High 32bits of size", decimal_format, &inode.i_size_high); + + modify_u32(argv[0], "High 32bits of size", decimal_format, + &inode.i_size_high); if (os == EXT2_OS_HURD) modify_u32(argv[0], "Translator Block", diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c index ff9b7b6..ca68862 100644 --- a/debugfs/set_fields.c +++ b/debugfs/set_fields.c @@ -212,7 +212,6 @@ static struct field_set_info inode_fields[] = { /* Special case: i_file_acl_high is 2 bytes */ { "file_acl", &set_inode.i_file_acl, &set_inode.osd2.linux2.l_i_file_acl_high, 6, parse_uint }, - { "dir_acl", &set_inode.i_dir_acl, NULL, 4, parse_uint, FLAG_ALIAS }, { "faddr", &set_inode.i_faddr, NULL, 4, parse_uint }, { "frag", &set_inode.osd2.hurd2.h_i_frag, NULL, 1, parse_uint, FLAG_ALIAS }, { "fsize", &set_inode.osd2.hurd2.h_i_fsize, NULL, 1, parse_uint }, diff --git a/e2fsck/message.c b/e2fsck/message.c index 1c3fcd8..d21ba05 100644 --- a/e2fsck/message.c +++ b/e2fsck/message.c @@ -318,10 +318,6 @@ static _INLINE_ void expand_inode_expression(FILE *f, ext2_filsys fs, char ch, case 'f': fprintf(f, "%llu", ext2fs_file_acl_block(fs, inode)); break; - case 'd': - fprintf(f, "%u", (LINUX_S_ISDIR(inode->i_mode) ? - inode->i_dir_acl : 0)); - break; case 'u': fprintf(f, "%d", inode_uid(*inode)); break; diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 8ef40f6..2d21aae 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -1715,8 +1715,7 @@ void e2fsck_pass1(e2fsck_t ctx) frag = fsize = 0; } - if (inode->i_faddr || frag || fsize || - (LINUX_S_ISDIR(inode->i_mode) && inode->i_dir_acl)) + if (inode->i_faddr || frag || fsize) mark_inode_bad(ctx, ino); if ((fs->super->s_creator_os != EXT2_OS_HURD) && !ext2fs_has_feature_64bit(fs->super) && diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c index 11c19e8..3b141db 100644 --- a/e2fsck/pass2.c +++ b/e2fsck/pass2.c @@ -1811,14 +1811,6 @@ int e2fsck_process_bad_inode(e2fsck_t ctx, ext2_ino_t dir, } else not_fixed++; } - if (inode.i_dir_acl && - LINUX_S_ISDIR(inode.i_mode)) { - if (fix_problem(ctx, PR_2_DIR_ACL_ZERO, &pctx)) { - inode.i_dir_acl = 0; - inode_modified++; - } else - not_fixed++; - } if (inode_modified) e2fsck_write_inode(ctx, ino, &inode, "process_bad_inode"); diff --git a/e2fsck/problem.c b/e2fsck/problem.c index 34a671e..ce2f79d 100644 --- a/e2fsck/problem.c +++ b/e2fsck/problem.c @@ -1360,11 +1360,6 @@ static struct e2fsck_problem problem_table[] = { N_("i_file_acl @F %If, @s zero.\n"), PROMPT_CLEAR, 0 }, - /* i_dir_acl should be zero */ - { PR_2_DIR_ACL_ZERO, - N_("i_dir_acl @F %Id, @s zero.\n"), - PROMPT_CLEAR, 0 }, - /* i_frag should be zero */ { PR_2_FRAG_ZERO, N_("i_frag @F %N, @s zero.\n"), diff --git a/e2fsck/problem.h b/e2fsck/problem.h index 86cb614..f07f9b6 100644 --- a/e2fsck/problem.h +++ b/e2fsck/problem.h @@ -808,9 +808,6 @@ struct problem_context { /* i_file_acl should be zero */ #define PR_2_FILE_ACL_ZERO 0x02000E -/* i_dir_acl should be zero */ -#define PR_2_DIR_ACL_ZERO 0x02000F - /* i_frag should be zero */ #define PR_2_FRAG_ZERO 0x020010 diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h index 27a7d3a..195e366 100644 --- a/lib/ext2fs/ext2_fs.h +++ b/lib/ext2fs/ext2_fs.h @@ -398,7 +398,7 @@ struct ext2_inode { __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ __u32 i_generation; /* File version (for NFS) */ __u32 i_file_acl; /* File ACL */ - __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ + __u32 i_size_high; __u32 i_faddr; /* Fragment address */ union { struct { @@ -446,7 +446,7 @@ struct ext2_inode_large { __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ __u32 i_generation; /* File version (for NFS) */ __u32 i_file_acl; /* File ACL */ - __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ + __u32 i_size_high; __u32 i_faddr; /* Fragment address */ union { struct { @@ -484,8 +484,6 @@ struct ext2_inode_large { #define EXT4_EPOCH_BITS 2 #define EXT4_EPOCH_MASK ((1 << EXT4_EPOCH_BITS) - 1) -#define i_dir_acl i_size_high - #define i_checksum_lo osd2.linux2.l_i_checksum_lo #define inode_includes(size, field) \ diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c index d63fc55..2d05ee7 100644 --- a/lib/ext2fs/swapfs.c +++ b/lib/ext2fs/swapfs.c @@ -247,7 +247,7 @@ void ext2fs_swap_inode_full(ext2_filsys fs, struct ext2_inode_large *t, has_extents = 1; if (!hostorder && (t->i_flags & EXT4_INLINE_DATA_FL)) has_inline_data = 1; - t->i_dir_acl = ext2fs_swab32(f->i_dir_acl); + t->i_size_high = ext2fs_swab32(f->i_size_high); /* * Extent data and inline data are swapped on access, not here */ diff --git a/tests/d_special_files/expect b/tests/d_special_files/expect index f729b0f..c825932 100644 --- a/tests/d_special_files/expect +++ b/tests/d_special_files/expect @@ -5,7 +5,7 @@ debugfs -R ''stat foo'' -w test.img Inode: 12 Type: symlink Mode: 0777 Flags: 0x0 Generation: 0 Version: 0x00000000 User: 0 Group: 0 Size: 3 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 0 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 @@ -17,7 +17,7 @@ debugfs -R ''stat foo2'' -w test.img Inode: 13 Type: symlink Mode: 0777 Flags: 0x0 Generation: 0 Version: 0x00000000 User: 0 Group: 0 Size: 80 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 2 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 @@ -42,7 +42,7 @@ debugfs -R ''stat pipe'' -w test.img Inode: 14 Type: FIFO Mode: 0000 Flags: 0x0 Generation: 0 Version: 0x00000000 User: 0 Group: 0 Size: 0 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 0 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 @@ -55,7 +55,7 @@ debugfs -R ''stat sda'' -w test.img Inode: 15 Type: block special Mode: 0000 Flags: 0x0 Generation: 0 Version: 0x00000000 User: 0 Group: 0 Size: 0 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 0 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 @@ -67,7 +67,7 @@ debugfs -R ''stat null'' -w test.img Inode: 16 Type: character special Mode: 0000 Flags: 0x0 Generation: 0 Version: 0x00000000 User: 0 Group: 0 Size: 0 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 0 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x50f560e0 -- Tue Jan 15 14:00:00 2013 diff --git a/tests/f_badcluster/expect b/tests/f_badcluster/expect index 65a1641..75a3820 100644 --- a/tests/f_badcluster/expect +++ b/tests/f_badcluster/expect @@ -116,7 +116,7 @@ debugfs: stat /a Inode: 12 Type: regular Mode: 0644 Flags: 0x80000 Generation: 1117152157 Version: 0x00000001 User: 0 Group: 0 Size: 3072 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 32 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 @@ -128,7 +128,7 @@ debugfs: stat /b Inode: 13 Type: regular Mode: 0644 Flags: 0x80000 Generation: 1117152158 Version: 0x00000001 User: 0 Group: 0 Size: 3072 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 32 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 @@ -140,7 +140,7 @@ debugfs: stat /c Inode: 14 Type: regular Mode: 0644 Flags: 0x80000 Generation: 1117152159 Version: 0x00000001 User: 0 Group: 0 Size: 3072 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 32 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 @@ -152,7 +152,7 @@ debugfs: stat /d Inode: 15 Type: regular Mode: 0644 Flags: 0x80000 Generation: 1117152160 Version: 0x00000001 User: 0 Group: 0 Size: 3072 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 0 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 @@ -163,7 +163,7 @@ debugfs: stat /e Inode: 16 Type: regular Mode: 0644 Flags: 0x80000 Generation: 1117152161 Version: 0x00000001 User: 0 Group: 0 Size: 6144 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 32 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 @@ -175,7 +175,7 @@ debugfs: stat /f Inode: 17 Type: regular Mode: 0644 Flags: 0x80000 Generation: 1117152162 Version: 0x00000001 User: 0 Group: 0 Size: 3072 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 32 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 @@ -187,7 +187,7 @@ debugfs: stat /g Inode: 18 Type: regular Mode: 0644 Flags: 0x80000 Generation: 1117152163 Version: 0x00000001 User: 0 Group: 0 Size: 3072 -File ACL: 0 Directory ACL: 0 +File ACL: 0 Links: 1 Blockcount: 32 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x539ff5b2 -- Tue Jun 17 08:00:50 2014 diff --git a/tests/f_recnect_bad/expect.1 b/tests/f_recnect_bad/expect.1 index 8ba81e6..6433c8d 100644 --- a/tests/f_recnect_bad/expect.1 +++ b/tests/f_recnect_bad/expect.1 @@ -3,9 +3,6 @@ Pass 2: Checking directory structure i_faddr for inode 15 (/test/quux) is 23, should be zero. Clear? yes -i_dir_acl for inode 15 (/test/quux) is 12, should be zero. -Clear? yes - i_file_acl for inode 13 (/test/???) is 12, should be zero. Clear? yes