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 &lt;<a href=3D"mailto:[email protected]">aivazian.tig=
[email protected]</a>&gt;</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 &lt=
;<a href=3D"mailto:[email protected]">[email protected]</a>&gt; 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 &lt;<a href=3D"mailto:[email protected]"=
 target=3D"_blank">[email protected]</a>&gt;<br>
Reviewed-by: Darrick J. Wong &lt;<a href=3D"mailto:[email protected]"=
 target=3D"_blank">[email protected]</a>&gt;<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-&gt;block_=
size);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_op =3D &amp;befs_sops;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_export_op =3D &amp;befs_export_operati=
ons;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_max =3D 0xffffffffffffll;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 root =3D befs_iget(sb, iaddr2blockno(sb, &amp;(=
befs_sb-&gt;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(&amp;info-&gt;bfs_lock);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;s_fs_info =3D info;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;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-&gt;s_magic =3D CODA_SUPER_MAGIC;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_op =3D &amp;coda_super_operations;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_d_op =3D &amp;coda_dentry_operations;<=
br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_gran =3D 1;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D S64_MIN;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;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-&gt;s_flags |=3D SB_RDONLY;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_max =3D 0;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_op =3D &amp;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-&gt;s_fs_info =3D sb;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;s_time_max =3D U32_MAX;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;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-&gt;s_maxbytes =3D ext2_max_size(sb-&gt;s_bl=
ocksize_bits);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_max_links =3D EXT2_LINK_MAX;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D S32_MIN;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_max =3D S32_MAX;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (le32_to_cpu(es-&gt;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-&gt;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-&gt;s_op =3D &amp;vxfs_super_ops;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sbp-&gt;s_fs_info =3D infp;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sbp-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sbp-&gt;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-&gt;s_blocksize =3D PAGE_SIZE;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_blocksize_bits =3D PAGE_SHIFT;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_magic =3D JFFS2_SUPER_MAGIC;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;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-&gt;s_fs_info =3D sbi;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_max_links =3D JFS_LINK_MAX;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_max =3D U32_MAX;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sbi-&gt;sb =3D sb;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sbi-&gt;uid =3D INVALID_UID;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sbi-&gt;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-&gt;s_op =3D &amp;minix_sops;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;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-&gt;s_op =3D &amp;qnx4_sops;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;s_magic =3D QNX4_SUPER_MAGIC;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;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-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;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-&gt;s_op =3D &amp;qnx6_sops;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;s_magic =3D QNX6_SUPER_MAGIC;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 s-&gt;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-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;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-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;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&#39;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-&gt;s_maxbytes =3D 0xFFFFFFFF;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_magic =3D ROMFS_MAGIC;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_flags |=3D SB_RDONLY | SB_NOATIME;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_max =3D 0;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_op =3D &amp;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-&gt;id_table_start));<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_maxbytes =3D MAX_LFS_FILESIZE;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_max =3D U32_MAX;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_flags |=3D SB_RDONLY;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_op =3D &amp;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-&gt;s_maxbytes =3D MAX_LFS_FILESIZE;<br>
<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_gran =3D NSEC_PER_SEC;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D S32_MIN;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_max =3D S32_MAX;<br>
+<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 switch (sbi-&gt;s_mount_opt &amp; 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(&quot;ufstype=
=3D44bsd\n&quot;);<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-&gt;s_fshift =
=3D 9;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 uspi-&gt;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-&gt;s_sbbase =
=3D=C2=A0 0;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_gran =
=3D 1;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =
=3D S64_MIN;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;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-&gt;s_maxbytes =3D xfs_max_file_offset(sb-&g=
t;s_blocksize_bits);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_max_links =3D XFS_MAXLINK;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;s_time_gran =3D 1;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_min =3D S32_MIN;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0sb-&gt;s_time_max =3D S32_MAX;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sb-&gt;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==--