Bug 637630

Summary: USB HD install fails: (16, 'Device or resource busy')
Product: [Fedora] Fedora Reporter: John Reiser <jreiser>
Component: anacondaAssignee: Anaconda Maintenance Team <anaconda-maint-list>
Status: CLOSED DUPLICATE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: 14CC: anaconda-maint-list, jonathan, vanmeeuwen+fedora
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-09-27 14:08:10 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
/tmp/storage.log
none
/tmp/anaconda.log none

Description John Reiser 2010-09-27 00:01:55 UTC
Created attachment 449779 [details]
/tmp/storage.log

Description of problem: Fresh install from a DVD that has been converted to USB fails at "Transferring image to harddrive" with message box: Error Setting Up Repository: The folowing error occurred while setting up the installation repository: (16, 'Device or resource busy')  Please provide the correct information for installing Fedora  [OK].


Version-Release number of selected component (if applicable):
anaconda-14.17.4

How reproducible: every time


Steps to Reproduce:
1.https://fedoraproject.org/wiki/How_to_create_and_use_Live_USB#How_to_Make_a_bootable_USB_Drive_to_Install_Fedora_instead_of_using_a_physical_DVD
using Fedora 14 Beta CD
2. boot USB, choose English, US keyboard, defaults except Custom harddrive configuration overwriting existing 15GB partition as root
3.
  
Actual results: Install fails as in Description.  Also, after clicking OK then harddrive is not one of the offered choices: only http/ftp, CD/DVD, or NFS is available.


Expected results: Successful install using copy of DVD.iso on USB2.0 flash memory.


Additional info: Using shell on VT2 to send "kill -HUP <pid-of-anaconda>" did not produce a traceback or dump.  Instead I will attach logs from /tmp.  I also attached strace to anaconda.  There was only one EBUSY:
-----
2267  open("/dev/sdc5", O_RDONLY|O_EXCL <unfinished ...>
803   read(19,  <unfinished ...>
2267  <... open resumed> )              = -1 EBUSY (Device or resource busy)
-----
and all preceding references to sdc5 (the destination root) were:
----- 1,.g/sdc5/p
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   access("/dev/sdc5", W_OK)         = 0
803   sendto(16, "<143>storage: device sdc5 new pa"..., 405, 0, NULL, 0) = 405
803   access("/dev/sdc5", W_OK)         = 0
803   stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
803   stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
2267  execve("/tmp/product/mke2fs", ["mke2fs", "-t", "ext4", "/dev/sdc5"], [/* 23 vars */]) = -1 ENOENT (No such file or directory)
2267  execve("/tmp/updates/mke2fs", ["mke2fs", "-t", "ext4", "/dev/sdc5"], [/* 23 vars */]) = -1 ENOENT (No such file or directory)
2267  execve("/usr/bin/mke2fs", ["mke2fs", "-t", "ext4", "/dev/sdc5"], [/* 23 vars */]) = -1 ENOENT (No such file or directory)
2267  execve("/bin/mke2fs", ["mke2fs", "-t", "ext4", "/dev/sdc5"], [/* 23 vars */]) = -1 ENOENT (No such file or directory)
2267  execve("/sbin/mke2fs", ["mke2fs", "-t", "ext4", "/dev/sdc5"], [/* 23 vars */]) = -1 ENOENT (No such file or directory)
2267  execve("/usr/sbin/mke2fs", ["mke2fs", "-t", "ext4", "/dev/sdc5"], [/* 23 vars */]) = 0
2267  stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
2267  stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
2267  stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
2267  stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
2267  stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
2267  open("/dev/sdc5", O_RDONLY|O_EXCL) = 0
2267  open("/dev/sdc5", O_RDONLY)       = 0
2267  open("/dev/sdc5", O_RDONLY)       = 0
2267  open("/dev/sdc5", O_RDONLY)       = 0
2267  stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
2267  open("/dev/sdc5", O_RDONLY)       = 0
2267  open("/dev/sdc5", O_RDWR|O_EXCL)  = 0
2267  open("/dev/sdc5", O_RDWR)         = 8
2267  stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
2267  stat("/dev/sdc5", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 37), ...}) = 0
2267  stat("/dev/sdc5",  <unfinished ...>
2267  stat("/dev/sdc5",  <unfinished ...>
2267  open("/dev/sdc5", O_RDONLY|O_EXCL <unfinished ...>
-----

Comment 1 John Reiser 2010-09-27 00:02:25 UTC
Created attachment 449780 [details]
/tmp/anaconda.log

Comment 2 John Reiser 2010-09-27 00:15:49 UTC
The two preceding open("/dev/sdc5",...) before the EBUSY were:
-----
2267  open("/dev/sdc5", O_RDWR|O_EXCL)  = 0
2267  ioctl(0, BLKROGET, 0x7fffd9b7c2dc) = 0
2267  uname({sys="Linux", node="localhost.localdomain", ...}) = 0
2267  mmap(NULL, 507904, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdc116b8000
2267  brk(0)                            = 0x1dc4000
2267  brk(0x1de9000)                    = 0x1de9000
2267  open("/dev/sdc5", O_RDWR)         = 8 

   # Note that file descriptor 0 already is open to the same path, and with O_EXCL.  So now there are two file descriptors open to the destination.
           
2267  ioctl(8, BLKDISCARD, 0x7fffd9b7c5c0) = -1 EOPNOTSUPP (Operation not supported)
2267  close(8)                          = 0

   # Now fd 0 still is open.

2267  lseek(0, 1024, SEEK_SET)          = 1024
2267  write(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\0"..., 3072) = 3072
2267  open("/dev/urandom", O_RDONLY)    = 8
2267  fcntl(8, F_GETFD)                 = 0
2267  fcntl(8, F_SETFD, FD_CLOEXEC)     = 0
-----
and there is no "close(0)" before the next
-----
2267  open("/dev/sdc5", O_RDONLY|O_EXCL <unfinished ...>
-----
which fails with EBUSY because file descriptor 0 still is open with O_EXCL.

Comment 3 Chris Lumens 2010-09-27 14:08:10 UTC

*** This bug has been marked as a duplicate of bug 627789 ***