- 07 Sep, 2002 14 commits
-
-
Alexander Viro authored
sbpcd.[c,h] - uses of D_S[d] replaced with uses of *current_drive.
-
Alexander Viro authored
sbpcd.c - sigh... It used to have a global variable inventively called 'd'. Current disk number. Tons of uses, 99% of them being D_S[d].<blah>. Added a new variable - current_drive. Said animal is equal to D_S + d - it's reassigned at the same place as d.
-
Alexander Viro authored
killed passing minors around; we always pass a pointer to structure; scsi_CDs made static. That killed uses of cdi->dev in sr.c and friends.
-
Alexander Viro authored
Global search'n'replace job - 'SCp' (Scsi_CD pointer - I'm not kidding; and yes, they spell it "Scsi") replaced with 'cd' (sr.c, sr_ioctl.c, sr_vendor.c).
-
Alexander Viro authored
sr.c: we set SCp->cdi.name from the very beginning, which allows to kill passing minors in many cases (we can use "%s...", SCp->cd.name instead of "sr%d...", minor and that turns out to be the majority of places where we use minors at all).
-
Alexander Viro authored
new helper - update_partition(disk, partition_number); does the right thing wrt devfs and driverfs (un)registration of partition entries. BLKPG ioctls fixed - now they call that beast rather than calling only devfs side. New helper - rescan_partitions(disk, bdev); does all work with wiping/rereading/etc. and fs/block_dev.c now uses it instead of check_partition(). The latter became static.
-
Alexander Viro authored
similar to ->flags and ->driverfs_dev_arr, ->de_arr[] got replaced with its (single) element + flag.
-
Alexander Viro authored
Each hd_struct used to have int number; in it. It's used _only_ in disk->part[0] - disk->part[n].number is never assigned/checked for any positive n. Moved from hd_struct to gendisk (disk->part[0].number to disk->number).
-
Alexander Viro authored
disk->driverfs_dev_arr is either NULL or consists of exactly one element. Same change as above (struct device ** -> struct device *); old "is the pointer to array itself NULL or not?" replaced with a flag (in disk->flags).
-
Alexander Viro authored
Seeing that now disk->flags[] always consists of one element, we replace char *flags with int flags, remove the junk from places that used to allocate these "arrays" and do obvious updates of the code (s/->flags[0]/->flags/).
-
Alexander Viro authored
call of driverfs_remove_partitions() pulled into del_gendisk(); function isn't exported anymore. Both it and driverfs_create_partitions() cleaned up.
-
Alexander Viro authored
driverfs_remove_partitions(), devfs_register_partitions(), driverfs_create_partitions(), devfs_register_partition(), devfs_register_disc(), had lost 'minor' argument - it's always disk->first_minor these days. disk_name() takes partition number instead of minor now. Callers of wipe_partitions() in fs/block_dev.c expanded. Remaining caller passes gendisk instead of kdev_t now.
-
Alexander Viro authored
Since ->nr_real is always 1 now, we can remove that field completely. Removed the last remnants of switch in disk_name() (it could be killed a long time ago, I just forgot to remove the last two cases when md and i2o got converted). Collapsed several instances of disk->part[minor - disk->first_minor] - in cases when we know that we deal with disk->part[0].
-
Alexander Viro authored
wipe_partitions() and driverfs_register_partitions(..., 1) (i.e. unregistering them) pulled into del_gendisk() and removed from callers. grok_partitions() merged with register_disk(). devfs_register_partitions(), grok_partitions() and wipe_partitions() not exported anymore.
-
- 31 Aug, 2002 9 commits
-
-
Linus Torvalds authored
-
Linus Torvalds authored
driver remove the ftont of the queue from the request list and cache it in 'current_req'. This simplifies the driver and should be a lot more robust. Still, I'll probably go blind just for _looking_ at the dang sources of this thing. Whee.
-
Linus Torvalds authored
pointer before the device is opened. This should finally fix the 2.5.x floppy driver.
-
Linus Torvalds authored
-
http://linux-ntfs.bkbits.net/ntfs-2.5Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Anton Altaparmakov authored
-
Anton Altaparmakov authored
-
Luca Barbieri authored
This fixes the pnpbios CS check to check for the correct values (it wasn't up to date with the various GDT reshuffles), moves it inside the kernel mode check, modifies it so that it takes less instructions and marks it with unlikely(). Note that the 2.5.32 version of this check will cause the kernel to always panic since it checks for the kernel segments and will thus decide to jump to the pnpbios fault handler without being in pnpbios. pnpbios_core.c instead seems to use the correct values.
-
Daniel Jacobowitz authored
Gotta ptrace_unlink before calling release_task, and instead of fiddling with the real_parent directly.
-
- 30 Aug, 2002 17 commits
-
-
Greg Kroah-Hartman authored
-
Linus Torvalds authored
partitions. The higher layers do a better job of it.
-
Neil Brown authored
-
Neil Brown authored
sk_inuse should be bigger than "char" as we can have more than 255 server threads. Due to the way the count is used, this is unlikely to actually cause a problem, but it should nonetheless be fixed. Also, two printk generate more noise than we would like, so turn them into dprintk (debugging printk).
-
Chuck Lever authored
sock_writeable determines whether there is space in a socket's output buffer. socket write_space callbacks use it to determine whether to wake up those that are waiting for more output buffer space. however, sock_writeable is not appropriate for TCP sockets. because the RPC layer's write_space callback uses it for TCP sockets, the RPC layer hammers on sock_sendmsg with dozens of write requests that are only a few hundred bytes long when it is trying to send a large write RPC request. this patch adds logic to the RPC layer's write_space callback that properly handles TCP sockets. patch reviewed by Trond and Alexey.
-
Chuck Lever authored
when several RPC requests want to reconnect a TCP transport socket at once, xprt_lock_write serializes the tasks to prevent multiple socket connects. however, TCP connects are always done by a RPC child task that has no request slot. xprt_lock_write can oops if there is no request slot allocated to the invoking RPC task. reviewed and accepted by Trond. the xprt_lock_write changes are not yet in 2.4, so this patch does not apply to 2.4.
-
Ingo Molnar authored
This fixes a bad TLS initialization bug found by Andi Kleen. x86/SMP only worked due to luck.
-
Ingo Molnar authored
This adds two scheduler related fixes: - changes the migration code to use struct completion. Andrew pointed out that there might be a small window in where the up() touches the semaphore while the waiting task goes on and frees its stack. And completion is more suited for this kind of stuff anyway. - removes two unneeded exports, pointed out by Andrew.
-
Ingo Molnar authored
This moves CLONE_SETTID and CLONE_CLEARTID handling into kernel/fork.c, where it belongs. [the CLONE_SETTLS is x86-specific and thus remains in the per-arch process.c] This makes support for these two new flags much easier: architectures only have to pass in the user_tid pointer.
-
Dominik Brodowski authored
It would be helpful if these msr.h #defines could get in.
-
David Mosberger authored
It makes no sense to keep efi.h as an ia64-specific header (there really are x86 machines coming out with optional EFI BIOS support).
-
http://lia64.bkbits.net/to-linus-2.5Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Andrew Morton authored
Fix a __FUNCTION__ paste in revoke.c
-
Andrew Morton authored
O_DIRECT support for ext3. It works OK in all journalling modes. Updates to the file metadata and inode are journalled as usual. If the system crashes during an appending O_DIRECT write then journal recovery will truncate the written-to file back to the length which it had on entry to that write. If the system crashes during a file overwrite to existing blocks then the file contents will be an unknown mixture of old and new. If the system crashes during a file overwrite which instantiates new blocks in the middle of the file then there is a possibility of uninitialised disk blocks being present in the file post-recovery.
-
Andrew Morton authored
mpage_writepages() does a lock_page() on pages to be written back, even when it is being used for page reclaim writeback. This is normally OK, because the page is unlocked quickly - pages are unlocked during writeback and nobody should be performing __GFP_FS allocations inside lock_page(). But it has introduced a ranking problem in ext3: generic_file_write ->lock_page ->ext3_prepare_write ->journal_start (waits for a commit) versus ext3_create() ->journal_start() ->ext3_new_inode(GFP_KERNEL) ->page reclaim ->mpage_writepages ->lock_page (locks up, transaction is held open) Maybe sometime, I'll have to turn mpage_writepages' lock_page into a trylock if the caller is PF_MEMALLOC. But for now, let's make ext3's inside-transaction allocations use GFP_NOFS. There is only one of them.
-
Andrew Morton authored
This is a performance and correctness fix against the writeback paths. The writeback code has competing requirements. Sometimes it is used for "memory cleansing": kupdate, bdflush, writer throttling, page allocator writeback, etc. And sometimes this same code is used for data integrity pruposes: fsync, msync, fdatasync, sync, umount, various other kernel-internal uses. The problem is: how to handle a dirty buffer or page which is currently under writeback. For memory cleansing, we just want to skip that buffer/page and go onto the next one. But for sync, we must wait on the old writeback and then start new writeback. mpage_writepages() is current correct for cleansing, but incorrect for sync. block_write_full_page() is currently correct for sync, but inefficient for cleansing. The fix is fairly simple. - In mpage_writepages(), don't skip the page is it's a sync operation. - In block_write_full_page(), skip the buffer if it is a sync operation. And return -EAGAIN to tell the caller that the writeout didn't work out. The caller must then set the page dirty again and move it onto mapping->dirty_pages. This is an extension of the writepage API: writepage can now return EAGAIN. There are only three callers, and they have been updated. fail_writepage() and ext3_writepage() were actually doing this by hand. They have been changed to return -EAGAIN. NTFS will want to be able to return -EAGAIN from its writepage as well. - A sticky question is: how to tell the writeout code which mode it is operating in? Cleansing or sync? It's such a tiny code change that I didn't have the heart to go and propagate a `mode' argument down every instance of writepages() and writepage() in the kernel. So I passed it in via current->flags. Incidentally, the occurrence of a locked-and-dirty buffer in block_write_full_page() is fairly rare: normally the collision avoidance happens at the address_space level, via PageWriteback. But some mappings (blockdevs, ext3 files, etc) have their dirty buffers written out via submit_bh(). It is these buffers which can stall block_write_full_page(). This wart will be pretty intrusive to fix. ext3 needs to become fully page-based (ugh. It's a block-based journalling filesystem, and pages are unnatural). blockdev mappings are still written out by buffers because that's how filesystems use them. Putting _all_ metadata (indirects, inodes, superblocks, etc) into standalone address_spaces would fix that up. - filemap_fdatawrite() sets PF_SYNC. So filemap_fdatawrite() is the kernel function which will start writeback against a mapping for "data integrity" purposes, whereas the unexported, internal-only do_writepages() is the writeback function which is used for memory cleansing. This difference is the reason why I didn't consolidate those functions ages ago... - Lots of code paths had a bogus extra call to filemap_fdatawait(), which I previously added in a moment of weak-headedness. They have all been removed.
-
Andrew Morton authored
A reworked version of the batched page freeing and lock amortisation for VMA teardown. It walks the existing 507-page list in the mmu_gather_t in 16-page chunks, drops their refcounts in 16-page chunks, and de-LRUs and frees any resulting zero-count pages in up-to-16 page chunks.
-