On Mon, Aug 04, 2003 at 04:03:41PM +0200, Wolfgang Hinsch wrote:
Am Mon, 2003-08-04 um 15.39 schrieb Christian Schneider:
Als Dateisystem verwende ich ReiserFS. Durch das Verschieben einer Datei hat sich bei mir der Change-Status dieser Datei nicht geändert, bei Maik mit ext2 schon. Liegt es tatsächlich am Dateisystem oder was ist der Grund für dieses Verhalten?
Warum ändert sich die ctime einer Datei d, die auf dem Dateisystem f liegt, wenn man den Syscall s auf diese Datei ausführt? Antwort: Weil im Code für den Syscall s in f eine Zeile wie diese hier steht: new_inode->i_ctime = CURRENT_TIME; Genau das steht in fs/ext2/namei.c:ext2_rename(): 299 ext2_inc_count(old_inode); 300 ext2_set_link(new_dir, new_de, new_page, old_inode); 301 new_inode->i_ctime = CURRENT_TIME; 302 if (dir_de) 303 new_inode->i_nlink--; 304 ext2_dec_count(new_inode); In fs/reiserfs/namei.c:reiserfs_rename() steht es nicht... Zwar ruft reiserfs_rename() intern reiserfs_add_entry() auf, aber diese Funktion setzt nur die mtime und die ctime des Zielverzeichnis neu, nicht jedoch die ctime der Datei. Ich habe mein POSIX jetzt nicht zur Hand und kann nicht sagen, welches Verhalten auf der Grundlage des Standards Mandat wäre. Ich vermute aber, daß ext2 Recht hat. Kristian