Mailinglist Archive: opensuse (2459 mails)
| < Previous | Next > |
Re: [opensuse] mv and cpio have new behavior. How do I get the old back?
- From: Anders Johansson <ajh@xxxxxxxxxx>
- Date: Wed, 26 Mar 2008 03:33:24 +0100
- Message-id: <1206498804.20029.25.camel@xxxxxxxxxxxxxxxxxx>
On Tue, 2008-03-25 at 20:26 -0600, Boyd Lynn Gerber wrote:
Ah, ok, I thought you were showing the contents of the moved directory.
Well then my theory above still holds. All directories had to have an
updated .. dentry, which means they were modified
if (new_parent && src_is_directory) {
/*
* Rewrite the ".." entry to point to the new
* directory.
*/
error = xfs_dir_replace(tp, src_ip, "..", 2,
target_dp->i_ino,
&first_block, &free_list,
spaceres);
ASSERT(error != EEXIST);
if (error)
goto abort_return;
xfs_ichgtime(src_ip, XFS_ICHGTIME_MOD |
XFS_ICHGTIME_CHG);
is the code in xfs that does it. So if it gets a new .., update MOD
(mtime) and CHG (ctime). The corresponding code in ext3 is
old_inode->i_ctime = CURRENT_TIME_SEC;
so it only changes the ctime.
In other words, it is a conscious choice by the xfs programmers, and
while it's unfortunate that the file systems behave differently, I still
think xfs got it right here, because the directory is modified
Anders
--
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx
The directories *are* changing. Specifically, the .. dentry is changed
to point to the inode of the new parent directory. In your ls output I'm
willing to bet that you moved the directory to another partition, which
means your directory got a new inode number, which in turn means all ..
dentries in all subdirectories had to be updated
So to my mind it is correct that the mtime gets updated. I see it more
as a problem with ext that it doesn't get updated there
They did not change partitions. They were all in /home/zenez/ This
directory was getting to many directories to follow. I did the
following
mkdir etc-new
mv etc etc.* etc-new/
mv etc-new etc
The above was the result.
Ah, ok, I thought you were showing the contents of the moved directory.
Well then my theory above still holds. All directories had to have an
updated .. dentry, which means they were modified
if (new_parent && src_is_directory) {
/*
* Rewrite the ".." entry to point to the new
* directory.
*/
error = xfs_dir_replace(tp, src_ip, "..", 2,
target_dp->i_ino,
&first_block, &free_list,
spaceres);
ASSERT(error != EEXIST);
if (error)
goto abort_return;
xfs_ichgtime(src_ip, XFS_ICHGTIME_MOD |
XFS_ICHGTIME_CHG);
is the code in xfs that does it. So if it gets a new .., update MOD
(mtime) and CHG (ctime). The corresponding code in ext3 is
old_inode->i_ctime = CURRENT_TIME_SEC;
so it only changes the ctime.
In other words, it is a conscious choice by the xfs programmers, and
while it's unfortunate that the file systems behave differently, I still
think xfs got it right here, because the directory is modified
Anders
--
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx
| < Previous | Next > |