1. 30 Dec, 2003 40 commits
    • Linus Torvalds's avatar
      Merge home.osdl.org:/home/torvalds/v2.5/linux · b2e95563
      Linus Torvalds authored
      into home.osdl.org:/home/torvalds/v2.5/akpm
      b2e95563
    • Andrew Morton's avatar
      [PATCH] parisc /proc/interrupts uninitialised var · 1d0990ac
      Andrew Morton authored
      From: James Bottomley <James.Bottomley@SteelEye.com>
      
      The compiler justly complains in this:
      
      	        unsigned int regnr = *(loff_t *) v, i;
      
      	        if (regnr == 0) {
      	                seq_puts(p, "     ");
      	#ifdef CONFIG_SMP
      	                for (i = 0; i < NR_CPUS; i++)
      	#endif
      	                        seq_printf(p, "      CPU%02d ", i);
      
      That i is uninitialised if CONFIG_SMP is not set.
      1d0990ac
    • Andrew Morton's avatar
      [PATCH] readahead: multiple performance fixes · 2fbe6496
      Andrew Morton authored
      From: Ram Pai <linuxram@us.ibm.com>
      
      I have enclosed a patch that fixes a bunch of performance bugs in the
      readahead code.
      
      Below is a brief summary of the problems noticed and the proposed fixes
      with some results:
         
       Problem 1:  Readahead code closes the readahead window and goes into
       slowread path, if a file is accessed the first time at an offset
       notequal to zero.  In the case of databases(especially in db2), a file
       may not be accessed at offset 0 the first time though the i/o's are
       sequential.
      
       Fix to Problem 1:
                min = get_min_readahead(ra);
               orig_next_size = ra-next_size;
      
       -       if (ra-next_size == 0 && offset == 0) {
       +       if (ra-next_size == 0) {
      
      ------------------------------------------------------------------------
      
       ------------------------------------------------------------------------
       Problem 2: After fixing Problem, the readahead window still does not
       open up the first time, if all the pages requested are already in the
       page cache. This time the window closes because of pagecache hits
       instead of misses. To fix this we put in these changes.
      
       -               check_ra_success(ra, ra-size, actual, orig_next_size);
       +               if(!first_access) {
       +                       check_ra_success(ra, ra-size, actual, orig_next_size);
       +               }
      
       ------------------------------------------------------------------------
      
       ------------------------------------------------------------------------
       Problem 3: In the case of large random reads, the readahead window is
       read in, the moment there is a hit in the active window. And it turns
       out that in most of the cases the readahead window gets scrapped,
       because the next large random read does not even touch any of the pages
       in that readahead window. We fixed this by introducing lazy readahead.
       Basically we wait till the last page in the active window gets a hit.
       And once the last page is hit, the readahead window is then read in.
       This fix gave a tremendous boost in the performance.
       To fix this the changes we put in were:
      
                       /*
                        * This read request is within the current window.  It is time
                        * to submit I/O for the ahead window while the application is
                        * crunching through the current window.
                        */
       -               if (ra-ahead_start == 0) {
       +               if (ra-ahead_start == 0 && offset == (ra-start + ra-size -1)) {
      
       ------------------------------------------------------------------------
      
       ------------------------------------------------------------------------
       Problem 4:
             If the request page does not fall in the active window and is not
      the  first page of the read ahead window, we scrap both the active
      window and the readahaed window and read in the active window. But it
      turns out that we read in a lot of pages in the active window based on
      the size of the 'projected readahead window size' (the next_size
      variable). And we end up using part of the active window and waste the
      remaining. We put  in a fix where we read in just as many pages in the
      active window based on the number of pages used in the recent past.
       Again this gave us another big boost in performance and ended up
      beating the performance of aio patch on a DSS workload.
      
       The fix to this is:
                        * ahead window and get some I/O underway for the new
                        * current window.
                        */
       +               if (!first_access && preoffset = ra-start &&
       +                               preoffset < (ra-start + ra-size)) {
       +                       ra-size = preoffset - ra-start + 2;
       +               } else {
       +                       ra-size = ra-next_size;
      
       ------------------------------------------------------------------------
      
       ------------------------------------------------------------------------
       Problem 5:
       With all the above fixes there is very low chance that the readahead
       window shall close.  But however if it does, we found that the slow
       read  path is really slow.  Any loss of sequentiality in the slow read
       path is penalized heavily by closing the window back to zero. So we
       fixed this  by decreasing the window size by one anytime we loose
       sequentiality and  increasing in by 1 if we didn't.
      
                       if (offset != ra-prev_page + 1) {
       -                       ra-size = 0;            /* Not sequential */
       +                       ra-size = ra-size?ra-size-1:0; /*Notsequential */
      
       ------------------------------------------------------------------------
      
      With the above set of fixes we got about 28% improvement in DSS workload
      which is about 5% more than what we got with the suparna's aio patch.
      
      This patch compared equivalent to suparna's aio patch with aio-stress
      run.
      
      It fared better than aio patch for large random io.
      
      We are yet to run a bunch of other benchmarks to evaluate this patch.
      We would like to get your inputs on this patch and any suggestions you
      may have to improve it. I have enclosed a patch with all these changes
      along with some changes to the comments that reflect the new behaviour.
      NOTE: the above patch reverts suparna's aio patch.
      2fbe6496
    • Andrew Morton's avatar
      [PATCH] Fix 2.6.0's broken documentation references · 56d7e6f4
      Andrew Morton authored
      From: Hans Ulrich Niedermann <linux-kernel@n-dimensional.de>
      
      I've noted that 2.6.0 contains broken references to documentation.
      
      I got sufficiently annoyed chasing doc files in the wrong place
      that I wrote a script to check the references to documentation
      files.
      
      Some documentation files have moved (e.g.  Documentation/modules.txt to
      Documentation/kbuild/modules.txt).  I adapted the references with a script.
      56d7e6f4
    • Andrew Morton's avatar
      [PATCH] reiserfs_rename ctime update · 4e2e30bb
      Andrew Morton authored
      From: Nikita Danilov <Nikita@Namesys.COM>
      
      This patches reiserfs_rename.  It adds ctime update of renamed object.  It
      also fixes calculation of maximal possible transaction size during rename.
      
      Thanks to Alex Adriaanse <alex_a@caltech.edu> for finding this.
      4e2e30bb
    • Andrew Morton's avatar
      [PATCH] reiserfs commit_max_age mount option · a8007b5b
      Andrew Morton authored
      From: Nikita Danilov <Nikita@Namesys.COM>
      
      Add "commit" reiserfs mount option to override maximal transaction age. 
      Usage:
      
      mount -treiserfs -ocommit=<time-in-seconds> /device /mountpoint
      
      Submitted by Hugang <hugang@soulinfo.com>.
      a8007b5b
    • Andrew Morton's avatar
      [PATCH] Fix reiserfs handling of `silent' option. · f37b1ef8
      Andrew Morton authored
      From: Nikita Danilov <Nikita@Namesys.COM>
      
      Patch to teach fs/reiserfs/super.c:reiserfs_fill_super() to respect @silent
      parameter and to not issue any output if @silent is set.
      
      Also remove some trailing white spaces, while we are here.
      f37b1ef8
    • Andrew Morton's avatar
      [PATCH] CONFIG_GAMEPORT documentation · 0eeebbed
      Andrew Morton authored
      From: Muli Ben-Yehuda <mulix@mulix.org>
      
      It's messy, and needs describing.
      0eeebbed
    • Andrew Morton's avatar
      [PATCH] Typo: 2.6.0 docs about kbuild. · 31fae3b5
      Andrew Morton authored
      From: BlaisorBlade <blaisorblade_spam@yahoo.it>
      
      This fixes a "typo" for Kconfig-language docs.
      31fae3b5
    • Andrew Morton's avatar
      [PATCH] shrink_slab acounts for seeks incorrectly · c3f46561
      Andrew Morton authored
      wli points out that shrink_slab inverts the sense of shrinker->seeks: those
      caches which require more seeks to reestablish an object are shrunk harder.
      That's wrong - they should be shrunk less.
      
      So fix that up, but scaling the result so that the patch is actually a no-op
      at this time, because all caches use DEFAULT_SEEKS (2).
      c3f46561
    • Andrew Morton's avatar
      [PATCH] log_buf_len_setup() irq fix · 4be16e54
      Andrew Morton authored
      log_buf_len_setup() is called on the start_kernel->parse_args() path.  It
      must not enable interrupts.
      4be16e54
    • Andrew Morton's avatar
      [PATCH] fix pci_update_resource() / IORESOURCE_UNSET on PPC · e6b1fdb7
      Andrew Morton authored
      From: Harald Welte <laforge@gnumonks.org>
      
      [disclaimer:  This was posted on the linuxppc list before, BenH asked me=20
       to re-post it to lkml]
      
      The prism54 (http://prism54.org) driver for my cardbus adapter works
      with 2.4.x, but not 2.6.x on a Titanium G4 Powerbook IV.
      
      On 2.6.x the error message was
      PCI:0001:02:00.0 Resource 0 [00000000-00001fff] is unassigned
      
      After investigating differences in the PCI code of 2.4.x and 2.6.x, i
      noticed that 2.4.x/arc/ppc/kernel/pci.c:pcibios_update_resource()
      contained a couple of lines that unset the IORESOURCE_UNSET bitflag.
      
      In 2.6.x, this is handled by the generic PCI core in
      drivers/pci/setup-res.c:pci_update_resource() code.  However, the code
      is missing the 'res->flags &=3D ~IORESOURCE_UNSET' part.
      
      The below fix re-adds that section from 2.4.x.=20
      
      I'm not sure wether this belongs into the arch-independent PCI api.
      Anyway, on PPC it seems to be needed for certain cardbus devices.
      
      Any comments welcome.
      e6b1fdb7
    • Andrew Morton's avatar
      [PATCH] (workaround): avoid raid1 crash during resync with qlogic controllers · 61179b28
      Andrew Morton authored
      qlogic's 16k maximum I/O size bites again.  Neil says:
      
       The problems we fixed were all to do with normal IO.  This one is resync
       IO.
      
       The problem here is that raid1 always does resync in RESYNC_BLOCK_SIZE
       (=64k) IOs and if the device doesn't cope - tough.
      
       The simple fix is to #define RESYNC_BLOCK_SIZE to PAGE_SIZE in md/raid1.c
      
       The better fix is to rewrite the raid1 resync code to use bio_add_page.
      
       This means we have to build the read request and the write requests at the
       same time, and then when a bio_add_page fails, we back-out the last page
       from the bios that have one too many, and then do the read followed by the
       writes.
      
       I have some code the nearly does this, but I haven't got it actually
       working yet and I am on leave until mid January.
      
       I would recommend doing
      
       fs/drivers/md/raid1.c:
       -#define RESYNC_BLOCK_SIZE (64*1024)
       +#define RESYNC_BLOCK_SIZE PAGE_SIZE
      
       for now.
      61179b28
    • Andrew Morton's avatar
      [PATCH] Remove iso9660 check for sbsector < 660Mb · 88351d38
      Andrew Morton authored
      From: Jon Burgess <mplayer@jburgess.uklinux.net>
      
      The iso9660 filesystem code checks that the "sbsector" option is
      positioned within the first 660Mb of the disk.
      
      Today the iso9660 filesystem is used on DVD's which are much bigger than
      660Mb and this check prevents the sbsector option being used to specify 
      the location of the superblock of multisession DVD's.
      
      With this check removed I can mount the second session on a DVD-R by 
      specifying the sbsector, even though the  firmware on that drive returns
      bogus data for the TOC.
      
      If an invalid large sector number is entered then a "request beyond end 
      of device" error is reported elsewhere in the block code, but appears to
      do no damage.
      88351d38
    • Andrew Morton's avatar
      [PATCH] ALI ircc vendor update (add support for newer chipset) to FIR driver · 9bfed725
      Andrew Morton authored
      From: Alan Cox <alan@redhat.com>
      
      Change by Clear Zhang of ALI
      9bfed725
    • Andrew Morton's avatar
      [PATCH] Fix static build of drivers/mtd/chips/jedec_probe.c · 189fd4bc
      Andrew Morton authored
      From: Bernardo Innocenti <bernie@develer.com>
      
      It needs init.h
      189fd4bc
    • Andrew Morton's avatar
      [PATCH] SubmittingDrivers update · 21c77d06
      Andrew Morton authored
      From: Steven Cole <elenstev@mesatop.com>
      21c77d06
    • Andrew Morton's avatar
      [PATCH] hugepage pagetable freeing fix · eb372d22
      Andrew Morton authored
      From: "Seth, Rohit" <rohit.seth@intel.com>
      
      We recently covered a bug in mm/mmap.c on IA-64.  While unmapping a address
      space, unmap_region calls free_pgtables to possibly free the pages that are
      used for page tables.  Currently no distinction is made between freeing a
      region that is mapped by normal pages vs the pages that are mapped by
      hugepages.  Architecture specific code needs to handle cases where PTEs
      corresponding to a region that is mapped by hugepages is properly getting
      unmapped.  Attached please find a patch that makes the required changes in
      generic part of kernel.  We will need to send a separate IA-64 patch to use
      this new semantics.  Currently, so not to disturb the PPC (as that is the
      only arch that had ARCH_HAS_HUGEPAGE_ONLY_RANGE defined) we are mapping back
      the definition of new function hugetlb_free_pgtables to free_pgtables.
      eb372d22
    • Andrew Morton's avatar
      [PATCH] Check for preemption in kunmap_atomic() · 17095c07
      Andrew Morton authored
      From: Joe Korty <joe.korty@ccur.com>
      
      We need to check whether preemption is needed after reenabling preemption
      in kunmap_atomic().
      17095c07
    • Andrew Morton's avatar
      [PATCH] Fix another dm and bio problem · 655da9eb
      Andrew Morton authored
      From: Mark Haverkamp <markh@osdl.org>
      
      This fixes a problem similar to the patch I submitted on 11/20
      
      http://marc.theaimsgroup.com/?l=linux-kernel&m=106936439707962&w=2
      
      In this case, though, the result is an:
      
      "Incorrect number of segments after building list" message.
      
      The macro __BVEC_START assumes a bi_idx of zero when the dm code can
      submit a bio with a non-zero bi_idx.
      The code has been tested on an 8 way / 8gb OSDL STP machine with a 197G
      lvm volume running dbt2 test.
      655da9eb
    • Andrew Morton's avatar
      [PATCH] Small copy-paste typo in floppy.c · 06004ee5
      Andrew Morton authored
      From: Juergen Quade <quade@hsnr.de>
      
      I just hit a copy-paste typo in floppy.c.
      06004ee5
    • Andrew Morton's avatar
      [PATCH] ppdev MODULES_ALIAS · 25ceff8c
      Andrew Morton authored
      From: Jim Radford <radford@indigita.com>
      
      I finally took the time to figure our why my parallel port wasn't
      working...  here's the patch.
      25ceff8c
    • Andrew Morton's avatar
      [PATCH] change two annoying messages from framebuffer drivers · 0f821f9d
      Andrew Morton authored
      From: Michael Hunold <hunold@convergence.de>
      
      the Linux-on-a-CD system Knoppix has nearly all framebuffer drivers for
      2.4.23 compiled in. Additionally, it surpresses most kernel messages by
      lowering the kernel log level.
      
      Two framebuffer drivers (clgenfb.c and hgafb.c), however, use KERN_ERR
      to say that their particular card has *not* been found which is very
      annoying.
      
      Especially the clgenfb.c driver simply says on bootup:
        >  Couldn't find PCI device
      which can really confuse newbie users.
      
      I've already send a patch that fixes this for 2.4 -- Marcelo and Geert
      Uytterhoeven have already ack'ed it.
      
      The same change should be done for 2.6, too IMHO.
      
      The appended patch replaces two KERN_ERR with KERN_INFO and additionally
      makes the cirrusfb.c message more descriptive.
      0f821f9d
    • Andrew Morton's avatar
      [PATCH] add SpeedStep zero-page usage documentation · bef7c38f
      Andrew Morton authored
      From: "Randy.Dunlap" <rddunlap@osdl.org>
      
      Add Intel SpeedStep zero-page memory usage doc.
      bef7c38f
    • Andrew Morton's avatar
      [PATCH] H8/300 bitops.h update · dce29666
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      * using generic_ffs
      * optimized code
      dce29666
    • Andrew Morton's avatar
      [PATCH] Fix memleak on execve failure · 7764b6de
      Andrew Morton authored
      From: IWAMOTO Toshihiro <iwamoto@valinux.co.jp>
      
      I found linux-2.6.0-test11 leaks memory when execve fails.  I've also
      checked the bitkeeper tree and the problem seems to be unchanged.
      
      The attached patch is a partial backout of bitkeeper rev.  1.87 of
      fs/exec.c.  I guess the original change was a simple mistake.
      (free_arg_pages() is a NOP when CONFIG_MMU is defined).
      7764b6de
    • Andrew Morton's avatar
      [PATCH] lib/inflate.c fix · ab49402d
      Andrew Morton authored
      From: "H. Peter Anvin" <hpa@zytor.com>
      
      This patch fixes the "non-terminating inflate" problem that Russell King
      complained about on LKML earlier today.
      
      I chose to use "goto" much like zlib does, in order to not require
      setjmp/longjmp inside the kernel.  It's a bit ugly, but it also lets each
      function chose how it needs to be terminated on error, which is a good
      thing.
      ab49402d
    • Andrew Morton's avatar
      [PATCH] FAT: Use just printk() instead of unneeded fat_fs_panic() · 0a33358c
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      - uses just printk() instead of unneeded fat_fs_panic()
      - removes the debug printk
      - less verbose on error path
      - uses correct a error number on error path
      0a33358c
    • Andrew Morton's avatar
      [PATCH] FAT: empty path by fat_striptail_len returns the -ENOENT · 26b88587
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      If path length became zero by fat_striptail_len(), this returns the -ENOENT
      as empty path.
      26b88587
    • Andrew Morton's avatar
      [PATCH] FAT: misc cleanups/fixes · 86b94f84
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      fatfs misc cleanups/fixes.
      86b94f84
    • Andrew Morton's avatar
      [PATCH] FAT: Add count of clusters check in fat_fill_super() (7/10) · 2d5acefc
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      This adds the check of count of clusters.  And if it's too big, fat driver
      can't handle it.  So doesn't recognize this as fatfs.
      2d5acefc
    • Andrew Morton's avatar
      [PATCH] FAT: Fix ->prev_free of fat (6/10) · d97a5110
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      The -1 was documented as "there is no hint", so this patch uses -1 instead
      of 0 for FAT32 fsinfo.
      d97a5110
    • Andrew Morton's avatar
      [PATCH] FAT: include/linux/msdos_fs.h cleanup · 5af71cb2
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      include/linux/msdos_fs.h cleanup
      5af71cb2
    • Andrew Morton's avatar
      [PATCH] FAT: trivial printk format fix (4/10) · 002a7d6e
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      Fix printk format
      002a7d6e
    • Andrew Morton's avatar
      [PATCH] FAT: add readv/writev support to FAT (3/10) · 8d15d343
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      For atomicity write, adds readv/writev support to FAT.
      8d15d343
    • Andrew Morton's avatar
      [PATCH] FAT: Fix the tailing dots on the utf8 path (2/10) · e8f2950f
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
            Michal Rokos <m.rokos@sh.cvut.cz>
      
      The problem is: even if vfat_striptail_len() counts len of name without
      trailing dots and sets len to the correct value, utf8_mbstowcs() doesn't
      care about len and takes whole name.  So dirs and files with dots can be
      created on vfat fs.
      e8f2950f
    • Andrew Morton's avatar
      [PATCH] FAT: More relax FATFS validity tests (1/10) · f17963ee
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
            Yokota Hiroshi <yokota@netlab.is.tsukuba.ac.jp>
      
      This patch is required for my 640MB Optical disk.  Because MS windows 95/ME
      based FAT filesystem disk formatter generetes wrong super bloacks.
      f17963ee
    • Andrew Morton's avatar
      [PATCH] init/main.c trivial cleanups · 83a3e44d
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      - remove unused "rows" and "cols"
      - change the 2 variable to static
      83a3e44d
    • Andrew Morton's avatar
      [PATCH] relax check of page/bh state on I/O error · e8640dfa
      Andrew Morton authored
      From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      Suppress a buffer_error() warning which occurs when a page which previously
      had an I/O error gets its buffers stripped.
      e8640dfa
    • Andrew Morton's avatar
      [PATCH] Put fixmaps into /proc/pid/maps via a pseudo-vma · f9a7b4ad
      Andrew Morton authored
      From: David Mosberger <davidm@napali.hpl.hp.com>
      
      This patch makes /proc/PID/maps report the range from FIXADDR_USER_START to
      FIXADDR_USER_END as a final pseudo-vma.  This is consistent with the notion
      that reading /proc/PID/maps tells you about every page containing data that
      the process can in fact access, and with things such as ptrace allowing
      access to this memory.  Without this, userland tools that want to look at all
      of a process's accessible pages need special-case knowledge about things such
      as the vsyscall DSO page.  With this change, existing code that iterates over
      the /proc/PID/maps lines will cover those pages like any other.  For example,
      this lets gdb's "gcore" command synthesize a core file from a live process
      that contains the vsyscall DSO page as a real core dump would, using its
      existing generic iterator code and no new special cases.
      f9a7b4ad