In later patches, we're going to drop the "now" parameter from the
update_time operation. Prepare ubifs for this, by having it use the new
inode_update_timestamps helper.
Signed-off-by: Jeff Layton <[email protected]>
---
fs/ubifs/file.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
index df9086b19cd0..2d0178922e19 100644
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -1397,15 +1397,9 @@ int ubifs_update_time(struct inode *inode, struct timespec64 *time,
return err;
mutex_lock(&ui->ui_mutex);
- if (flags & S_ATIME)
- inode->i_atime = *time;
- if (flags & S_CTIME)
- inode_set_ctime_to_ts(inode, *time);
- if (flags & S_MTIME)
- inode->i_mtime = *time;
-
- release = ui->dirty;
+ inode_update_timestamps(inode, flags);
__mark_inode_dirty(inode, I_DIRTY_SYNC);
+ release = ui->dirty;
mutex_unlock(&ui->ui_mutex);
if (release)
ubifs_release_budget(c, &req);
--
2.41.0
On Mon 07-08-23 15:38:37, Jeff Layton wrote:
> In later patches, we're going to drop the "now" parameter from the
> update_time operation. Prepare ubifs for this, by having it use the new
> inode_update_timestamps helper.
>
> Signed-off-by: Jeff Layton <[email protected]>
One comment below:
> diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
> index df9086b19cd0..2d0178922e19 100644
> --- a/fs/ubifs/file.c
> +++ b/fs/ubifs/file.c
> @@ -1397,15 +1397,9 @@ int ubifs_update_time(struct inode *inode, struct timespec64 *time,
> return err;
>
> mutex_lock(&ui->ui_mutex);
> - if (flags & S_ATIME)
> - inode->i_atime = *time;
> - if (flags & S_CTIME)
> - inode_set_ctime_to_ts(inode, *time);
> - if (flags & S_MTIME)
> - inode->i_mtime = *time;
> -
> - release = ui->dirty;
> + inode_update_timestamps(inode, flags);
> __mark_inode_dirty(inode, I_DIRTY_SYNC);
> + release = ui->dirty;
> mutex_unlock(&ui->ui_mutex);
I think this is wrong. You need to keep sampling ui->dirty before calling
__mark_inode_dirty(). Otherwise you could release budget for inode update
you really need...
> if (release)
> ubifs_release_budget(c, &req);
Honza
--
Jan Kara <[email protected]>
SUSE Labs, CR