linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Andreas Dilger <adilger@dilger.ca>
Cc: "Theodore Ts'o" <tytso@mit.edu>, Jan Kara <jack@suse.com>,
	y2038 Mailman List <y2038@lists.linaro.org>,
	Ext4 Developers List <linux-ext4@vger.kernel.org>,
	Tahsin Erdogan <tahsin@google.com>, Jan Kara <jack@suse.cz>,
	Deepa Dinamani <deepa.kernel@gmail.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 6/6] [RFC] ext4: super: extend timestamps to 40 bits
Date: Thu, 21 Jun 2018 22:17:41 +0200	[thread overview]
Message-ID: <CAK8P3a1X=hGS=tAec2uUFtRpLyw2J_nd58ookw0jePjd0mAdhA@mail.gmail.com> (raw)
In-Reply-To: <EA2C7036-ACD4-4E0A-80A1-373B000A7DA4@dilger.ca>

On Thu, Jun 21, 2018 at 7:46 PM, Andreas Dilger <adilger@dilger.ca> wrote:

>> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
>> index 0c4c2201b3aa..2063d4e5ed08 100644
>> --- a/fs/ext4/super.c
>> +++ b/fs/ext4/super.c
>> @@ -312,6 +312,20 @@ void ext4_itable_unused_set(struct super_block *sb,
>>               bg->bg_itable_unused_hi = cpu_to_le16(count >> 16);
>> }
>>
>> +static void ext4_update_tstamp(__le32 *lo, __u8 *hi)
>
> Would it be better to wrap this in a macro, something like:
>
> #define ext4_update_tstamp(es, tstamp) \
>         __ext4_update_tstamp(&(es)->tstamp, &(es)->tstamp ## _hi)
> #define ext4_get_tstamp(es, tstamp) \
>         __ext4_get_tstamp(&(es)->tstamp, &(es)->tstamp ## _hi)
>
> So that it can be used in the callers more easily:
>
>         ext4_update_tstamp(es, s_last_error_time);
>         time = ext4_get_tstamp(es, s_last_error_time);

I generally try to avoid concatenating identifiers like this, as it makes
it much harder to grep for where a particular symbol or
struct member gets used.

>> +{
>> +     time64_t now = ktime_get_real_seconds();
>> +
>> +     now = clamp_val(now, 0, 0xffffffffffull);
>
> Long strings of "0xfff..." are hard to get correct.  This looks right,
> but it may be easier to be sure it is correct with something like:
>
>         /* timestamps have a 32-bit low field and 8-bit high field */
>         now = clamp_val(now, 0, (1ULL << 40) - 1);

Yes, good idea. I'm surprised we don't have a generic macro for that yet
(or maybe I just couldn't find it)


>> @@ -249,6 +251,12 @@ static void *calc_ptr(struct ext4_attr *a, struct ext4_sb_info *sbi)
>>       return NULL;
>> }
>>
>> +static ssize_t print_time(char *buf, __le32 lo, __u8 hi)
>
> It would probably be more consistent to name this "print_tstamp()"
> since it isn't strictly a "time" as one would expect.

Ok.

>> +{
>> +     return snprintf(buf, PAGE_SIZE, "%lld",
>> +                     ((time64_t)hi << 32) + le32_to_cpu(lo));
>> +}
>
> Similarly, wrap this with:
>
> #define print_tstamp(buf, es, tstamp) \
>         __print_tstamp(buf, &(es)->tstamp, &(es)->tstamp ## _hi)

Ok. I'll integrate all of the above and post as a non-RFC patch then
after some testing.

      Arnd

  reply	other threads:[~2018-06-21 20:17 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-20 15:32 [PATCH 1/6] ext4: sysfs: print ext4_super_block fields as little-endian Arnd Bergmann
2018-06-20 15:32 ` [PATCH 2/6] ext4: use 64-bit timestamps for mmp_time Arnd Bergmann
2018-06-21 17:20   ` Andreas Dilger
2018-06-22  7:38   ` Jan Kara
2018-06-20 15:33 ` [PATCH 3/6] ext4: use ktime_get_real_seconds for i_dtime Arnd Bergmann
2018-06-21 17:27   ` Andreas Dilger
2018-06-21 20:07     ` Arnd Bergmann
2018-06-20 15:33 ` [PATCH 4/6] ext4: use timespec64 for all inode times Arnd Bergmann
2018-06-21 17:29   ` Andreas Dilger
2018-06-22  7:37   ` Jan Kara
2018-06-22  8:15     ` Arnd Bergmann
2018-06-20 15:33 ` [PATCH 5/6] jbd2: replace current_kernel_time64 with ktime equivalent Arnd Bergmann
2018-06-21 17:32   ` Andreas Dilger
2018-06-22  7:41   ` Jan Kara
2018-06-20 15:33 ` [PATCH 6/6] [RFC] ext4: super: extend timestamps to 40 bits Arnd Bergmann
2018-06-21 17:46   ` Andreas Dilger
2018-06-21 20:17     ` Arnd Bergmann [this message]
2018-06-21 17:49 ` [PATCH 1/6] ext4: sysfs: print ext4_super_block fields as little-endian Andreas Dilger
2018-06-21 20:07   ` Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAK8P3a1X=hGS=tAec2uUFtRpLyw2J_nd58ookw0jePjd0mAdhA@mail.gmail.com' \
    --to=arnd@arndb.de \
    --cc=adilger@dilger.ca \
    --cc=deepa.kernel@gmail.com \
    --cc=jack@suse.com \
    --cc=jack@suse.cz \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tahsin@google.com \
    --cc=tytso@mit.edu \
    --cc=y2038@lists.linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).