소스 검색

Kernel: Call `did_modify_contents()` after `truncate()`

Truncating a file should absolutly mark it as modified. With this
change our `tail` implementation can correctly handle it.
Fabian Dellwing 1 년 전
부모
커밋
5180e41918
3개의 변경된 파일3개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      Kernel/FileSystem/Ext2FS/Inode.cpp
  2. 1 0
      Kernel/FileSystem/InodeFile.cpp
  3. 1 0
      Kernel/FileSystem/RAMFS/Inode.cpp

+ 1 - 0
Kernel/FileSystem/Ext2FS/Inode.cpp

@@ -1078,6 +1078,7 @@ ErrorOr<void> Ext2FSInode::truncate(u64 size)
         return {};
     TRY(resize(size));
     set_metadata_dirty(true);
+    did_modify_contents();
     return {};
 }
 

+ 1 - 0
Kernel/FileSystem/InodeFile.cpp

@@ -96,6 +96,7 @@ ErrorOr<NonnullOwnPtr<KString>> InodeFile::pseudo_path(OpenFileDescription const
 ErrorOr<void> InodeFile::truncate(u64 size)
 {
     TRY(m_inode->truncate(size));
+    // FIXME: Make sure that the timestamps are updated by Inode::truncate for all filesystems before removing this.
     auto truncated_at = kgettimeofday();
     TRY(m_inode->update_timestamps({}, truncated_at, truncated_at));
     return {};

+ 1 - 0
Kernel/FileSystem/RAMFS/Inode.cpp

@@ -380,6 +380,7 @@ ErrorOr<void> RAMFSInode::truncate(u64 size)
     }
     m_metadata.size = size;
     set_metadata_dirty(true);
+    did_modify_contents();
     return {};
 }