Opens once only.
> Can you please prepare a testcase which I can use to reproduce this?
I have only been able to reproduce it on the qla2300 running the latest
qla2300 driver. So maybe it is a qla only problem (blah).
As per previous oops reports by wli and Martin, running with the qlogicisp
driver on the isp1020 gives an oops in isp1020_intr_handler :( 
I'm rebooting again.
I was running this program, simultaneously one per drive up to 25, so I
should have only one IO outstanding per disk (added the O_DIRECT):
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
int
main (int argc, char **argv)
{
	int	fd;
	int	loop_cnt;
	char	*dev_name;
	int	block_size = 512;
	char	buff[4096], *bufp;
	int	res;
	dev_name = argv[1];
	loop_cnt = atoi(argv[2]);
	fprintf(stderr, "Re-reading device %s with %d iterations\n",
		dev_name, loop_cnt);
	fd = open (dev_name, O_RDONLY | O_DIRECT);
	if (fd == -1) {
		perror("open");
		exit(1);
	}
	/* memset(buff, 'x', block_size); */
	bufp = (char*) ((int)(buff + 4096) & 0xfffff000);
	fprintf(stderr, "bufp is 0x%x; buff is 0x%x\n", bufp, buff);
	while (loop_cnt-- > 0) {
#ifdef NOTNOW
#endif
		res = read(fd, bufp, block_size);
		if (res != block_size) {
			fprintf(stderr, "Read only %d bytes of %d, cnt %d\n",
				res, block_size, loop_cnt);
			exit(1);
		}
		res = lseek(fd, 0, SEEK_SET);
		if (res == -1) {
			perror("lseek");
			exit(1);
		}
	}
	close(fd);
}
-- Patrick Mansfield
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/