The current status of the FC2 test1 release is that this kernel bug needs fixing, and then we should be good to go. Any help fixing the problem would be greatly appreciated! Cheers, -- Elliot Friends help you move. Real friends help you move bodies. ---------- Forwarded message ---------- Date: Fri, 30 Jan 2004 12:20:47 -0500 From: Jeremy Katz <katzj redhat com> Subject: Re: changeloop appears broken in 2.6.1-1.63 On Thu, 2004-01-29 at 21:56 -0500, Bill Nottingham wrote: > Alexander Viro (aviro redhat com) said: > > On Thu, Jan 29, 2004 at 03:57:13PM -0500, Bill Nottingham wrote: > > > After performing (apparently) the changeloop ioctl, the installer > > > becomes stuck in disk wait in the loopback driver. > > > > > > Attached is the dump of the installer's syslog, with sysrq output. > > > > Umm... Had it worked earlier? > > AFAIK, this is the first time we've tried it under 2.6. Due to a variety of circumstances, yes. Attached is a simple test program that can be used in reproducing. Steps are 1) Copy some image you can loopback mount to /tmp/loop.img (doesn't matter what, you can even just dd /dev/zero and mke2fs it) 2) losetup /dev/loop0 /tmp/loop.img 3) mount /dev/loop0 /mnt/tmp -o loop,ro 4) cp /tmp/loop.img /tmp/new.img 5) ./testchangeloop /dev/loop0 /tmp/new.img And watch it hang Jeremy
Attachment:
testchangeloop
Description: application/executable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>
#ifndef LOOP_CHANGE_FD
#define LOOP_CHANGE_FD 0x4C06
#endif
int main(int argc, char ** argv) {
int loopfd, targfd;
int rc = 1;
loopfd = open(argv[1], O_RDWR);
if (loopfd == -1) {
perror("loopfd open");
goto out;
}
targfd = open(argv[2], O_RDWR);
if (targfd == -1) {
perror("targfd open");
goto out;
}
if (ioctl(loopfd, LOOP_CHANGE_FD, targfd) == -1) {
perror("loopchange");
goto out;
}
rc = 0;
out:
close(loopfd);
close(targfd);
exit(rc);
}