1. 22 Jul, 2002 16 commits
  2. 21 Jul, 2002 19 commits
    • Linus Torvalds's avatar
      Merge · 4872eacc
      Linus Torvalds authored
      4872eacc
    • Alexander Viro's avatar
      [PATCH] fix for nfs_unlink and vfs_unlink · 17191a2c
      Alexander Viro authored
      Ugh.  nfs_unlink() is actually racy as hell - look what happens if
      we enter it with ->d_count == 1, see that nfs_sillyrename() doesn't
      need to do anything and call nfs_safe_remove().  In the meanwhile
      somebody does dcache lookup (without going into NFS code - plain
      and simple cache hit) and increments ->d_count.  nfs_safe_remove()
      decides that something is very rotten and fails.
      
      AFAICS we should take the test for ->d_count + d_drop if it's 1
      under dcache_lock (and in one place).  Comments?
      
      Proposed fix follows:
      	* dget/dput killed in vfs_unlink() (safely)
      	* nfs_unlink() starts with check for ->d_count (under dcache_lock)
      	* if it's > 1 - sillyrename
      	* if it is 1 - immediately unhash, then drop dcache_lock.
      		after that we do as in old variant, except that
      		rehashing is done in nfs_unlink() and only if there
      		was an error - if there was none we simply leave
      		d_delete() to vfs_unlink().
      17191a2c
    • Linus Torvalds's avatar
      Remove extraneous dget/dput pair in vfs_unlink() that · 4161a75e
      Linus Torvalds authored
      confused the NFS client code wrt the exclusiveness of
      a dentry getting removed.
      4161a75e
    • Robert Love's avatar
      [PATCH] Re: "big IRQ lock" removal docs · 30034e56
      Robert Love authored
      One more doc correction while we are at it...
      30034e56
    • Linus Torvalds's avatar
      ee816b81
    • Ingo Molnar's avatar
      [PATCH] "big IRQ lock" removal docs · 6fdf2906
      Ingo Molnar authored
      i've done a minor comment update in softirq.c, plus i've written a
      cli-sti-removal.txt guide to help driver writers do the transition.
      6fdf2906
    • Russell King's avatar
      [PATCH] Serial driver stuff · 33c0d1b0
      Russell King authored
      The serial layer is restructured to allow less code duplication (and
      hence bug duplication) across various serial drivers.  Since ARM adds
      six extra serial drivers, maintaining six copies of serial.c was not
      my idea of fun.
      
      Therefore, we've ended up with a core serial driver, which knows about
      the interactions with the tty layer, and low-level hardware drivers,
      which know all about the hardware.  The interface between the two is
      described in "Documentation/serial/driver".
      
      This patch completely removes the old serial.c driver and its associated
      configuration options, as you requested at KS2002.  We keep a certain
      amount of configuration compatibility with the per-architecture serial.h
      file for the moment; this *will* be killed in the next round of patches.
      The biggest user of this is x86, and since I don't have an x86 box to
      test this stuff on, I think the changes are best kept separate.
      33c0d1b0
    • Ingo Molnar's avatar
      [PATCH] "big IRQ lock" removal, IRQ cleanups · ae86a80a
      Ingo Molnar authored
      This is a massive cleanup of the IRQ subsystem.  It's losely based on
      Linus' original idea and DaveM's original implementation, to fold our
      various irq, softirq and bh counters into the preemption counter.
      
      with this approach it was possible:
      
       - to remove the 'big IRQ lock' on SMP - on which sti() and cli() relied.
      
       - to streamline/simplify arch/i386/kernel/irq.c significantly.
      
       - to simplify the softirq code.
      
       - to remove the preemption count increase/decrease code from the lowlevel
         IRQ assembly code.
      
       - to speed up schedule() a bit.
      
      Global sti() and cli() is gone forever on SMP, there is no more globally
      synchronizing irq-disabling capability.  All code that relied on sti()
      and cli() and restore_flags() must use other locking mechanisms from now
      on (spinlocks and __cli()/__sti()).
      
      obviously this patch breaks massive amounts of code, so only limited
      .configs are working at the moment (UP is expected to be unaffected, but
      SMP will require various driver updates).
      
      The patch was developed and tested on SMP systems, and while the code is
      still a bit rough in places, the base IRQ code appears to be pretty
      robust and clean.
      
      while it boots already so the worst is over, there is lots of work left:
      eg. to fix the serial layer to not use cli()/sti() and bhs ...
      ae86a80a
    • Alexander Viro's avatar
      [PATCH] jffs kdev_t cleanups · 3d37e1e6
      Alexander Viro authored
      In the /proc/fs/jffs/* code we switch to passing number of mtd device
      (as an integer) instead of messing with kdev_t (which would always be
      mk_kdev(MTD_BLOCK_MAJOR, device_number) anyway).
      3d37e1e6
    • Alexander Viro's avatar
      [PATCH] removal of dead prototypes · b1cd8879
      Alexander Viro authored
      Removed prototypes of several functions that do not exist...
      b1cd8879
    • Alexander Viro's avatar
      [PATCH] SCSI ->bios_param() switched to struct block_device * · 25e560ad
      Alexander Viro authored
      ->bios_param() switched from kdev_t to struct block_device *.
      
      Caller and all instances updated.
      25e560ad
    • Alexander Viro's avatar
      [PATCH] paride cleanup and fixes · b92b31a3
      Alexander Viro authored
      somewhat related to the above - drivers/block/paride/* switched to
      module_init()/module_exit(), pd.c taught to use LBA if disks support
      it (needed for paride disks >8Gb; change is fairly trivial and I've
      got 40Gb one ;-)
      b92b31a3
    • Alexander Viro's avatar
      [PATCH] blk_ioctl() not exported anymore · 9d16ed71
      Alexander Viro authored
      blk_ioctl() not exported anymore; calls moved from drivers to block_dev.c.
      9d16ed71
    • Alexander Viro's avatar
      [PATCH] partition handling locking cleanups · 81d4c00c
      Alexander Viro authored
      Horrors with open/reread_partition exclusion are starting to get fixed.
      
      It's not the final variant, but at least we are getting the logics into
      one place; switch to final variant will happen once we get per-disk
      analog of gendisks.  New fields - ->bd_part_sem and ->bd_part_count.
      
      The latter counts the amount of opened partitions.  The former protects
      said count _and_ is held while we are rereading partition tables.
      Helpers - dev_part_lock()/dev_part_unlock() (currently taking kdev_t; that
      will change pretty soon).  No more ->open() and ->release() for partitions,
      all that logics went to generic code.  Lock hierachy is currently messy:
      
        ->bd_sem for partitions -> ->bd_part_sem -> ->bd_sem for entire disks
      
      Ugly, but that'll go away and to get the final variant of locking right
      now would take _really_ big patch - with a lot of steps glued together.
      The damn thing is large as it is...
      81d4c00c
    • Alexander Viro's avatar
      [PATCH] block device size cleanups · 5844ac33
      Alexander Viro authored
      for partitioned devices we use ->nr_sect to find the size; blk_size[] is
      still used for things like floppy.c, etc.; that will go away later.
      
      There was only one place (do_open()) that needed it - the rest uses
      ->bd_inode->i_size now.  So blkdev_size_in_bytes() is gone - it's
      expanded in its only caller.  Same place (do_open()) finds the partition
      offset and stores it in new field ->bd_offset.  As the result, call of
      get_gendisk() is gone from the IO path - in blk_partition_remap() we
      just add ->bd_offset.
      
      Additionally, we take driver probing (get_blkfops()) outside of ->bd_sem
      (again, do_open()) - that will allow to kill ad-hackery in check_partitions()
      (opening bdev by hand).
      5844ac33
    • Alexander Viro's avatar
      [PATCH] partition parsing cleanup · a22f8253
      Alexander Viro authored
      struct gendisk and partition parsers divorced; all these parsers (IBM style,
      disklabel, etc.) just fill the structure they get from check_partitions().
      
      Actual setting the things up (filling hd_struct arrays, telling RAID that
      we had found partitions worth a look, etc.) is taken into check_partitions()
      and done only when we are done with parsing.  Parsers don't know (or care)
      what majors/minors they are dealing with; that knowledge also went to
      check_partitions().
      a22f8253
    • Alexander Viro's avatar
      [PATCH] Use wipe_partitions() where appropriate · d6d4f980
      Alexander Viro authored
      a bunch of places doing invalidate_device() either didn't need it at all
      or actually wanted wipe_partitions().  Switched.
      d6d4f980
    • Alexander Viro's avatar
      [PATCH] make hfs use regular semaphores · a4dea1b6
      Alexander Viro authored
      unrelated to the rest, replaces home-grown (racy) semaphores in fs/hfs
      with the real thing.
      a4dea1b6
    • Linus Torvalds's avatar
      Fix incoherent LDT at mmap exit. · f6daaf1a
      Linus Torvalds authored
      We should _not_ update the current LDT if it's not the current
      MM that we are tearing down.
      f6daaf1a
  3. 20 Jul, 2002 5 commits