Re: 2.5.60 and current bk oops in file_ra_state_init

From: Patrick Mansfield (patmans@us.ibm.com)
Date: Thu Feb 13 2003 - 17:29:58 EST


On Thu, Feb 13, 2003 at 01:13:44PM -0800, Andrew Morton wrote:
> Was this test frequently opening and closing device nodes, or does it just
> open them once and hold them?

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/



This archive was generated by hypermail 2b29 : Sat Feb 15 2003 - 22:00:50 EST