Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fuse: convert to new timestamp accessors

Convert to using the new inode timestamp accessor functions.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Link: https://lore.kernel.org/r/20231004185347.80880-37-jlayton@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>

authored by

Jeff Layton and committed by
Christian Brauner
3c0d5df2 5ec1b39e

+24 -23
+1 -1
fs/fuse/control.c
··· 235 235 inode->i_mode = mode; 236 236 inode->i_uid = fc->user_id; 237 237 inode->i_gid = fc->group_id; 238 - inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode); 238 + simple_inode_init_ts(inode); 239 239 /* setting ->i_op to NULL is not allowed */ 240 240 if (iop) 241 241 inode->i_op = iop;
+5 -5
fs/fuse/dir.c
··· 1812 1812 memset(&outarg, 0, sizeof(outarg)); 1813 1813 1814 1814 inarg.valid = FATTR_MTIME; 1815 - inarg.mtime = inode->i_mtime.tv_sec; 1816 - inarg.mtimensec = inode->i_mtime.tv_nsec; 1815 + inarg.mtime = inode_get_mtime_sec(inode); 1816 + inarg.mtimensec = inode_get_mtime_nsec(inode); 1817 1817 if (fm->fc->minor >= 23) { 1818 1818 inarg.valid |= FATTR_CTIME; 1819 - inarg.ctime = inode_get_ctime(inode).tv_sec; 1820 - inarg.ctimensec = inode_get_ctime(inode).tv_nsec; 1819 + inarg.ctime = inode_get_ctime_sec(inode); 1820 + inarg.ctimensec = inode_get_ctime_nsec(inode); 1821 1821 } 1822 1822 if (ff) { 1823 1823 inarg.valid |= FATTR_FH; ··· 1956 1956 /* the kernel maintains i_mtime locally */ 1957 1957 if (trust_local_cmtime) { 1958 1958 if (attr->ia_valid & ATTR_MTIME) 1959 - inode->i_mtime = attr->ia_mtime; 1959 + inode_set_mtime_to_ts(inode, attr->ia_mtime); 1960 1960 if (attr->ia_valid & ATTR_CTIME) 1961 1961 inode_set_ctime_to_ts(inode, attr->ia_ctime); 1962 1962 /* FIXME: clear I_DIRTY_SYNC? */
+14 -15
fs/fuse/inode.c
··· 188 188 attr->mtimensec = min_t(u32, attr->mtimensec, NSEC_PER_SEC - 1); 189 189 attr->ctimensec = min_t(u32, attr->ctimensec, NSEC_PER_SEC - 1); 190 190 191 - inode->i_atime.tv_sec = attr->atime; 192 - inode->i_atime.tv_nsec = attr->atimensec; 191 + inode_set_atime(inode, attr->atime, attr->atimensec); 193 192 /* mtime from server may be stale due to local buffered write */ 194 193 if (!(cache_mask & STATX_MTIME)) { 195 - inode->i_mtime.tv_sec = attr->mtime; 196 - inode->i_mtime.tv_nsec = attr->mtimensec; 194 + inode_set_mtime(inode, attr->mtime, attr->mtimensec); 197 195 } 198 196 if (!(cache_mask & STATX_CTIME)) { 199 197 inode_set_ctime(inode, attr->ctime, attr->ctimensec); ··· 274 276 attr->size = i_size_read(inode); 275 277 276 278 if (cache_mask & STATX_MTIME) { 277 - attr->mtime = inode->i_mtime.tv_sec; 278 - attr->mtimensec = inode->i_mtime.tv_nsec; 279 + attr->mtime = inode_get_mtime_sec(inode); 280 + attr->mtimensec = inode_get_mtime_nsec(inode); 279 281 } 280 282 if (cache_mask & STATX_CTIME) { 281 - attr->ctime = inode_get_ctime(inode).tv_sec; 282 - attr->ctimensec = inode_get_ctime(inode).tv_nsec; 283 + attr->ctime = inode_get_ctime_sec(inode); 284 + attr->ctimensec = inode_get_ctime_nsec(inode); 283 285 } 284 286 285 287 if ((attr_version != 0 && fi->attr_version > attr_version) || ··· 288 290 return; 289 291 } 290 292 291 - old_mtime = inode->i_mtime; 293 + old_mtime = inode_get_mtime(inode); 292 294 fuse_change_attributes_common(inode, attr, sx, attr_valid, cache_mask); 293 295 294 296 oldsize = inode->i_size; ··· 335 337 { 336 338 inode->i_mode = attr->mode & S_IFMT; 337 339 inode->i_size = attr->size; 338 - inode->i_mtime.tv_sec = attr->mtime; 339 - inode->i_mtime.tv_nsec = attr->mtimensec; 340 + inode_set_mtime(inode, attr->mtime, attr->mtimensec); 340 341 inode_set_ctime(inode, attr->ctime, attr->ctimensec); 341 342 if (S_ISREG(inode->i_mode)) { 342 343 fuse_init_common(inode); ··· 1420 1423 static void fuse_fill_attr_from_inode(struct fuse_attr *attr, 1421 1424 const struct fuse_inode *fi) 1422 1425 { 1426 + struct timespec64 atime = inode_get_atime(&fi->inode); 1427 + struct timespec64 mtime = inode_get_mtime(&fi->inode); 1423 1428 struct timespec64 ctime = inode_get_ctime(&fi->inode); 1424 1429 1425 1430 *attr = (struct fuse_attr){ 1426 1431 .ino = fi->inode.i_ino, 1427 1432 .size = fi->inode.i_size, 1428 1433 .blocks = fi->inode.i_blocks, 1429 - .atime = fi->inode.i_atime.tv_sec, 1430 - .mtime = fi->inode.i_mtime.tv_sec, 1434 + .atime = atime.tv_sec, 1435 + .mtime = mtime.tv_sec, 1431 1436 .ctime = ctime.tv_sec, 1432 - .atimensec = fi->inode.i_atime.tv_nsec, 1433 - .mtimensec = fi->inode.i_mtime.tv_nsec, 1437 + .atimensec = atime.tv_nsec, 1438 + .mtimensec = mtime.tv_nsec, 1434 1439 .ctimensec = ctime.tv_nsec, 1435 1440 .mode = fi->inode.i_mode, 1436 1441 .nlink = fi->inode.i_nlink,
+4 -2
fs/fuse/readdir.c
··· 476 476 if (!fi->rdc.cached) { 477 477 /* Starting cache? Set cache mtime. */ 478 478 if (!ctx->pos && !fi->rdc.size) { 479 - fi->rdc.mtime = inode->i_mtime; 479 + fi->rdc.mtime = inode_get_mtime(inode); 480 480 fi->rdc.iversion = inode_query_iversion(inode); 481 481 } 482 482 spin_unlock(&fi->rdc.lock); ··· 488 488 * changed, and reset the cache if so. 489 489 */ 490 490 if (!ctx->pos) { 491 + struct timespec64 mtime = inode_get_mtime(inode); 492 + 491 493 if (inode_peek_iversion(inode) != fi->rdc.iversion || 492 - !timespec64_equal(&fi->rdc.mtime, &inode->i_mtime)) { 494 + !timespec64_equal(&fi->rdc.mtime, &mtime)) { 493 495 fuse_rdc_reset(inode); 494 496 goto retry_locked; 495 497 }