An error occurred fetching the project authors.
  1. 04 Jul, 2003 1 commit
    • Trond Myklebust's avatar
      [PATCH] Pass 'nameidata' to ->create() · 675b5da0
      Trond Myklebust authored
        - Make the VFS pass the struct nameidata as an optional argument
          to the create inode operation.
        - Patch vfs_create() to take a struct nameidata as an optional
          argument.
      675b5da0
  2. 30 Apr, 2002 2 commits
    • 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] cleanup page flags · aa78091f
      Andrew Morton authored
      page->flags cleanup.
      
      Moves the definitions of the page->flags bits and all the PageFoo
      macros into linux/page-flags.h.  That file is currently included from
      mm.h, but the stage is set to remove that and include page-flags.h
      direct in all .c files which require that.  (120 of them).
      
      The patch also makes all the page flag macros and functions consistent:
      
      For PG_foo, the following functions are defined:
      
      	SetPageFoo
      	ClearPageFoo
      	TestSetPageFoo
      	TestClearPageFoo
      	PageFoo
      
      and that's it.
      
      - Page_Uptodate is renamed to PageUptodate
      
      - LockPage is removed.  All users updated to use SetPageLocked
      
      - UnlockPage is removed.  All callers updated to use unlock_page().
        it's a real function - there's no need to hide that fact.
      
      - PageTestandClearReferenced renamed to TestClearPageReferenced
      
      - PageSetSlab renamed to SetPageSlab
      
      - __SetPageReserved is removed.  It's an infinitesimally small
         microoptimisation, and is inconsistent.
      
      - TryLockPage is renamed to TestSetPageLocked
      
      - PageSwapCache() is renamed to page_swap_cache(), so it doesn't
        pretend to be a page->flags bit test.
      aa78091f
  3. 09 Feb, 2002 1 commit
  4. 05 Feb, 2002 4 commits
    • Linus Torvalds's avatar
      v2.4.9.2 -> v2.4.9.3 · df038637
      Linus Torvalds authored
        - Johannes Erdfelt, Oliver Neukum: USB printer driver race fix
        - John Byrne: fix stupid i386-SMP irq stack layout bug
        - Andreas Bombe, me: yenta IO window fix
        - Neil Brown: raid1 buffer state fix
        - David Miller, Paul Mackerras: fix up sparc and ppc respectively for kmap/kbd_rate
        - Matija Nalis: umsdos fixes, and make it possible to boot up with umsdos
        - Francois Romieu: fix bugs in dscc4 driver
        - Andy Grover: new PCI config space access functions (eventually for ACPI)
        - Albert Cranford: fix incorrect e2fsprog data from ver_linux script
        - Dave Jones: re-sync x86 setup code, fix macsonic kmalloc use
        - Johannes Erdfelt: remove obsolete plusb USB driver
        - Andries Brouwer: fix USB compact flash version info, add blksize ioctls
      df038637
    • Linus Torvalds's avatar
      v2.4.9 -> v2.4.9.1 · f7bad91d
      Linus Torvalds authored
        - Jeff Hartmann: DRM AGP/alpha cleanups
        - Ben LaHaise: highmem user pagecopy/clear optimization
        - Vojtech Pavlik: VIA IDE driver update
        - Herbert Xu: make cramfs work with HIGHMEM pages
        - David Fennell: awe32 ram size detection improvement
        - Istvan Varadi: umsdos EMD filename bug fix
        - Keith Owens: make min/max work for pointers too
        - Jan Kara: quota initialization fix
        - Brad Hards: Kaweth USB driver update (enable, and fix endianness)
        - Ralf Baechle: MIPS updates
        - David Gibson: airport driver update
        - Rogier Wolff: firestream ATM driver multi-phy support
        - Daniel Phillips: swap read page referenced set - avoid swap thrashing
      f7bad91d
    • Linus Torvalds's avatar
      v2.4.2.2 -> v2.4.2.3 · b56566c6
      Linus Torvalds authored
        - Alan Cox: continued merging
        - Urban Widmark: smbfs fix (d_add on already hashed dentry - no-no).
        - Andrew Morton: 3c59x update
        - Jeff Garzik: network driver cleanups and fixes
        - Gérard Roudier: sym-ncr drivers update
        - Jens Axboe: more loop cleanups and fixes
        - David Miller: sparc update, some networking fixes
      b56566c6
    • Linus Torvalds's avatar
      Import changeset · 7a2deb32
      Linus Torvalds authored
      7a2deb32