Re: [PATCH v8 06/20] fs: Fill in max and min timestamps in superblock
Tigran Aivazian <[email protected]> Tue, 20 Aug 2019 13:22:26 +0100
| Newsgroups | gmane.comp.file-systems.jfs.general |
|---|---|
| Message-ID | <CAK+_RLmK0Vy79giAZnUCmmivvRT+GLZXyiMqBoFB0_Ed1W8BkA__23018.0318163306$1566304338$gmane$org@mail.gmail.com> |
--===============3304127166569224027== Content-Type: multipart/alternative; boundary="0000000000001934b005908b83d2" --0000000000001934b005908b83d2 Content-Type: text/plain; charset="UTF-8" I see no problems for BFS. Acked-By: Tigran Aivazian <[email protected]> On Sun, 18 Aug 2019 at 17:59, Deepa Dinamani <[email protected]> wrote: > Fill in the appropriate limits to avoid inconsistencies > in the vfs cached inode times when timestamps are > outside the permitted range. > > Even though some filesystems are read-only, fill in the > timestamps to reflect the on-disk representation. > > Signed-off-by: Deepa Dinamani <[email protected]> > Reviewed-by: Darrick J. Wong <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > --- > fs/befs/linuxvfs.c | 2 ++ > fs/bfs/inode.c | 2 ++ > fs/coda/inode.c | 3 +++ > fs/cramfs/inode.c | 2 ++ > fs/efs/super.c | 2 ++ > fs/ext2/super.c | 2 ++ > fs/freevxfs/vxfs_super.c | 2 ++ > fs/jffs2/fs.c | 3 +++ > fs/jfs/super.c | 2 ++ > fs/minix/inode.c | 2 ++ > fs/qnx4/inode.c | 2 ++ > fs/qnx6/inode.c | 2 ++ > fs/reiserfs/super.c | 3 +++ > fs/romfs/super.c | 2 ++ > fs/squashfs/super.c | 2 ++ > fs/ufs/super.c | 7 +++++++ > fs/xfs/xfs_super.c | 2 ++ > 17 files changed, 42 insertions(+) > > diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c > index 462d096ff3e9..64cdf4d8e424 100644 > --- a/fs/befs/linuxvfs.c > +++ b/fs/befs/linuxvfs.c > @@ -893,6 +893,8 @@ befs_fill_super(struct super_block *sb, void *data, > int silent) > sb_set_blocksize(sb, (ulong) befs_sb->block_size); > sb->s_op = &befs_sops; > sb->s_export_op = &befs_export_operations; > + sb->s_time_min = 0; > + sb->s_time_max = 0xffffffffffffll; > root = befs_iget(sb, iaddr2blockno(sb, &(befs_sb->root_dir))); > if (IS_ERR(root)) { > ret = PTR_ERR(root); > diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c > index 5e97bed073d7..f8ce1368218b 100644 > --- a/fs/bfs/inode.c > +++ b/fs/bfs/inode.c > @@ -324,6 +324,8 @@ static int bfs_fill_super(struct super_block *s, void > *data, int silent) > return -ENOMEM; > mutex_init(&info->bfs_lock); > s->s_fs_info = info; > + s->s_time_min = 0; > + s->s_time_max = U32_MAX; > > sb_set_blocksize(s, BFS_BSIZE); > > diff --git a/fs/coda/inode.c b/fs/coda/inode.c > index 59a9a29ade0a..e07b5f2ceccc 100644 > --- a/fs/coda/inode.c > +++ b/fs/coda/inode.c > @@ -223,6 +223,9 @@ static int coda_fill_super(struct super_block *sb, > struct fs_context *fc) > sb->s_magic = CODA_SUPER_MAGIC; > sb->s_op = &coda_super_operations; > sb->s_d_op = &coda_dentry_operations; > + sb->s_time_gran = 1; > + sb->s_time_min = S64_MIN; > + sb->s_time_max = S64_MAX; > > error = super_setup_bdi(sb); > if (error) > diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c > index 2ee89a353d64..c304ae8357ef 100644 > --- a/fs/cramfs/inode.c > +++ b/fs/cramfs/inode.c > @@ -599,6 +599,8 @@ static int cramfs_finalize_super(struct super_block > *sb, > > /* Set it all up.. */ > sb->s_flags |= SB_RDONLY; > + sb->s_time_min = 0; > + sb->s_time_max = 0; > sb->s_op = &cramfs_ops; > root = get_cramfs_inode(sb, cramfs_root, 0); > if (IS_ERR(root)) > diff --git a/fs/efs/super.c b/fs/efs/super.c > index 867fc24dee20..4a6ebff2af76 100644 > --- a/fs/efs/super.c > +++ b/fs/efs/super.c > @@ -257,6 +257,8 @@ static int efs_fill_super(struct super_block *s, void > *d, int silent) > if (!sb) > return -ENOMEM; > s->s_fs_info = sb; > + s->s_time_min = 0; > + s->s_time_max = U32_MAX; > > s->s_magic = EFS_SUPER_MAGIC; > if (!sb_set_blocksize(s, EFS_BLOCKSIZE)) { > diff --git a/fs/ext2/super.c b/fs/ext2/super.c > index 44eb6e7eb492..baa36c6fb71e 100644 > --- a/fs/ext2/super.c > +++ b/fs/ext2/super.c > @@ -1002,6 +1002,8 @@ static int ext2_fill_super(struct super_block *sb, > void *data, int silent) > > sb->s_maxbytes = ext2_max_size(sb->s_blocksize_bits); > sb->s_max_links = EXT2_LINK_MAX; > + sb->s_time_min = S32_MIN; > + sb->s_time_max = S32_MAX; > > if (le32_to_cpu(es->s_rev_level) == EXT2_GOOD_OLD_REV) { > sbi->s_inode_size = EXT2_GOOD_OLD_INODE_SIZE; > diff --git a/fs/freevxfs/vxfs_super.c b/fs/freevxfs/vxfs_super.c > index a89f68c3cbed..578a5062706e 100644 > --- a/fs/freevxfs/vxfs_super.c > +++ b/fs/freevxfs/vxfs_super.c > @@ -229,6 +229,8 @@ static int vxfs_fill_super(struct super_block *sbp, > void *dp, int silent) > > sbp->s_op = &vxfs_super_ops; > sbp->s_fs_info = infp; > + sbp->s_time_min = 0; > + sbp->s_time_max = U32_MAX; > > if (!vxfs_try_sb_magic(sbp, silent, 1, > (__force __fs32)cpu_to_le32(VXFS_SUPER_MAGIC))) { > diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c > index 25736676a456..05fe6cf5f1ac 100644 > --- a/fs/jffs2/fs.c > +++ b/fs/jffs2/fs.c > @@ -591,6 +591,9 @@ int jffs2_do_fill_super(struct super_block *sb, struct > fs_context *fc) > sb->s_blocksize = PAGE_SIZE; > sb->s_blocksize_bits = PAGE_SHIFT; > sb->s_magic = JFFS2_SUPER_MAGIC; > + sb->s_time_min = 0; > + sb->s_time_max = U32_MAX; > + > if (!sb_rdonly(sb)) > jffs2_start_garbage_collect_thread(c); > return 0; > diff --git a/fs/jfs/super.c b/fs/jfs/super.c > index f4e10cb9f734..b2dc4d1f9dcc 100644 > --- a/fs/jfs/super.c > +++ b/fs/jfs/super.c > @@ -503,6 +503,8 @@ static int jfs_fill_super(struct super_block *sb, void > *data, int silent) > > sb->s_fs_info = sbi; > sb->s_max_links = JFS_LINK_MAX; > + sb->s_time_min = 0; > + sb->s_time_max = U32_MAX; > sbi->sb = sb; > sbi->uid = INVALID_UID; > sbi->gid = INVALID_GID; > diff --git a/fs/minix/inode.c b/fs/minix/inode.c > index f96073f25432..7cb5fd38eb14 100644 > --- a/fs/minix/inode.c > +++ b/fs/minix/inode.c > @@ -277,6 +277,8 @@ static int minix_fill_super(struct super_block *s, > void *data, int silent) > > /* set up enough so that it can read an inode */ > s->s_op = &minix_sops; > + s->s_time_min = 0; > + s->s_time_max = U32_MAX; > root_inode = minix_iget(s, MINIX_ROOT_INO); > if (IS_ERR(root_inode)) { > ret = PTR_ERR(root_inode); > diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c > index 922d083bbc7c..e8da1cde87b9 100644 > --- a/fs/qnx4/inode.c > +++ b/fs/qnx4/inode.c > @@ -201,6 +201,8 @@ static int qnx4_fill_super(struct super_block *s, void > *data, int silent) > s->s_op = &qnx4_sops; > s->s_magic = QNX4_SUPER_MAGIC; > s->s_flags |= SB_RDONLY; /* Yup, read-only yet */ > + s->s_time_min = 0; > + s->s_time_max = U32_MAX; > > /* Check the superblock signature. Since the qnx4 code is > dangerous, we should leave as quickly as possible > diff --git a/fs/qnx6/inode.c b/fs/qnx6/inode.c > index 0f8b0ff1ba43..345db56c98fd 100644 > --- a/fs/qnx6/inode.c > +++ b/fs/qnx6/inode.c > @@ -429,6 +429,8 @@ static int qnx6_fill_super(struct super_block *s, void > *data, int silent) > s->s_op = &qnx6_sops; > s->s_magic = QNX6_SUPER_MAGIC; > s->s_flags |= SB_RDONLY; /* Yup, read-only yet */ > + s->s_time_min = 0; > + s->s_time_max = U32_MAX; > > /* ease the later tree level calculations */ > sbi = QNX6_SB(s); > diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c > index ab028ea0e561..d69b4ac0ae2f 100644 > --- a/fs/reiserfs/super.c > +++ b/fs/reiserfs/super.c > @@ -1976,6 +1976,9 @@ static int reiserfs_fill_super(struct super_block > *s, void *data, int silent) > goto error_unlocked; > } > > + s->s_time_min = 0; > + s->s_time_max = U32_MAX; > + > rs = SB_DISK_SUPER_BLOCK(s); > /* > * Let's do basic sanity check to verify that underlying device is > not > diff --git a/fs/romfs/super.c b/fs/romfs/super.c > index 4636f867b9e8..338ac8521e65 100644 > --- a/fs/romfs/super.c > +++ b/fs/romfs/super.c > @@ -477,6 +477,8 @@ static int romfs_fill_super(struct super_block *sb, > struct fs_context *fc) > sb->s_maxbytes = 0xFFFFFFFF; > sb->s_magic = ROMFS_MAGIC; > sb->s_flags |= SB_RDONLY | SB_NOATIME; > + sb->s_time_min = 0; > + sb->s_time_max = 0; > sb->s_op = &romfs_super_ops; > > #ifdef CONFIG_ROMFS_ON_MTD > diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c > index 0311171af72d..e2d6566371ec 100644 > --- a/fs/squashfs/super.c > +++ b/fs/squashfs/super.c > @@ -186,6 +186,8 @@ static int squashfs_fill_super(struct super_block *sb, > struct fs_context *fc) > (u64) le64_to_cpu(sblk->id_table_start)); > > sb->s_maxbytes = MAX_LFS_FILESIZE; > + sb->s_time_min = 0; > + sb->s_time_max = U32_MAX; > sb->s_flags |= SB_RDONLY; > sb->s_op = &squashfs_super_ops; > > diff --git a/fs/ufs/super.c b/fs/ufs/super.c > index 4ed0dca52ec8..1da0be667409 100644 > --- a/fs/ufs/super.c > +++ b/fs/ufs/super.c > @@ -843,6 +843,10 @@ static int ufs_fill_super(struct super_block *sb, > void *data, int silent) > > sb->s_maxbytes = MAX_LFS_FILESIZE; > > + sb->s_time_gran = NSEC_PER_SEC; > + sb->s_time_min = S32_MIN; > + sb->s_time_max = S32_MAX; > + > switch (sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) { > case UFS_MOUNT_UFSTYPE_44BSD: > UFSD("ufstype=44bsd\n"); > @@ -861,6 +865,9 @@ static int ufs_fill_super(struct super_block *sb, void > *data, int silent) > uspi->s_fshift = 9; > uspi->s_sbsize = super_block_size = 1536; > uspi->s_sbbase = 0; > + sb->s_time_gran = 1; > + sb->s_time_min = S64_MIN; > + sb->s_time_max = S64_MAX; > flags |= UFS_TYPE_UFS2 | UFS_DE_44BSD | UFS_UID_44BSD | > UFS_ST_44BSD | UFS_CG_44BSD; > break; > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index f9450235533c..d3b10900fc24 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -1663,6 +1663,8 @@ xfs_fs_fill_super( > sb->s_maxbytes = xfs_max_file_offset(sb->s_blocksize_bits); > sb->s_max_links = XFS_MAXLINK; > sb->s_time_gran = 1; > + sb->s_time_min = S32_MIN; > + sb->s_time_max = S32_MAX; > sb->s_iflags |= SB_I_CGROUPWB; > > set_posix_acl_flag(sb); > -- > 2.17.1 > > --0000000000001934b005908b83d2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">I see no problems for BFS.<div><br></div><div>Acked-By: Ti= gran Aivazian <<a href=3D"mailto:[email protected]">aivazian.tig= [email protected]</a>></div></div><br><div class=3D"gmail_quote"><div dir=3D= "ltr" class=3D"gmail_attr">On Sun, 18 Aug 2019 at 17:59, Deepa Dinamani <= ;<a href=3D"mailto:[email protected]">[email protected]</a>> w= rote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p= x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Fill in th= e appropriate limits to avoid inconsistencies<br> in the vfs cached inode times when timestamps are<br> outside the permitted range.<br> <br> Even though some filesystems are read-only, fill in the<br> timestamps to reflect the on-disk representation.<br> <br> Signed-off-by: Deepa Dinamani <<a href=3D"mailto:[email protected]"= target=3D"_blank">[email protected]</a>><br> Reviewed-by: Darrick J. Wong <<a href=3D"mailto:[email protected]"= target=3D"_blank">[email protected]</a>><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">aivazian= [email protected]</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a><= br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a= ><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">darrick.wo= [email protected]</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]= u</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">dwmw2@infradea= d.org</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]= g</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a><br= > Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]= u.edu</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]= g</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]<= /a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">phillip@sq= uashfs.org.uk</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a><= br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">salah.triki@= gmail.com</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]= g</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">linux-xf= [email protected]</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">codalist@= coda.cs.cmu.edu</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">linux-e= [email protected]</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">linu= [email protected]</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blan= k">[email protected]</a><br> Cc: <a href=3D"mailto:[email protected]" target=3D"_blank">rei= [email protected]</a><br> ---<br> =C2=A0fs/befs/linuxvfs.c=C2=A0 =C2=A0 =C2=A0 =C2=A0| 2 ++<br> =C2=A0fs/bfs/inode.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 2 ++<br> =C2=A0fs/coda/inode.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 3 +++<br> =C2=A0fs/cramfs/inode.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2 ++<br> =C2=A0fs/efs/super.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 2 ++<br> =C2=A0fs/ext2/super.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2 ++<br> =C2=A0fs/freevxfs/vxfs_super.c | 2 ++<br> =C2=A0fs/jffs2/fs.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 3 +++<br> =C2=A0fs/jfs/super.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 2 ++<br> =C2=A0fs/minix/inode.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 2 ++<br> =C2=A0fs/qnx4/inode.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2 ++<br> =C2=A0fs/qnx6/inode.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2 ++<br> =C2=A0fs/reiserfs/super.c=C2=A0 =C2=A0 =C2=A0 | 3 +++<br> =C2=A0fs/romfs/super.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 2 ++<br> =C2=A0fs/squashfs/super.c=C2=A0 =C2=A0 =C2=A0 | 2 ++<br> =C2=A0fs/ufs/super.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 7 +++++++<br= > =C2=A0fs/xfs/xfs_super.c=C2=A0 =C2=A0 =C2=A0 =C2=A0| 2 ++<br> =C2=A017 files changed, 42 insertions(+)<br> <br> diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c<br> index 462d096ff3e9..64cdf4d8e424 100644<br> --- a/fs/befs/linuxvfs.c<br> +++ b/fs/befs/linuxvfs.c<br> @@ -893,6 +893,8 @@ befs_fill_super(struct super_block *sb, void *data, int= silent)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb_set_blocksize(sb, (ulong) befs_sb->block_= size);<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_op =3D &befs_sops;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_export_op =3D &befs_export_operati= ons;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D 0xffffffffffffll;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 root =3D befs_iget(sb, iaddr2blockno(sb, &(= befs_sb->root_dir)));<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (IS_ERR(root)) {<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ret =3D PTR_ERR(roo= t);<br> diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c<br> index 5e97bed073d7..f8ce1368218b 100644<br> --- a/fs/bfs/inode.c<br> +++ b/fs/bfs/inode.c<br> @@ -324,6 +324,8 @@ static int bfs_fill_super(struct super_block *s, void *= data, int silent)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -ENOMEM;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 mutex_init(&info->bfs_lock);<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_fs_info =3D info;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_max =3D U32_MAX;<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb_set_blocksize(s, BFS_BSIZE);<br> <br> diff --git a/fs/coda/inode.c b/fs/coda/inode.c<br> index 59a9a29ade0a..e07b5f2ceccc 100644<br> --- a/fs/coda/inode.c<br> +++ b/fs/coda/inode.c<br> @@ -223,6 +223,9 @@ static int coda_fill_super(struct super_block *sb, stru= ct fs_context *fc)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_magic =3D CODA_SUPER_MAGIC;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_op =3D &coda_super_operations;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_d_op =3D &coda_dentry_operations;<= br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_gran =3D 1;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D S64_MIN;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D S64_MAX;<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 error =3D super_setup_bdi(sb);<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (error)<br> diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c<br> index 2ee89a353d64..c304ae8357ef 100644<br> --- a/fs/cramfs/inode.c<br> +++ b/fs/cramfs/inode.c<br> @@ -599,6 +599,8 @@ static int cramfs_finalize_super(struct super_block *sb= ,<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Set it all up.. */<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_flags |=3D SB_RDONLY;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D 0;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_op =3D &cramfs_ops;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 root =3D get_cramfs_inode(sb, cramfs_root, 0);<= br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (IS_ERR(root))<br> diff --git a/fs/efs/super.c b/fs/efs/super.c<br> index 867fc24dee20..4a6ebff2af76 100644<br> --- a/fs/efs/super.c<br> +++ b/fs/efs/super.c<br> @@ -257,6 +257,8 @@ static int efs_fill_super(struct super_block *s, void *= d, int silent)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!sb)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return -ENOMEM;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_fs_info =3D sb;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_max =3D U32_MAX;<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_magic=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =3D EFS_SUPER_MAGIC;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!sb_set_blocksize(s, EFS_BLOCKSIZE)) {<br> diff --git a/fs/ext2/super.c b/fs/ext2/super.c<br> index 44eb6e7eb492..baa36c6fb71e 100644<br> --- a/fs/ext2/super.c<br> +++ b/fs/ext2/super.c<br> @@ -1002,6 +1002,8 @@ static int ext2_fill_super(struct super_block *sb, vo= id *data, int silent)<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_maxbytes =3D ext2_max_size(sb->s_bl= ocksize_bits);<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_max_links =3D EXT2_LINK_MAX;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D S32_MIN;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D S32_MAX;<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (le32_to_cpu(es->s_rev_level) =3D=3D EXT2= _GOOD_OLD_REV) {<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sbi->s_inode_siz= e =3D EXT2_GOOD_OLD_INODE_SIZE;<br> diff --git a/fs/freevxfs/vxfs_super.c b/fs/freevxfs/vxfs_super.c<br> index a89f68c3cbed..578a5062706e 100644<br> --- a/fs/freevxfs/vxfs_super.c<br> +++ b/fs/freevxfs/vxfs_super.c<br> @@ -229,6 +229,8 @@ static int vxfs_fill_super(struct super_block *sbp, voi= d *dp, int silent)<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sbp->s_op =3D &vxfs_super_ops;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sbp->s_fs_info =3D infp;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sbp->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sbp->s_time_max =3D U32_MAX;<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!vxfs_try_sb_magic(sbp, silent, 1,<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (__force __fs32)cpu_to_le32(VXFS_SUPER_MAGIC))) {<br> diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c<br> index 25736676a456..05fe6cf5f1ac 100644<br> --- a/fs/jffs2/fs.c<br> +++ b/fs/jffs2/fs.c<br> @@ -591,6 +591,9 @@ int jffs2_do_fill_super(struct super_block *sb, struct = fs_context *fc)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_blocksize =3D PAGE_SIZE;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_blocksize_bits =3D PAGE_SHIFT;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_magic =3D JFFS2_SUPER_MAGIC;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D U32_MAX;<br> +<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!sb_rdonly(sb))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 jffs2_start_garbage= _collect_thread(c);<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;<br> diff --git a/fs/jfs/super.c b/fs/jfs/super.c<br> index f4e10cb9f734..b2dc4d1f9dcc 100644<br> --- a/fs/jfs/super.c<br> +++ b/fs/jfs/super.c<br> @@ -503,6 +503,8 @@ static int jfs_fill_super(struct super_block *sb, void = *data, int silent)<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_fs_info =3D sbi;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_max_links =3D JFS_LINK_MAX;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D U32_MAX;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sbi->sb =3D sb;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sbi->uid =3D INVALID_UID;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sbi->gid =3D INVALID_GID;<br> diff --git a/fs/minix/inode.c b/fs/minix/inode.c<br> index f96073f25432..7cb5fd38eb14 100644<br> --- a/fs/minix/inode.c<br> +++ b/fs/minix/inode.c<br> @@ -277,6 +277,8 @@ static int minix_fill_super(struct super_block *s, void= *data, int silent)<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* set up enough so that it can read an inode *= /<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_op =3D &minix_sops;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_max =3D U32_MAX;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 root_inode =3D minix_iget(s, MINIX_ROOT_INO);<b= r> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (IS_ERR(root_inode)) {<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ret =3D PTR_ERR(roo= t_inode);<br> diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c<br> index 922d083bbc7c..e8da1cde87b9 100644<br> --- a/fs/qnx4/inode.c<br> +++ b/fs/qnx4/inode.c<br> @@ -201,6 +201,8 @@ static int qnx4_fill_super(struct super_block *s, void = *data, int silent)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_op =3D &qnx4_sops;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_magic =3D QNX4_SUPER_MAGIC;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_flags |=3D SB_RDONLY;=C2=A0 =C2=A0 =C2= =A0 =C2=A0 /* Yup, read-only yet */<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_max =3D U32_MAX;<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Check the superblock signature. Since the qn= x4 code is<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dangerous, we should leave as quic= kly as possible<br> diff --git a/fs/qnx6/inode.c b/fs/qnx6/inode.c<br> index 0f8b0ff1ba43..345db56c98fd 100644<br> --- a/fs/qnx6/inode.c<br> +++ b/fs/qnx6/inode.c<br> @@ -429,6 +429,8 @@ static int qnx6_fill_super(struct super_block *s, void = *data, int silent)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_op =3D &qnx6_sops;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_magic =3D QNX6_SUPER_MAGIC;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 s->s_flags |=3D SB_RDONLY;=C2=A0 =C2=A0 =C2= =A0 =C2=A0 /* Yup, read-only yet */<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_max =3D U32_MAX;<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* ease the later tree level calculations */<br= > =C2=A0 =C2=A0 =C2=A0 =C2=A0 sbi =3D QNX6_SB(s);<br> diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c<br> index ab028ea0e561..d69b4ac0ae2f 100644<br> --- a/fs/reiserfs/super.c<br> +++ b/fs/reiserfs/super.c<br> @@ -1976,6 +1976,9 @@ static int reiserfs_fill_super(struct super_block *s,= void *data, int silent)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto error_unlocked= ;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br> <br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0s->s_time_max =3D U32_MAX;<br> +<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 rs =3D SB_DISK_SUPER_BLOCK(s);<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Let's do basic sanity check to veri= fy that underlying device is not<br> diff --git a/fs/romfs/super.c b/fs/romfs/super.c<br> index 4636f867b9e8..338ac8521e65 100644<br> --- a/fs/romfs/super.c<br> +++ b/fs/romfs/super.c<br> @@ -477,6 +477,8 @@ static int romfs_fill_super(struct super_block *sb, str= uct fs_context *fc)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_maxbytes =3D 0xFFFFFFFF;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_magic =3D ROMFS_MAGIC;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_flags |=3D SB_RDONLY | SB_NOATIME;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D 0;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_op =3D &romfs_super_ops;<br> <br> =C2=A0#ifdef CONFIG_ROMFS_ON_MTD<br> diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c<br> index 0311171af72d..e2d6566371ec 100644<br> --- a/fs/squashfs/super.c<br> +++ b/fs/squashfs/super.c<br> @@ -186,6 +186,8 @@ static int squashfs_fill_super(struct super_block *sb, = struct fs_context *fc)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (u64) le64_to_cpu(s= blk->id_table_start));<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_maxbytes =3D MAX_LFS_FILESIZE;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D U32_MAX;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_flags |=3D SB_RDONLY;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_op =3D &squashfs_super_ops;<br> <br> diff --git a/fs/ufs/super.c b/fs/ufs/super.c<br> index 4ed0dca52ec8..1da0be667409 100644<br> --- a/fs/ufs/super.c<br> +++ b/fs/ufs/super.c<br> @@ -843,6 +843,10 @@ static int ufs_fill_super(struct super_block *sb, void= *data, int silent)<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_maxbytes =3D MAX_LFS_FILESIZE;<br> <br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_gran =3D NSEC_PER_SEC;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D S32_MIN;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D S32_MAX;<br> +<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch (sbi->s_mount_opt & UFS_MOUNT_UFS= TYPE) {<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 case UFS_MOUNT_UFSTYPE_44BSD:<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 UFSD("ufstype= =3D44bsd\n");<br> @@ -861,6 +865,9 @@ static int ufs_fill_super(struct super_block *sb, void = *data, int silent)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 uspi->s_fshift = =3D 9;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 uspi->s_sbsize = =3D super_block_size =3D 1536;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 uspi->s_sbbase = =3D=C2=A0 0;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_gran = =3D 1;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min = =3D S64_MIN;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max = =3D S64_MAX;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 flags |=3D UFS_TYPE= _UFS2 | UFS_DE_44BSD | UFS_UID_44BSD | UFS_ST_44BSD | UFS_CG_44BSD;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break;<br> <br> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c<br> index f9450235533c..d3b10900fc24 100644<br> --- a/fs/xfs/xfs_super.c<br> +++ b/fs/xfs/xfs_super.c<br> @@ -1663,6 +1663,8 @@ xfs_fs_fill_super(<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_maxbytes =3D xfs_max_file_offset(sb-&g= t;s_blocksize_bits);<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_max_links =3D XFS_MAXLINK;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_time_gran =3D 1;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_min =3D S32_MIN;<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0sb->s_time_max =3D S32_MAX;<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 sb->s_iflags |=3D SB_I_CGROUPWB;<br> <br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 set_posix_acl_flag(sb);<br> -- <br> 2.17.1<br> <br> </blockquote></div> --0000000000001934b005908b83d2-- --===============3304127166569224027== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline --===============3304127166569224027== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Jfs-discussion mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jfs-discussion --===============3304127166569224027==--