.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * linux/fs/msdos/namei.c |
---|
3 | 4 | * |
---|
.. | .. |
---|
250 | 251 | if (err) |
---|
251 | 252 | return err; |
---|
252 | 253 | |
---|
253 | | - dir->i_ctime = dir->i_mtime = *ts; |
---|
| 254 | + fat_truncate_time(dir, ts, S_CTIME|S_MTIME); |
---|
254 | 255 | if (IS_DIRSYNC(dir)) |
---|
255 | 256 | (void)fat_sync_inode(dir); |
---|
256 | 257 | else |
---|
.. | .. |
---|
294 | 295 | err = PTR_ERR(inode); |
---|
295 | 296 | goto out; |
---|
296 | 297 | } |
---|
297 | | - inode->i_mtime = inode->i_atime = inode->i_ctime = ts; |
---|
| 298 | + fat_truncate_time(inode, &ts, S_ATIME|S_CTIME|S_MTIME); |
---|
298 | 299 | /* timestamp is already written, so mark_inode_dirty() is unneeded. */ |
---|
299 | 300 | |
---|
300 | 301 | d_instantiate(dentry, inode); |
---|
.. | .. |
---|
327 | 328 | drop_nlink(dir); |
---|
328 | 329 | |
---|
329 | 330 | clear_nlink(inode); |
---|
330 | | - inode->i_ctime = current_time(inode); |
---|
| 331 | + fat_truncate_time(inode, NULL, S_CTIME); |
---|
331 | 332 | fat_detach(inode); |
---|
332 | 333 | out: |
---|
333 | 334 | mutex_unlock(&MSDOS_SB(sb)->s_lock); |
---|
.. | .. |
---|
380 | 381 | goto out; |
---|
381 | 382 | } |
---|
382 | 383 | set_nlink(inode, 2); |
---|
383 | | - inode->i_mtime = inode->i_atime = inode->i_ctime = ts; |
---|
| 384 | + fat_truncate_time(inode, &ts, S_ATIME|S_CTIME|S_MTIME); |
---|
384 | 385 | /* timestamp is already written, so mark_inode_dirty() is unneeded. */ |
---|
385 | 386 | |
---|
386 | 387 | d_instantiate(dentry, inode); |
---|
.. | .. |
---|
413 | 414 | if (err) |
---|
414 | 415 | goto out; |
---|
415 | 416 | clear_nlink(inode); |
---|
416 | | - inode->i_ctime = current_time(inode); |
---|
| 417 | + fat_truncate_time(inode, NULL, S_CTIME); |
---|
417 | 418 | fat_detach(inode); |
---|
418 | 419 | out: |
---|
419 | 420 | mutex_unlock(&MSDOS_SB(sb)->s_lock); |
---|
.. | .. |
---|
478 | 479 | mark_inode_dirty(old_inode); |
---|
479 | 480 | |
---|
480 | 481 | inode_inc_iversion(old_dir); |
---|
481 | | - old_dir->i_ctime = old_dir->i_mtime = current_time(old_dir); |
---|
| 482 | + fat_truncate_time(old_dir, NULL, S_CTIME|S_MTIME); |
---|
482 | 483 | if (IS_DIRSYNC(old_dir)) |
---|
483 | 484 | (void)fat_sync_inode(old_dir); |
---|
484 | 485 | else |
---|
.. | .. |
---|
538 | 539 | if (err) |
---|
539 | 540 | goto error_dotdot; |
---|
540 | 541 | inode_inc_iversion(old_dir); |
---|
541 | | - old_dir->i_ctime = old_dir->i_mtime = ts; |
---|
| 542 | + fat_truncate_time(old_dir, &ts, S_CTIME|S_MTIME); |
---|
542 | 543 | if (IS_DIRSYNC(old_dir)) |
---|
543 | 544 | (void)fat_sync_inode(old_dir); |
---|
544 | 545 | else |
---|
.. | .. |
---|
548 | 549 | drop_nlink(new_inode); |
---|
549 | 550 | if (is_dir) |
---|
550 | 551 | drop_nlink(new_inode); |
---|
551 | | - new_inode->i_ctime = ts; |
---|
| 552 | + fat_truncate_time(new_inode, &ts, S_CTIME); |
---|
552 | 553 | } |
---|
553 | 554 | out: |
---|
554 | 555 | brelse(sinfo.bh); |
---|
.. | .. |
---|
637 | 638 | .rename = msdos_rename, |
---|
638 | 639 | .setattr = fat_setattr, |
---|
639 | 640 | .getattr = fat_getattr, |
---|
| 641 | + .update_time = fat_update_time, |
---|
640 | 642 | }; |
---|
641 | 643 | |
---|
642 | 644 | static void setup(struct super_block *sb) |
---|
.. | .. |
---|
678 | 680 | } |
---|
679 | 681 | |
---|
680 | 682 | MODULE_LICENSE("GPL"); |
---|
| 683 | +MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY); |
---|
681 | 684 | MODULE_AUTHOR("Werner Almesberger"); |
---|
682 | 685 | MODULE_DESCRIPTION("MS-DOS filesystem support"); |
---|
683 | 686 | |
---|