Dear Padraig Brady,
Thank you very much for your response.
I attached the strace log for "mv" command.
Regards
koteswararao
On Tue, May 14, 2013 at 2:31 PM, Pádraig Brady <[email protected]> wrote:
> On 05/14/2013 06:31 AM, Koteswararao Nelakurthi wrote:
> > Dear All,
> >
> > I am trying to do mv(move) operation on
> > Embedded LInux board (x86 target).
> > THe mv command is executed to
> > copy a symbolic link file from
> > one disk drive partition to
> > other partition on Embedded linux target
> > board.
> > But i observed below issue during mv command
> > execution. Even below message is observed,
> > the file is copied to other partition successfully.
> > i am using coreutils-8.5-r6.0.7 package.
> >
> > {{{
> > root@x86-generic-64:/mnt/sda3# ls -l aaa bbb
> > -rw-r--r-- 1 root root 0 May 9 13:02 aaa
> > lrwxrwxrwx 1 root root 3 May 11 09:08 bbb -> aaa
> > root@x86-generic-64:/mnt/sda3# mv bbb /mnt/sda4/
> > mv: failed to preserve ownership for /mnt/sda4/bbb: Function not
> implemented
> > }}}
> >
> > IF if use coreutils-8.5-r6.0.6 , then above issue
> > is not observed
> >
> > Any inputs about the changes done in coreutils package
> >
> > that may be producing the above issue?
>
> Please use [email protected] in future,
> so that others may help (in future).
>
> So coreutils-8.5-r6.0.6 works and coreutils-8.5-r6.0.7 doesn't?
> That suggests a downstream change that the coreutils project
> wasn't involved in?
>
> Anyway using strace you can see what operations mv is trying on the dest:
>
> symlink("aaa", "/mnt/sda4/bbb") = 0
> lchown("/mnt/sda4/bbb", 500, 500) = 0
> utimensat(AT_FDCWD, "/mnt/sda4/bbb", ..., AT_SYMLINK_NOFOLLOW) = 0
>
> So lchown is returning ENOSYS for your file system,
> which is fair enough as it probably doesn't support ownerships.
> In the source for mv there is chown_failure_ok() which
> only hides EPERM||EINVAL errors for non root users.
> All others are warned about.
>
> You might be wondering what significance the owner of
> a symlink has, but since it's supported, some significance
> can be associated. For example apache can be configured to
> follow symlinks only if the owner of the link matches the
> owner of the destination.
>
> thanks,
> Pádraig.
>
execve("/bin/mv", ["mv", "aaa", "/media/sda2/"], [/* 12 vars */]) = 0
brk(0) = 0x19d7000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fdf6bc6c000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/tls/x86_64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat("/lib64/tls/x86_64", 0x7fff78f5cd10) = -1 ENOENT (No such file or
directory)
open("/lib64/tls/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat("/lib64/tls", 0x7fff78f5cd10) = -1 ENOENT (No such file or directory)
open("/lib64/x86_64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat("/lib64/x86_64", 0x7fff78f5cd10) = -1 ENOENT (No such file or directory)
open("/lib64/libselinux.so.1", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\\\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=117832, ...}) = 0
mmap(NULL, 2217784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fdf6b831000
mprotect(0x7fdf6b84d000, 2093056, PROT_NONE) = 0
mmap(0x7fdf6ba4c000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7fdf6ba4c000
mmap(0x7fdf6ba4e000, 1848, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdf6ba4e000
close(3) = 0
open("/lib64/librt.so.1", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\"\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=35752, ...}) = 0
mmap(NULL, 2132976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fdf6b628000
mprotect(0x7fdf6b630000, 2093056, PROT_NONE) = 0
mmap(0x7fdf6b82f000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fdf6b82f000
close(3) = 0
open("/lib64/libattr.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/tls/x86_64/libattr.so.1", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat("/usr/lib64/tls/x86_64", 0x7fff78f5ccb0) = -1 ENOENT (No such file or
directory)
open("/usr/lib64/tls/libattr.so.1", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat("/usr/lib64/tls", 0x7fff78f5ccb0) = -1 ENOENT (No such file or directory)
open("/usr/lib64/x86_64/libattr.so.1", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat("/usr/lib64/x86_64", 0x7fff78f5ccb0) = -1 ENOENT (No such file or
directory)
open("/usr/lib64/libattr.so.1", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\23\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=53524, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fdf6bc6b000
mmap(NULL, 2112424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fdf6b424000
mprotect(0x7fdf6b428000, 2093056, PROT_NONE) = 0
mmap(0x7fdf6b627000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fdf6b627000
close(3) = 0
open("/lib64/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\356\1\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1404184, ...}) = 0
mmap(NULL, 3512328, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fdf6b0ca000
mprotect(0x7fdf6b21b000, 2093056, PROT_NONE) = 0
mmap(0x7fdf6b41a000, 20480, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x150000) = 0x7fdf6b41a000
mmap(0x7fdf6b41f000, 18440, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdf6b41f000
close(3) = 0
open("/lib64/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\r\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14608, ...}) = 0
mmap(NULL, 2109696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fdf6aec6000
mprotect(0x7fdf6aec8000, 2097152, PROT_NONE) = 0
mmap(0x7fdf6b0c8000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fdf6b0c8000
close(3) = 0
open("/lib64/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320Y\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=97568, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fdf6bc6a000
mmap(NULL, 2208640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fdf6acaa000
mprotect(0x7fdf6acc1000, 2093056, PROT_NONE) = 0
mmap(0x7fdf6aec0000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fdf6aec0000
mmap(0x7fdf6aec2000, 13184, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdf6aec2000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fdf6bc69000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fdf6bc67000
arch_prctl(ARCH_SET_FS, 0x7fdf6bc677a0) = 0
mprotect(0x7fdf6aec0000, 4096, PROT_READ) = 0
mprotect(0x7fdf6b0c8000, 4096, PROT_READ) = 0
mprotect(0x7fdf6b41a000, 16384, PROT_READ) = 0
mprotect(0x7fdf6b82f000, 4096, PROT_READ) = 0
mprotect(0x7fdf6ba4c000, 4096, PROT_READ) = 0
mprotect(0x7fdf6bc6d000, 4096, PROT_READ) = 0
set_tid_address(0x7fdf6bc67a70) = 7952
set_robust_list(0x7fdf6bc67a80, 0x18) = 0
futex(0x7fff78f5d60c, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7fff78f5d60c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL,
7fdf6bc677a0) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0x7fdf6acaf850, [], SA_RESTORER|SA_SIGINFO,
0x7fdf6acb9190}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7fdf6acaf8e0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO,
0x7fdf6acb9190}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
statfs("/selinux", {f_type=0xf97cff8c, f_bsize=4096, f_blocks=0, f_bfree=0,
f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096})
= 0
brk(0) = 0x19d7000
brk(0x19f8000) = 0x19f8000
gettid() = 7952
open("/proc/self/task/7952/attr/current", O_RDONLY) = 3
read(3, "kernel\0", 4095) = 7
close(3) = 0
geteuid() = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS,
{B38400 opost isig icanon echo ...}) = 0
stat("/media/sda2/", {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0
lstat("aaa", {st_mode=S_IFLNK|0777, st_size=3, ...}) = 0
lstat("/media/sda2/aaa", {st_mode=S_IFLNK|0777, st_size=3, ...}) = 0
stat(".", {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0
stat("/media/sda2", {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0
lstat("aaa", {st_mode=S_IFLNK|0777, st_size=3, ...}) = 0
lstat("/media/sda2/aaa", {st_mode=S_IFLNK|0777, st_size=3, ...}) = 0
rename("aaa", "/media/sda2/aaa") = -1 EXDEV (Invalid cross-device link)
unlink("/media/sda2/aaa") = 0
readlink("aaa", "bbb"..., 4) = 3
symlink("bbb", "/media/sda2/aaa") = 0
lstat("/media/sda2/aaa", {st_mode=S_IFLNK|0777, st_size=3, ...}) = 0
lchown("/media/sda2/aaa", 0, 0) = 0
write(2, "mv: ", 4mv: ) = 4
write(2, "failed to preserve ownership for"..., 48failed to preserve ownership
for /media/sda2/aaa) = 48
write(2, ": Function not implemented", 26: Function not implemented) = 26
write(2, "\n", 1
) = 1
close(0) = 0
close(1) = 0
close(2) = 0
exit_group(1) = ?