Re: [PATCH v7 06/13] ubifs: have ubifs_update_time use inode_update_timestamps

From: Jan Kara
Date: Wed Aug 09 2023 - 04:23:12 EST


On Wed 09-08-23 09:06:34, Christian Brauner wrote:
> On Tue, Aug 08, 2023 at 11:37:01AM +0200, Jan Kara wrote:
> > 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 <jlayton@xxxxxxxxxx>
> >
> > 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...
>
> Fixed in-tree.

Thanks. With that feel free to add:

Reviewed-by: Jan Kara <jack@xxxxxxx>

Honza
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR