[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-cpio] Re: Bug#565474: cpio makes device nodes into hard links w
From: |
Carl Miller |
Subject: |
Re: [Bug-cpio] Re: Bug#565474: cpio makes device nodes into hard links when copying out of a cramfs image |
Date: |
Mon, 18 Jan 2010 10:20:27 -0800 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Sun, Jan 17, 2010 at 04:47:12PM -0800, Tim Kientzle wrote:
> On Fri, Jan 15, 2010 at 08:06:54PM -0800, Carl Miller wrote:
> >cramfs takes a shortcut with device nodes, and assigns them all inode 1.
>
> I presume it also assigns nlinks == 1?
That would appear to be the case. Here's the tail end of an strace of the
cpio in my example running....
14087 lstat("dev/loop0", {st_dev=makedev(7, 0), st_ino=1, st_mode=S_IFBLK|0644,
st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=4,
st_rdev=makedev(7, 0), st_atime=0, st_mtime=0, st_ctime=0}) = 0
14087 write(3,
"dev/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
14087 lstat("dev/loop1", {st_dev=makedev(7, 0), st_ino=1, st_mode=S_IFBLK|0644,
st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=4,
st_rdev=makedev(7, 1), st_atime=0, st_mtime=0, st_ctime=0}) = 0
14087 write(3, "dev/loop0/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
512) = 512
14087 lstat("dev/loop2", {st_dev=makedev(7, 0), st_ino=1, st_mode=S_IFBLK|0644,
st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=4,
st_rdev=makedev(7, 2), st_atime=0, st_mtime=0, st_ctime=0}) = 0
14087 write(3, "dev/loop1/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
512) = 512
14087 lstat("dev/loop3", {st_dev=makedev(7, 0), st_ino=1, st_mode=S_IFBLK|0644,
st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=4,
st_rdev=makedev(7, 3), st_atime=0, st_mtime=0, st_ctime=0}) = 0
14087 write(3, "dev/loop2/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
512) = 512
14087 read(0, "", 4096) = 0
14087 write(3, "dev/loop3/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
512) = 512
14087 write(3,
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) =
512
14087 write(3,
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) =
512
14087 close(3) = 0
14087 exit_group(0) = ?
> >When using cpio to copy files out of a cramfs image, cpio turns the second
> >and all subsequent copied device nodes into hard links to the first copied
> >out device node, based on them all having the same st_dev and st_ino.
>
> Another possible solution: When checking for hard links
> during copy-out, do not generate hardlink entries if
> nlinks < 2.
Good thought. Maybe I'll try that first. Thanks, Tim!
------Carl