1. 30 Apr, 2002 40 commits
    • Jean Tourrilhes's avatar
      irda update 6/7: · e0554fd4
      Jean Tourrilhes authored
              o [CORRECT] Cancel LSAP watchdog when putting socket back to listen
              o [CORRECT] Try to close LAP when closing LSAP still active
                      <Following patch from Felix Tang>
              o [CORRECT] Header fix for compile on Alpha architecture
      e0554fd4
    • Jean Tourrilhes's avatar
      irda update 5/7: · 752d3f60
      Jean Tourrilhes authored
      o [CORRECT] Load dongle module with irq disabled in irtty
      752d3f60
    • Jean Tourrilhes's avatar
      irda update 4/7: · 177030c3
      Jean Tourrilhes authored
      o [FEATURE] Dongle driver for mcp2120/crystal hardware
      177030c3
    • Jean Tourrilhes's avatar
      irda update 3/7: · ad7e3eda
      Jean Tourrilhes authored
              o [FEATURE] Replace interruptible_sleep_on() with wait_event().
                      Most races were taken care off, but cleaner anyway
      ad7e3eda
    • Jean Tourrilhes's avatar
      irda update 2/7: · d8fd01e8
      Jean Tourrilhes authored
              o [CORRECT] Fix race condition when starting todo timer
              o [CORRECT] Fix race condition when stopping higher layer
                      Higher layer would think it is stopped and us it is started
              o [CORRECT] Give credit even if packets in Tx queue
                      If Tx queue was stopped, could starve peer and deadlock
              o [CORRECT] Protect Rx credit update with spinlock
              o [CORRECT] Calculate properly self->avail_credit
                      Didn't take into account queued Rx fragments
                      Incremented even if Rx frame not delivered to higher layer
                      -> would never stop the peer (i.e. not flow control)
                      -> could become infinite
              o [CORRECT] Send credit when higher layer reenable receive
                      Peer wouldn't restart Tx to us if flow stopped
              o [FEATURE] Implement LAP queue not full notification
                      Lower latency, ...
              o [FEATURE] Reduce Tx queue to 8 packets (from 10)
                      But make sure we can always send a full LAP window (7)
              o [FEATURE] Fix and optimise TTP flow control
                      Make sure peer can always send a full LAP window (7)
                      Minimise explicit credit updates (give_credit)
              o [FEATURE] Remove need for todo timer in Tx/Rx paths
                      Less potential races, lower latency, lower context switches
                      Could not use tasklet because broken API, better anyway ;-)
      d8fd01e8
    • Jean Tourrilhes's avatar
      irda update 1/7: · 4b1a0f62
      Jean Tourrilhes authored
              o [FEATURE] Reduce LAP Tx queue to 2 packets (from 10)
                      Improve latency, reduce buffer usage
              o [FEATURE] LAP Tx queue not full notification (flow start)
                      Poll higher layer to fill synchronously LAP window (7 packets)
              o [FEATURE] LMP LSAP scheduler
                      Ensure Tx fairness between LSAPs (sockets, IrCOMM, IrNET...)
      4b1a0f62
    • Linus Torvalds's avatar
      Fix PIIX bugs from merge · afae6f7c
      Linus Torvalds authored
      afae6f7c
    • Maksim Krasnyanskiy's avatar
      [PATCH] 2.5.x TUN/TAP driver readv/writev support · 7769f772
      Maksim Krasnyanskiy authored
      This adds proper support for readv/writev in the TUN/TAP driver.
      7769f772
    • Linus Torvalds's avatar
      Automerge · 4293dac3
      Linus Torvalds authored
      4293dac3
    • Linus Torvalds's avatar
      Merge http://linux-isdn.bkbits.net/linux-2.5.make-sound · 3b5ebe0a
      Linus Torvalds authored
      into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
      3b5ebe0a
    • Linus Torvalds's avatar
      Merge http://linux-isdn.bkbits.net/linux-2.5.isdn · 5cacfc4f
      Linus Torvalds authored
      into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
      5cacfc4f
    • Linus Torvalds's avatar
      Automerge · c2050b96
      Linus Torvalds authored
      c2050b96
    • Linus Torvalds's avatar
      Automerge · c0e0225b
      Linus Torvalds authored
      c0e0225b
    • Linus Torvalds's avatar
      Automerge · 50506fd0
      Linus Torvalds authored
      50506fd0
    • David Gibson's avatar
      [PATCH] orinoco driver update · 8cd05eff
      David Gibson authored
      The following patch against 2.5.11 updates the orinoco driver.  As well
      as miscellaneous updates to the driver core it adds a new module
      supporting Prism 2.5 based PCI wireless cards, and adds a MAINTAINERS
      entry for the driver.
      8cd05eff
    • Frank Davis's avatar
      [PATCH] 2.5.11 : drivers/net/ppp_generic.c · 3f64554f
      Frank Davis authored
      Linus,
        During a 'make bzImage', I received a warning on ppp_generic.c that ret
      wasn't initialized (also for 2.5.10). I have attached a patch that sets
      ret = count, thus removing the warning. Please review for inclusion.
      
      Regards,
      Frank
      3f64554f
    • Linus Torvalds's avatar
      Merge http://linux-isdn.bkbits.net/linux-2.5.make · feca11e9
      Linus Torvalds authored
      into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
      feca11e9
    • Robert Love's avatar
      [PATCH] sched cleanup, comments, separate max prios · a4da60b5
      Robert Love authored
      Attached patch is a resync of previous patches sent by Ingo and I.
      Specifically:
      
      	- create new MAX_USER_RT_PRIO value
      	- separate uses of MAX_RT_PRIO vs MAX_USER_RT_PRIO
      	- replace use of magic numbers by above
      	- additional comments
      a4da60b5
    • Paul Fulghum's avatar
      [PATCH] 2.5.11 synclink.h · 2dba8370
      Paul Fulghum authored
      This patch to synclink.h against 2.5.11 is required
      for the synclink_cs.c driver to compile.
      2dba8370
    • Brian Gerst's avatar
      [PATCH] Removing SYMBOL_NAME part 6 · ee2a8d65
      Brian Gerst authored
      Last remaining instances removed.
      ee2a8d65
    • Linus Torvalds's avatar
      Merge · 8a909307
      Linus Torvalds authored
      8a909307
    • Jaroslav Kysela's avatar
      [PATCH] Re: ALSA patch.. · fb7545b3
      Jaroslav Kysela authored
      I overlooked these single line changes.  Here are next corrections
      against ChangeSet 1.547:
      fb7545b3
    • Linus Torvalds's avatar
      Fix broken sound print macros · f1e0bf4e
      Linus Torvalds authored
      f1e0bf4e
    • Linus Torvalds's avatar
      update x86 defconfig · 8c93aa4e
      Linus Torvalds authored
      8c93aa4e
    • Linus Torvalds's avatar
      Move BKL into readdir for ntfs-tng · 43fc2ec9
      Linus Torvalds authored
      43fc2ec9
    • Dave Hansen's avatar
      [PATCH] shift BKL out of vfs_readdir · ec3630a1
      Dave Hansen authored
      This patch takes the BKL out of vfs_readdir() and moves it into the
      individual filesystems, all 35 of them.  I have the feeling that this
      wasn't done before because there are a lot of these to change and it was
      a pain to find them all.  I definitely got all of those that were
      defined in the in the structure declaration like this "readdir:
      fs_readdir;" vxfs_readdir was assigned strangely, but I found it anyway.
      I also left devfs out of this one.  Richard seems confident that devfs
      has no need for the BKL.
      ec3630a1
    • Linus Torvalds's avatar
      Update kernel version · 934ddeab
      Linus Torvalds authored
      934ddeab
    • Martin Dalecki's avatar
      [PATCH] 2.5.11 IDE 48 · 4507e7c8
      Martin Dalecki authored
      Tue Apr 30 13:23:13 CEST 2002 ide-clean-48
      
      This fixes the "performance" degradation partially, becouse we don't
      miss that many jiffies in choose_urgent_device() anymore.  However
      choose_urgent_device has to be fixed for the off by one error to don't
      loop for a whole 1/100 second before submitting the next request.
      
      - Include small declaration bits for Jens. (WIN_NOP fix in esp.)
      
      - Fix ide-pmac to conform to the recent API changes.
      
      - Prepare and improve the handling of the request queue. It sucks now as many
         request as possible. This is improving the performance.
      4507e7c8
    • Martin Dalecki's avatar
      [PATCH] 2.5.11 IDE 47 · f7520fcf
      Martin Dalecki authored
      - Rewrite choose_drive() to iterate explicitely over the channels and devices
          on them. It is not performance critical to iterate over this typically quite
          small array of disks and allows us to let them act on the natural entity,
          namely the channel as well as to remove the drive->next field from struct
          ata_device.  Make the device eviction code in ide_do_request() more
          intelliglible.  Add some comments explaining the reasoning behind the code
          there.
      
      - Now finally since the code for choosing the drive which will be serviced next
          is intelliglibly it became obvious that the attempt to choose the next drive
          based on the duration of the last request was entierly bogous. (Because for
          example wakeups can take a long time, but this doesn't indicate that the
          drive is slow.) Remove this criterium and the corresponding accounting
          therefore. Threat all drives fairly right now.
      
      Surprise surprise the overall system throughput increased :-).
      f7520fcf
    • Martin Dalecki's avatar
      [PATCH] 2.5.11 IDE 46 · 4a58bd1a
      Martin Dalecki authored
      - Remove the specific CONFIG_IDEDMA_PCI_WIP in favor of using the generic
         CONFIG_EXPERIMENTAL tag. (Pointed out by Vojtech Pavlik).
      
      - Change the signature of the IRQ handler to take the request directly as a
         parameter. This doesn't blow the code up but makes it much more obvious and
         finally it's reducing the number of side effects of the hwgroup->rq field.
      
      - A second sharp look after the above change allowed us to remove the wrq field
         from the hwgroup struct. It's just not used at all.
      
      - Change the signature of the end_request member of struct ata_operations to
         take the request as a second argument. Similar for __ide_end_request()
         and ide_end_request().
      
      - Remove BUG_ON() items just before ide_set_handler(). The check in
         ide_set_handler is clever enough now.
      
      - Remove the rq subfield from ide-scsi packet structure. We have now the
         request context always in place. Same for floppy.
      
      - Let the timer expiry function take the request as a direct argument.
      
      Yes I know those changes are extensive. But they are a necessary step
      in between for the following purposes:
      
      - Consolidate the whole ATA/ATAPI stuff on passing a single unified request
         handling object. Because after eliminating those side effects it's far easier
         to see what's passed where.
      
      - Minimizing the amount of side effects in the overall code. That's a good
         thing anyway and it *doesn't* cost us neither performance nor space, since
         the stack depths are small anyway here.
      
      - Minimizing the usage of hwgroup - which should go away if possible.
      4a58bd1a
    • Andrew Morton's avatar
      [PATCH] cleanup sync_buffers() · b960fa03
      Andrew Morton authored
      Renames sync_buffers() to sync_blockdev() and removes its (never used)
      second argument.
      
      Removes fsync_no_super() in favour of direct calls to sync_blockdev().
      b960fa03
    • Andrew Morton's avatar
      [PATCH] page writeback locking update · a2bcb3a0
      Andrew Morton authored
      - Fixes a performance problem - callers of
        prepare_write/commit_write, etc are locking pages, which synchronises
        them behind writeback, which also locks these pages.  Significant
        slowdowns for some workloads.
      
      - So pages are no longer locked while under writeout.  Introduce a
        new PG_writeback and associated infrastructure to support this design
        change.
      
      - Pages which are under read I/O still use PageLocked.  Pages which
        are under write I/O have PageWriteback() true.
      
        I considered creating Page_IO instead of PageWriteback, and marking
        both readin and writeout pages as PageIO().  So pages are unlocked
        during both read and write.  There just doesn't seem a need to do
        this - nobody ever needs unblocking access to a page which is under
        read I/O.
      
      - Pages under swapout (brw_page) are PageLocked, not PageWriteback.
        So their treatment is unchangeded.
      
        It's not obvious that pages which are under swapout actually need
        the more asynchronous behaviour of PageWriteback.
      
        I was setting the swapout pages PageWriteback and unlocking them
        prior to submitting the buffers in brw_page().  This led to deadlocks
        on the exit_mmap->zap_page_range->free_swap_and_cache path.  These
        functions call block_flushpage under spinlock.  If the page is
        unlocked but has locked buffers, block_flushpage->discard_buffer()
        sleeps.  Under spinlock.  So that will need fixing if for some reason
        we want swapout to use PageWriteback.
      
        Kernel has called block_flushpage() under spinlock for a long time.
         It is assuming that a locked page will never have locked buffers.
        This appears to be true, but it's ugly.
      
      - Adds new function wait_on_page_writeback().  Renames wait_on_page()
        to wait_on_page_locked() to remind people that they need to call the
        appropriate one.
      
      - Renames filemap_fdatasync() to filemap_fdatawrite().  It's more
        accurate - "sync" implies, if anything, writeout and wait.  (fsync,
        msync) Or writeout.  it's not clear.
      
      - Subtly changes the filemap_fdatawrite() internals - this function
        used to do a lock_page() - it waited for any other user of the page
        to let go before submitting new I/O against a page.  It has been
        changed to simply skip over any pages which are currently under
        writeback.
      
        This is the right thing to do for memory-cleansing reasons.
      
        But it's the wrong thing to do for data consistency operations (eg,
        fsync()).  For those operations we must ensure that all data which
        was dirty *at the time of the system call* are tight on disk before
        the call returns.
      
        So all places which care about this have been converted to do:
      
      	filemap_fdatawait(mapping);	/* Wait for current writeback */
      	filemap_fdatawrite(mapping);	/* Write all dirty pages */
      	filemap_fdatawait(mapping);	/* Wait for I/O to complete */
      
      - Fixes a truncate_inode_pages problem - truncate currently will
        block when it hits a locked page, so it ends up getting into lockstep
        behind writeback and all of the file is pointlessly written back.
      
        One fix for this is for truncate to simply walk the page list in the
        opposite direction from writeback.
      
        I chose to use a separate cleansing pass.  It is more
        CPU-intensive, but it is surer and clearer.  This is because there is
        no reason why the per-address_space ->vm_writeback and
        ->writeback_mapping functions *have* to perform writeout in
        ->dirty_pages order.  They may choose to do something totally
        different.
      
        (set_page_dirty() is an a_op now, so address_spaces could almost
        privatise the whole dirty-page handling thing.  Except
        truncate_inode_pages and invalidate_inode_pages assume that the pages
        are on the address_space lists.  hmm.  So making truncate_inode_pages
        and invalidate_inode_pages a_ops would make some sense).
      a2bcb3a0
    • Andrew Morton's avatar
      [PATCH] hashed b_wait · f15fe424
      Andrew Morton authored
      Implements hashed waitqueues for buffer_heads.  Drops twelve bytes from
      struct buffer_head.
      f15fe424
    • Andrew Morton's avatar
      [PATCH] cleanup of bh->flags · 39e8cdf7
      Andrew Morton authored
      Moves all buffer_head-related stuff out of linux/fs.h and into
      linux/buffer_head.h.  buffer_head.h is currently included at the very
      end of fs.h.  So it is possible to include buffer_head directly from
      all .c files and remove this nested include.
      
      Also rationalises all the set_buffer_foo() and mark_buffer_bar()
      functions.  We have:
      
      	set_buffer_foo(bh)
      	clear_buffer_foo(bh)
      	buffer_foo(bh)
      
      and, in some cases, where needed:
      
      	test_set_buffer_foo(bh)
      	test_clear_buffer_foo(bh)
      
      And that's it.
      
      BUFFER_FNS() and TAS_BUFFER_FNS() macros generate all the above real
      inline functions.  Normally not a big fan of cpp abuse, but in this
      case it fits.  These function-generating macros are available to
      filesystems to expand their own b_state functions.  JBD uses this in
      one case.
      39e8cdf7
    • Andrew Morton's avatar
      [PATCH] remove show_buffers() · 411973b4
      Andrew Morton authored
      Remove show_buffers().  It really has nothing to show any more.  just
      buffermem_pages() - move that out into the callers.
      
      There's a lot of duplication in this code.  better approach would be to
      remove all the duplicated code out in the architectures and implement
      generic show_memory_state().  Later.
      411973b4
    • Andrew Morton's avatar
      [PATCH] remove PG_skip · 8dcf47bd
      Andrew Morton authored
      Remove PG_skip.  Nothing is using it (the change was acked by rmk a
      while back)
      8dcf47bd
    • Andrew Morton's avatar
      [PATCH] remove i_dirty_data_buffers · 7d513234
      Andrew Morton authored
      Removes inode.i_dirty_data_buffers.  It's no longer used - all dirty
      buffers have their pages marked dirty and filemap_fdatasync() /
      filemap_fdatawait() catches it all.
      
      Updates all callers.
      
      This required a change in JFS - it has "metapages" which
      are a container around a page which holds metadata.  They
      were holding these pages locked and were relying on fsync_inode_data_buffers
      for writing them out.  So fdatasync() deadlocked.
      
      I've changed JFS to not lock those pages.  Change was acked
      by Dave Kleikamp <shaggy@austin.ibm.com> as the right
      thing to do, but may not be complete.  Probably igrab()
      against ->host is needed to pin the address_space down.
      7d513234
    • Andrew Morton's avatar
      [PATCH] remove buffer head b_inode · df6867ef
      Andrew Morton authored
      Removal of buffer_head.b_inode.  The list_emptiness of b_inode_buffers
      is used to indicate whether the buffer is on an inode's
      i_dirty_buffers.
      df6867ef
    • Andrew Morton's avatar
      [PATCH] cleanup write_one_page · 59c39e8e
      Andrew Morton authored
      Remove writeout_one_page(), waitfor_one_page() and the now-unused
      generic_buffer_fdatasync().
      
      Add new
      
      	write_one_page(struct page *page, int wait)
      
      which is exported to modules.  Update callers to use that.  It's only
      used for IS_SYNC operations.
      59c39e8e
    • Andrew Morton's avatar
      [PATCH] cleanup page_swap_cache · cc6a392a
      Andrew Morton authored
      Removes some redundant BUG checks - trueness of PageSwapCache() implies
      that page->mapping is non-NULL, and we've already checked that.
      cc6a392a