An error occurred fetching the project authors.
  1. 28 May, 2003 1 commit
    • David Woodhouse's avatar
      MTD and JFFS2 update. · 5af017c0
      David Woodhouse authored
       - JFFS2 bugfixes and performance improvements
       - Support for 64-bit flash arrangements
       - Optimise for linear mappings of flash, without out-of-line access functions
       - New map drivers
       - Updated NAND flash support, new board drivers
       - Support for DiskOnChip Millennium Plus and INFTL translation layer
       - Clean up all translation layers with a single blkdev helper library.
       - Fix races in MTD device registration/deregistration
       - Add support for new flash chips
       - Clean up partition parsing code
      
      More detailed comments in per-file changelogs.
      5af017c0
  2. 12 Nov, 2002 1 commit
    • David Woodhouse's avatar
      JFFS2 update. · f662cf7a
      David Woodhouse authored
      Various bugfixes
       -- deadlock in prepare_write() on extension of file fixed.
       -- corruption when reading a page where a multi-page hole ends fixed.
       -- oops on unlink of bad inodes fixed.
       -- allow bi-endian operation; mounting of non-host-endian file system is now possible.
      
      Optimisations
       -- switch to rbtrees for the inode fragment list. O(log n) insertion and lookup now.
       -- avoid checking all data crcs and building fragment trees at scan time. Do it later in GC.
       -- use 'point' method if available to use a pointer directly into the flash chip during
      	scan, rather than always using memcpy into RAM first.
       -- start to track node 'pristine' status, for later use in GC optimisation -- we'll be
      	able to copy those nodes intact without having to read them, decompress and 
      	recompress their payload, etc. Or indeed having to read_inode() their inode. 
       -- fix ordering of work done from kupdated. We now erase a block, mark it free and stick 
      	it on the appropriate list, and go on to the next one. Before, we erased _all_ the
      	pending blocks before marking any of them free, while everyone waited for us.
      f662cf7a
  3. 23 Jul, 2002 3 commits
  4. 30 Apr, 2002 1 commit
    • 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
  5. 12 Mar, 2002 1 commit
    • David Woodhouse's avatar
      Update to 2002-03-12 JFFS2 development tree. Main features: · 79023d0e
      David Woodhouse authored
       - Preliminary version of NAND flash support.
       - Locking documentation and fixes (including BKL removal because it's superfluous).
       - Performance improvements - especially for mount time. 
       - Annoying stuff like i_nlink on directories fixed.
       - Portability cleanups.
      79023d0e
  6. 26 Feb, 2002 1 commit
    • Dave Jones's avatar
      [PATCH] updates. · 34a7eea9
      Dave Jones authored
      Forward ports from 2.4, Various janitor bits, and some fixes by me to
      make the thing work again in 2.5.  I munged the MTDRAM driver to work
      also (seperate patch to follow), and it seems to work.
      
      David Woodhouse gave this the once over, and approved the changes.
      Complete changelog below:
      
      o   Don't create two slabcaches with the same name.
      o   Don't corrupt eraseblock lists on mount
      o   Don't mark nodes obsolete during mount
      o   __attribute__((packed)) on the node definitions.
      o   Fix up() without down() in jffs2_readdir().
      o   Fix duplicate version number usage - s/highest_version++/++highest_version/
      o   Fix (i.e. implement) mtime/ctime on directories.
          maybe too busy with the bk stuff
      o   Don't allow hardlinks of directories.
      o   s/(mode&S_IFMT)==S_IFLNK/S_ISLNK(mode)/ et al to keep Al happy.
      o   Fix for garbage-collection of holes, where we used to write nodes out
          with csize/dsize swapped. Workarounds for existing such brokenness.
      o   Improve wear levelling by rotating node lists on mount, to avoid starting
           at one end of the flash every time.
      o   Remember to get internal inode-semaphore on symlink operations.
      34a7eea9
  7. 09 Feb, 2002 1 commit
  8. 05 Feb, 2002 4 commits
    • Linus Torvalds's avatar
      v2.5.1.11 -> v2.5.2 · 5fb612aa
      Linus Torvalds authored
      - Matt Domsch: combine common crc32 library
      - Pete Zaitcev: ymfpci update
      - Davide Libenzi: scheduler improvements
      - Al Viro: almost there: "struct block_device *" everywhere
      - Richard Gooch: devfs cpqarray update, race fix
      - Rusty Russell: PATH_MAX should include the final '0' count
      - David Miller: various random updates (mainly net and sparc)
      5fb612aa
    • Linus Torvalds's avatar
      v2.5.1.6 -> v2.5.1.7 · 39769961
      Linus Torvalds authored
      - Jeff Garzik: fix up loop and md for struct kdev_t typechecking
      - Jeff Garzik: improved old-tulip network driver
      - Arnaldo: more scsi driver bio updates
      - Kai Germaschewski: ISDN updates
      - various: kdev_t updates
      39769961
    • Linus Torvalds's avatar
      v2.4.10.3 -> v2.4.10.4 · 1d23a518
      Linus Torvalds authored
        - Al Viro: separate out superblocks and FS namespaces: fs/super.c fathers
        fs/namespace.c
        - David Woodhouse: large MTD and JFFS[2] update
        - Marcelo Tosatti: resurrect oom handling
        - Hugh Dickins: add_to_swap_cache racefix cleanup
        - Jean Tourrilhes: IrDA update
        - Martin Bligh: support clustered logical APIC for >8 CPU x86 boxes
        - Richard Henderson: alpha update
      1d23a518
    • Linus Torvalds's avatar
      v2.4.9.9 -> v2.4.9.10 · c37fa164
      Linus Torvalds authored
        - Alan Cox: continued merging
        - Mingming Cao: make msgrcv/shmat check the queue/segment ID's properly
        - Greg KH: USB serial init failure fix, Xircom serial converter driver
        - Neil Brown: nsfd/raid/md/lockd cleanups
        - Ingo Molnar: multipath RAID personality, raid xor update
        - Hugh Dickins/Marcelo Tosatti: swapin read-ahead race fix
        - Vojtech Pavlik: fix up some of the infrastructure for x86-64
        - Robert Love: AMD 761 AGP GART support
        - Jens Axboe: fix SCSI-generic queue handling race
        - me: be sane about page reference bits
      c37fa164