Re: Oops on 2.2.14 While Doing Direct I/O.

From: Jeff V. Merkey (jmerkey@timpanogas.com)
Date: Tue Feb 22 2000 - 16:08:36 EST


Andrea,

(and Stephen Tweedie, I appreciate your help earlier)

I've noticed that 2.3.X does NOT export the internal calls needed to
load NWFS as a driver -- I must now compile it within the kernel. I am
using Caldera's latest 2.3, so I am wondering if this is the case for
all the distributions, or just theirs. Here's a list of unresolved
externs. I can, of course, build an ugly patch to do this if any
variables/functions have been declared "static" -- looks like we may
have to put out our own linux distribution if going the driver route is
not always going to be supported in stock kernels (???).

Alan Cox was correct, file system performance on 2.2/2.3 IS MUCH BETTER
than 2.0 and earlier. I am looking at the page cache at present for 2.3
-- a very impressive piece of work -- not at all dissimiliar to the
Cache Manager in Windows 2000 (though the page cache in Linux is a MUCH
easier implementation to work with -- no structured exceptions or unwind
cases to deal with).

If 2.3 is no longer exporting the attached APIs, then you guys may have
just added another company to the penguin hatchery (TRG) because we will
need to provide our own Linux version (with lots of patches) for each
kernel build to support NWFS and M2FS (our clustered file system for
Linux) for 2.3 and above.

I hope I am missing something here on the public APIs and this is just a
Caldera problem. I am heading up there this afternoon to find out
what's up with their 2.3/2.4 stuff, and why 2.2 file system drivers are
no longer loadable under 2.3/2.4.

Jeff

./nwfs.o: unresolved symbol __generic_copy_from_user
./nwfs.o: unresolved symbol schedule
./nwfs.o: unresolved symbol blkdev_open
./nwfs.o: unresolved symbol kmalloc
./nwfs.o: unresolved symbol __wait_on_buffer
./nwfs.o: unresolved symbol vfree
./nwfs.o: unresolved symbol mark_buffer_uptodate
./nwfs.o: unresolved symbol unregister_filesystem
./nwfs.o: unresolved symbol iput
./nwfs.o: unresolved symbol getblk
./nwfs.o: unresolved symbol ll_rw_block
./nwfs.o: unresolved symbol iget
./nwfs.o: unresolved symbol register_filesystem
./nwfs.o: unresolved symbol sync_dev
./nwfs.o: unresolved symbol blk_size
./nwfs.o: unresolved symbol sys_tz
./nwfs.o: unresolved symbol del_timer
./nwfs.o: unresolved symbol refile_buffer
./nwfs.o: unresolved symbol kfree
./nwfs.o: unresolved symbol vmalloc
./nwfs.o: unresolved symbol tq_disk
./nwfs.o: unresolved symbol set_blocksize
./nwfs.o: unresolved symbol xtime
./nwfs.o: unresolved symbol blkdev_release
./nwfs.o: unresolved symbol sprintf
./nwfs.o: unresolved symbol __brelse
./nwfs.o: unresolved symbol jiffies
./nwfs.o: unresolved symbol printk
./nwfs.o: unresolved symbol add_timer
./nwfs.o: unresolved symbol kernel_thread
./nwfs.o: unresolved symbol set_writetime
./nwfs.o: unresolved symbol get_blkfops
./nwfs.o: unresolved symbol __generic_copy_to_user
./nwfs.o: unresolved symbol hardsect_size

"Jeff V. Merkey" wrote:
>
> Andrea,
>
> I'll try this. I forgot about the mm_end_io field for asynch I/O. THis
> is called "natural selection at work." :)
>
> Thanks,
>
> Jeff
>
> Andrea Arcangeli wrote:
> >
> > On Mon, 21 Feb 2000, Jeff V. Merkey wrote:
> >
> > >//
> > >// THIS CODE CRASHES WITH AN OOPS MESSAGE UNDER 2.2.14 (and all 2.2.X
> > >kernels)
> > >//
> > [..]
> > > bh[i]->b_this_page = bh[(i + 1) % sectors]; // create circular
> > >list
> > > bh[i]->b_state = 0;
> > > bh[i]->b_next_free = NULL;
> > > bh[i]->b_count = 0;
> > > bh[i]->b_size = 512;
> > > bh[i]->b_data = (char *)&Sector[i * bps];
> > > bh[i]->b_list = BUF_CLEAN;
> > > bh[i]->b_dev = (int)NWDisk->PhysicalDiskHandle;
> > > bh[i]->b_blocknr = (StartingLBA + i);
> > > bh[i]->b_count = 1;
> > > bh[i]->b_flushtime = 0;
> > >
> > > clear_bit(BH_Uptodate, &bh[i]->b_state);
> >
> > 1) You forgot to set the bh[i]->b_end_io callback, that's why it
> > crashes immediatly within the IDE irq handler (probably killing the
> > idle task or similar).
> >
> > 2) It seems you don't need to set the b_this_page at all (unless you need
> > it in the end_io callback). You can set it to zero to trap accesses
> > to it. Also if relly you want to set it you'd better set
> > bh[i]->b_this_page to bh itself since your b_data storage memory is
> > 512byte wide thus is sounds more correct.
> >
> > 3) Note that WRITEA is obsoleted in 2.3.x.
> >
> > Andrea
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.rutgers.edu
> Please read the FAQ at http://www.tux.org/lkml/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Feb 23 2000 - 21:00:31 EST