Re: [PATCH 07/14] fs: return a negative error from generic_update_time
Jan Kara <[email protected]>
| Newsgroups | dev.linux.lists.gfs2,org.infradead.lists.linux-mtd,org.kernel.vger.io-uring,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kernel.vger.linux-unionfs,org.kernel.vger.linux-xfs |
|---|---|
| Message-ID | <6epbyvds7hmypmk6qfsmnvevbnt2msdbudknnn3ryx6szl5lwn@a2ydspgd2cd6> |
On Fri 14-11-25 07:26:10, Christoph Hellwig wrote: > Now that no caller looks at the updated flags, switch generic_update_time > to the same calling convention as the ->update_time method and return 0 > or a negative errno. > > This prepares for adding non-blocking timestamp updates that could return > -EAGAIN. > > Signed-off-by: Christoph Hellwig <[email protected]> Looks good. Feel free to add: Reviewed-by: Jan Kara <[email protected]> Honza > --- > fs/gfs2/inode.c | 3 +-- > fs/inode.c | 6 +++--- > fs/ubifs/file.c | 6 ++---- > fs/xfs/xfs_iops.c | 6 ++---- > include/linux/fs.h | 2 +- > 5 files changed, 9 insertions(+), 14 deletions(-) > > diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c > index 8a7ed80d9f2d..601c14a3ac77 100644 > --- a/fs/gfs2/inode.c > +++ b/fs/gfs2/inode.c > @@ -2242,8 +2242,7 @@ static int gfs2_update_time(struct inode *inode, int flags) > if (error) > return error; > } > - generic_update_time(inode, flags); > - return 0; > + return generic_update_time(inode, flags); > } > > static const struct inode_operations gfs2_file_iops = { > diff --git a/fs/inode.c b/fs/inode.c > index d3edcc5baec9..74e672dd90aa 100644 > --- a/fs/inode.c > +++ b/fs/inode.c > @@ -2091,7 +2091,7 @@ EXPORT_SYMBOL(inode_update_timestamps); > * or S_VERSION need to be updated we attempt to update all three of them. S_ATIME > * updates can be handled done independently of the rest. > * > - * Returns a S_* mask indicating which fields were updated. > + * Returns a negative error value on error, else 0. > */ > int generic_update_time(struct inode *inode, int flags) > { > @@ -2103,7 +2103,7 @@ int generic_update_time(struct inode *inode, int flags) > if (updated & S_VERSION) > dirty_flags |= I_DIRTY_SYNC; > __mark_inode_dirty(inode, dirty_flags); > - return updated; > + return 0; > } > EXPORT_SYMBOL(generic_update_time); > > @@ -2335,7 +2335,7 @@ static int file_update_time_flags(struct file *file, unsigned int flags) > if (inode->i_op->update_time) > ret = inode->i_op->update_time(inode, sync_mode); > else > - generic_update_time(inode, sync_mode); > + ret = generic_update_time(inode, sync_mode); > mnt_put_write_access_file(file); > return ret; > } > diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c > index ca41ce8208c4..3e119cb93ea9 100644 > --- a/fs/ubifs/file.c > +++ b/fs/ubifs/file.c > @@ -1379,10 +1379,8 @@ int ubifs_update_time(struct inode *inode, int flags) > .dirtied_ino_d = ALIGN(ui->data_len, 8) }; > int err, release; > > - if (!IS_ENABLED(CONFIG_UBIFS_ATIME_SUPPORT)) { > - generic_update_time(inode, flags); > - return 0; > - } > + if (!IS_ENABLED(CONFIG_UBIFS_ATIME_SUPPORT)) > + return generic_update_time(inode, flags); > > err = ubifs_budget_space(c, &req); > if (err) > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index caff0125faea..0ace5f790006 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -1197,10 +1197,8 @@ xfs_vn_update_time( > > if (inode->i_sb->s_flags & SB_LAZYTIME) { > if (!((flags & S_VERSION) && > - inode_maybe_inc_iversion(inode, false))) { > - generic_update_time(inode, flags); > - return 0; > - } > + inode_maybe_inc_iversion(inode, false))) > + return generic_update_time(inode, flags); > > /* Capture the iversion update that just occurred */ > log_flags |= XFS_ILOG_CORE; > diff --git a/include/linux/fs.h b/include/linux/fs.h > index a09cebdb4881..c1077ae7c6b2 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -2823,7 +2823,7 @@ extern int current_umask(void); > extern void ihold(struct inode * inode); > extern void iput(struct inode *); > int inode_update_timestamps(struct inode *inode, int flags); > -int generic_update_time(struct inode *, int); > +int generic_update_time(struct inode *inode, int flags); > > /* /sys/fs */ > extern struct kobject *fs_kobj; > -- > 2.47.3 > -- Jan Kara <[email protected]> SUSE Labs, CR