lkml.org 
[lkml]   [2016]   [Jan]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [RFC 13/15] kernel: time: change inode_timespec to timespec64
    Hi,

    the patch contains a conflict resolution artifact..

    Cheers - Michael

    On 2016-01-06 at 21:36 -0800, Deepa Dinamani wrote:
    > Substitute inode_timespec aliases with timespec64.
    > Since CONFIG_FS_USES_64BIT_TIME is enabled, internally
    > all inode_timespec references are using timespec64
    > already.
    >
    > Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
    >
    > Conflicts:
    > kernel/time/time.c
    >
    > Conflicts:
    > kernel/time/time.c
    > ---
    > kernel/time/time.c | 130 +++++++++++++++++++++++++++++++----------------------
    > 1 file changed, 76 insertions(+), 54 deletions(-)
    >
    > diff --git a/kernel/time/time.c b/kernel/time/time.c
    > index 24ca258..87d9a4c 100644
    > --- a/kernel/time/time.c
    > +++ b/kernel/time/time.c
    > @@ -230,6 +230,76 @@ SYSCALL_DEFINE1(adjtimex, struct timex __user *, txc_p)
    > return copy_to_user(txc_p, &txc, sizeof(struct timex)) ? -EFAULT : ret;
    > }
    >
    > +<<<<<<< HEAD
    > +=======

    HERE ^^^^^

    > +/**
    > + * current_fs_time - Return FS time
    > + * @sb: Superblock.
    > + *
    > + * Return the current time truncated to the time granularity supported by
    > + * the fs.
    > + */
    > +struct timespec64 current_fs_time(struct super_block *sb)
    > +{
    > + struct timespec64 now = current_kernel_time64();
    > +
    > + return fs_time_trunc(now, sb);
    > +}
    > +EXPORT_SYMBOL(current_fs_time);
    > +
    > +struct timespec64 current_fs_time_sec(struct super_block *sb)
    > +{
    > + struct timespec64 ts = {ktime_get_real_seconds(), 0};
    > +
    > + /* range check for time. */
    > + fs_time_range_check(sb, &ts);
    > +
    > + return ts;
    > +}
    > +EXPORT_SYMBOL(current_fs_time_sec);
    > +
    > +/*
    > + * Convert jiffies to milliseconds and back.
    > + *
    > + * Avoid unnecessary multiplications/divisions in the
    > + * two most common HZ cases:
    > + */
    > +unsigned int jiffies_to_msecs(const unsigned long j)
    > +{
    > +#if HZ <= MSEC_PER_SEC && !(MSEC_PER_SEC % HZ)
    > + return (MSEC_PER_SEC / HZ) * j;
    > +#elif HZ > MSEC_PER_SEC && !(HZ % MSEC_PER_SEC)
    > + return (j + (HZ / MSEC_PER_SEC) - 1)/(HZ / MSEC_PER_SEC);
    > +#else
    > +# if BITS_PER_LONG == 32
    > + return (HZ_TO_MSEC_MUL32 * j) >> HZ_TO_MSEC_SHR32;
    > +# else
    > + return (j * HZ_TO_MSEC_NUM) / HZ_TO_MSEC_DEN;
    > +# endif
    > +#endif
    > +}
    > +EXPORT_SYMBOL(jiffies_to_msecs);
    > +
    > +unsigned int jiffies_to_usecs(const unsigned long j)
    > +{
    > + /*
    > + * Hz usually doesn't go much further MSEC_PER_SEC.
    > + * jiffies_to_usecs() and usecs_to_jiffies() depend on that.
    > + */
    > + BUILD_BUG_ON(HZ > USEC_PER_SEC);
    > +
    > +#if !(USEC_PER_SEC % HZ)
    > + return (USEC_PER_SEC / HZ) * j;
    > +#else
    > +# if BITS_PER_LONG == 32
    > + return (HZ_TO_USEC_MUL32 * j) >> HZ_TO_USEC_SHR32;
    > +# else
    > + return (j * HZ_TO_USEC_NUM) / HZ_TO_USEC_DEN;
    > +# endif
    > +#endif
    > +}
    > +EXPORT_SYMBOL(jiffies_to_usecs);
    > +
    > /* fs_time_range_check:
    > * Function to check if a given timestamp is in the range allowed for a
    > * filesystem.
    > @@ -240,7 +310,7 @@ SYSCALL_DEFINE1(adjtimex, struct timex __user *, txc_p)
    > * nsec is set to 0 if not in allowed range.
    > */
    > static void
    > -fs_time_range_check(struct super_block *sb, struct inode_timespec *ts)
    > +fs_time_range_check(struct super_block *sb, struct timespec64 *ts)
    > {
    > if (unlikely(sb->s_time_max < ts->tv_sec ||
    > sb->s_time_min > ts->tv_sec)) {
    > @@ -257,7 +327,7 @@ fs_time_range_check(struct super_block *sb, struct inode_timespec *ts)
    > * fs_time_range_check.
    > * returns 0 otherwise.
    > */
    > -int is_fs_timestamp_bad(struct inode_timespec ts)
    > +int is_fs_timestamp_bad(struct timespec64 ts)
    > {
    > if (ts.tv_nsec == FS_TIMESTAMP_NSEC_NOT_VALID)
    > return -1;
    > @@ -267,16 +337,16 @@ int is_fs_timestamp_bad(struct inode_timespec ts)
    > EXPORT_SYMBOL(is_fs_timestamp_bad);
    >
    > /*
    > - * fs_time_trunc - Truncate inode_timespec to a granularity
    > - * @t: inode_timespec
    > + * fs_time_trunc - Truncate timespec64 to a granularity
    > + * @t: timespec64
    > * @sb: Super block.
    > *
    > * Truncate a timespec to a granularity. Always rounds down. Granularity
    > * must * not be 0 nor greater than a second (NSEC_PER_SEC, or 10^9 ns).
    > * Returns 1 on error, 0 otherwise.
    > */
    > -struct inode_timespec
    > -fs_time_trunc(struct inode_timespec t, struct super_block *sb)
    > +struct timespec64
    > +fs_time_trunc(struct timespec64 t, struct super_block *sb)
    > {
    > u32 gran = sb->s_time_gran;
    >
    > @@ -300,34 +370,6 @@ fs_time_trunc(struct inode_timespec t, struct super_block *sb)
    > EXPORT_SYMBOL(fs_time_trunc);
    >
    > /**
    > - * timespec_trunc - Truncate timespec to a granularity
    > - * @t: Timespec
    > - * @gran: Granularity in ns.
    > - *
    > - * Truncate a timespec to a granularity. Always rounds down. gran must
    > - * not be 0 nor greater than a second (NSEC_PER_SEC, or 10^9 ns).
    > - *
    > - * This function is deprecated and should no longer be used for filesystems.
    > - * fs_time_trunc should be used instead.
    > - */
    > -struct timespec timespec_trunc(struct timespec t, unsigned gran)
    > -{
    > -
    > - /* Avoid division in the common cases 1 ns and 1 s. */
    > - if (gran == 1) {
    > - /* nothing */
    > - } else if (gran == NSEC_PER_SEC) {
    > - t.tv_nsec = 0;
    > - } else if (gran > 1 && gran < NSEC_PER_SEC) {
    > - t.tv_nsec -= t.tv_nsec % gran;
    > - } else {
    > - WARN(1, "illegal file time granularity: %u", gran);
    > - }
    > - return t;
    > -}
    > -EXPORT_SYMBOL(timespec_trunc);
    > -
    > -/**
    > * current_fs_time - Return FS time
    > * @sb: Superblock.
    > *
    > @@ -353,26 +395,6 @@ struct timespec64 current_fs_time_sec(struct super_block *sb)
    > return ts;
    > }
    > EXPORT_SYMBOL(current_fs_time_sec);
    > -#else
    > -struct timespec current_fs_time(struct super_block *sb)
    > -{
    > - struct timespec now = current_kernel_time();
    > -
    > - return fs_time_trunc(now, sb);
    > -}
    > -EXPORT_SYMBOL(current_fs_time);
    > -
    > -struct timespec current_fs_time_sec(struct super_block *sb)
    > -{
    > - struct timespec ts = { get_seconds(), 0 };
    > -
    > - /* range check for time. */
    > - fs_time_range_check(sb, &ts);
    > -
    > - return ts;
    > -}
    > -EXPORT_SYMBOL(current_fs_time_sec);
    > -#endif
    >
    > /*
    > * Convert jiffies to milliseconds and back.
    > --
    > 1.9.1
    >
    > --
    > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2016-01-07 10:41    [W:9.252 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site