On Sun, Sep 08, 2019 at 04:10:15PM +0000, Valentin Vidic wrote:
> Use create_time_ms modify_time_ms fields to store the millisecond
> part of the file timestamp with the precision of 10 ms.
> 
> Signed-off-by: Valentin Vidic <vvi...@valentin-vidic.from.hr>
> ---
>  drivers/staging/exfat/exfat_core.c | 30 ++++++++++++++++++++++++++++++
>  1 file changed, 30 insertions(+)
> 
> diff --git a/drivers/staging/exfat/exfat_core.c 
> b/drivers/staging/exfat/exfat_core.c
> index 8476eeedba83..e87119fa8c0a 100644
> --- a/drivers/staging/exfat/exfat_core.c
> +++ b/drivers/staging/exfat/exfat_core.c
> @@ -1139,6 +1139,7 @@ void exfat_set_entry_size(struct dentry_t *p_entry, u64 
> size)
>  void fat_get_entry_time(struct dentry_t *p_entry, struct timestamp_t *tp,
>                       u8 mode)
>  {
> +     u8 ms = 0;
>       u16 t = 0x00, d = 0x21;
>       struct dos_dentry_t *ep = (struct dos_dentry_t *)p_entry;
>  
> @@ -1146,6 +1147,7 @@ void fat_get_entry_time(struct dentry_t *p_entry, 
> struct timestamp_t *tp,
>       case TM_CREATE:
>               t = GET16_A(ep->create_time);
>               d = GET16_A(ep->create_date);
> +             ms = ep->create_time_ms * 10;
>               break;
>       case TM_MODIFY:
>               t = GET16_A(ep->modify_time);
> @@ -1159,11 +1161,17 @@ void fat_get_entry_time(struct dentry_t *p_entry, 
> struct timestamp_t *tp,
>       tp->day  = (d & 0x001F);
>       tp->mon  = (d >> 5) & 0x000F;
>       tp->year = (d >> 9);
> +
> +     if (ms >= 1000) {
> +             ms -= 1000;
> +             tp->sec++;
> +     }
>  }
>  
>  void exfat_get_entry_time(struct dentry_t *p_entry, struct timestamp_t *tp,
>                         u8 mode)
>  {
> +     u8 ms = 0;
>       u16 t = 0x00, d = 0x21;
>       struct file_dentry_t *ep = (struct file_dentry_t *)p_entry;
>  
> @@ -1171,10 +1179,12 @@ void exfat_get_entry_time(struct dentry_t *p_entry, 
> struct timestamp_t *tp,
>       case TM_CREATE:
>               t = GET16_A(ep->create_time);
>               d = GET16_A(ep->create_date);
> +             ms = ep->create_time_ms * 10;
>               break;
>       case TM_MODIFY:
>               t = GET16_A(ep->modify_time);
>               d = GET16_A(ep->modify_date);
> +             ms = ep->modify_time_ms * 10;
>               break;
>       case TM_ACCESS:
>               t = GET16_A(ep->access_time);
> @@ -1188,21 +1198,33 @@ void exfat_get_entry_time(struct dentry_t *p_entry, 
> struct timestamp_t *tp,
>       tp->day  = (d & 0x001F);
>       tp->mon  = (d >> 5) & 0x000F;
>       tp->year = (d >> 9);
> +
> +     if (ms >= 1000) {
> +             ms -= 1000;
> +             tp->sec++;
> +     }
>  }
>  
>  void fat_set_entry_time(struct dentry_t *p_entry, struct timestamp_t *tp,
>                       u8 mode)
>  {
> +     u8 ms;
>       u16 t, d;
>       struct dos_dentry_t *ep = (struct dos_dentry_t *)p_entry;
>  
>       t = (tp->hour << 11) | (tp->min << 5) | (tp->sec >> 1);
>       d = (tp->year <<  9) | (tp->mon << 5) |  tp->day;
>  
> +     ms = tp->millisec;
> +     if (tp->sec & 1) {
> +             ms += 1000;
> +     }

checkpatch didn't complain about this { } not being needed?

Same in other parts of this patch, please fix up.

thanks,

greg k-h

Reply via email to