1. 18 Jun, 2004 1 commit
    • Chris Mason's avatar
      [PATCH] reiserfs: block allocator optimizations · 734db689
      Chris Mason authored
      
      From: <mason@suse.com>
      From: <jeffm@suse.com>
      
      The current reiserfs allocator pretty much allocates things sequentially
      from the start of the disk, it works very nicely for desktop loads but
      once you've got more then one proc doing io data files can fragment badly.
      
      One obvious solution is something like ext2's bitmap groups, which puts
      file data into different areas of the disk based on which subdirectory
      they are in.  The problem with bitmap groups is that if you've got a
      group of subdirectories their contents will be spread out all over the
      disk, leading to lots of seeks during a sequential read.
      
      This allocator patch uses the packing locality to determine which bitmap
      group to allocate from, but when you create a file it looks in the bitmaps
      to see how 'full' that packing locality already is.  If it hasn't been
      heavily used yet, the packing locality is inherited from the parent
      directory putting files in new subdirs close to the parent subdir,
      otherwise it is the inode number of the parent directory putting new
      files far away from the parent subdir.
      
      The end result is fewer bitmap groups for the same working set.  For
      example, one test data set created by 20 procs running in parallel has
      6822 subdirs.  And with vanilla reiserfs that would mean 6822
      packing localities.  This patch turns that into 26 packing localities.
      
      This makes sequential reads of big directory trees more efficient, but
      it also makes the btree more efficient in general.  Things end up sorted
      better because groups of subdirs end up with similar keys in the btree,
      instead of being spread out all over.
      
      The bitmap grouping code tries to use the start of each bitmap group
      for metadata, and offsets the data slightly.  The data and metadata
      are still close together, but not completely intermixed like they are
      in the default allocator.  The end result is that leaf nodes tend to be
      close to each other, making metadata readahead more effective.
      
      The old block allocator had the ability to enforce a minimum
      allocation size, but did not use it.  It now tries to do a pass looking
      for larger allocation chunks before falling back to the old behaviour
      of taking any blocks it can find.
      
      The patch changes the defaults to:
      
      mount -o alloc=skip_busy:dirid_groups:packing_groups
      
      You can get back the old behaviour with mount -o alloc=skip_busy
      
      mount -o alloc=dirid_groups will turn on the bitmap groups
      mount -o alloc=packing_groups turns on the packing locality reduction code
      mount -o alloc=skip_busy:dirid_groups turns on both dirid_groups and
      skip_busy
      
      Finally the patch adds a mount -o alloc=oid_groups, which puts files into
      bitmap groups based on a hash of their objectid.  This would be used for
      databases or other situations where you have a limited number of very
      large files.
      
      This command will tell you how many packing localities are actually in
      use:
      
      debugreiserfs -d /dev/xxx | grep '^|.*SD' | sed 's/^.....//' | awk '{print $1}' | sort -u | wc -l
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      734db689
  2. 10 May, 2004 5 commits
    • Andrew Morton's avatar
      [PATCH] reiserfs: add device info to diagnostic messages · 9511c080
      Andrew Morton authored
      From: Chris Mason <mason@suse.com>
      
      From: Jeff Mahoney <jeffm@suse.com>
      
      Add device info to the various reiserfs warnings and panics so you can tell
      which filesystem triggers the message.  Loosely based on code from Oleg
      Drokin.
      9511c080
    • Andrew Morton's avatar
      [PATCH] reiserfs: quota support · 446a7461
      Andrew Morton authored
      From: Chris Mason <mason@suse.com>
      
      ReiserFS support for quotas.  Originally from Jan Kara
      446a7461
    • Andrew Morton's avatar
      [PATCH] reiserfs: ACL support · 0acef032
      Andrew Morton authored
      From: Chris Mason <mason@suse.com>
      
      From: jeffm@suse.com
      
      reiserfs acl support
      0acef032
    • Andrew Morton's avatar
      [PATCH] reiserfs: xattr support · 0b1a6a8c
      Andrew Morton authored
      From: Chris Mason <mason@suse.com>
      
      From: jeffm@suse.com
      
      reiserfs support for xattrs
      0b1a6a8c
    • Andrew Morton's avatar
      [PATCH] Reiserfs commit default fix · bb0ad0aa
      Andrew Morton authored
      From: Bart Samwel <bart@samwel.tk>
      
      This patch from Micha Feigin fixes some bugs in the earlier reiserfs 
      commit default patch. The changelog:
      
      * If you remounted without any commit=NNN option, it would assume commit=0
        and restore the defaults.  This patch makes it leave the current state alone
        if you don't pass commit=NNN.
      
      * Added range check for cast from unsigned long to unsigned int.
      bb0ad0aa
  3. 21 Apr, 2004 1 commit
  4. 17 Apr, 2004 1 commit
    • Andrew Morton's avatar
      [PATCH] Add "commit=0" to reiserfs · c4373a9a
      Andrew Morton authored
      From: Bart Samwel <bart@samwel.tk>
      
      Add support for value 0 to the commit option of reiserfs.  Means "restore
      to the default value".  For the maximum commit age, this default value is
      normally read from the journal; this patch adds an extra variable to cache
      the default value for the maximum commit age.
      c4373a9a
  5. 12 Apr, 2004 4 commits
  6. 30 Dec, 2003 2 commits
    • 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
  7. 18 Nov, 2003 1 commit
    • Andrew Morton's avatar
      [PATCH] reiserfs pinned buffer fix · 53d3e207
      Andrew Morton authored
      From: Oleg Drokin <green@linuxhacker.ru>
      
      reiserfs shouldn't be holding a ref against a buffer when running
      set_blocksize(): it means that truncate_inode_pages() cannot free that page.
      
      Which is not fatal - the page will drift aimlessly down the LRU until the VM
      nails it.   But it's better this way.
      53d3e207
  8. 23 Sep, 2003 1 commit
    • Alexander Viro's avatar
      [PATCH] prepare for 32-bit dev_t: reiserfs/procfs.c · 845602f8
      Alexander Viro authored
      	fs/reiserfs/procfs.c made sane.  It used to store dev_t of filesystem
      in the proc_dir_entry->data (which is void *) and played very odd games after
      that.
      	Switched to seq_file, stores pointer to superblock, uses sget() to
      validate it, avoids use of dev_t completely.
      845602f8
  9. 21 Sep, 2003 1 commit
    • Andrew Morton's avatar
      [PATCH] reiserfs: add checks from 2.4 into 2.5 · f4f81223
      Andrew Morton authored
      From: Oleg Drokin <green@namesys.com>
      
      This patch adds more consistency checks to reiserfs (check that transaction
      is not bigger than journal, check that we reply blocks not beyond fs and
      check that fs fits the block device).  Similar patch was included into 2.4
      some time ago.
      f4f81223
  10. 07 Aug, 2003 1 commit
    • Andrew Morton's avatar
      [PATCH] reiserfs: fix savelinks on bigendian arches · 3491b2bc
      Andrew Morton authored
      From: Oleg Drokin <green@namesys.com>
      
      This small patch fixes a savelinks problem on bigendian platforms, where
      savelinks were not working at all because of incorrect cpu->disk endianness
      conversion.
      
      Savelinks are used on reiserfs to remember "truncate" and "unlink" events
      so that if crash happens in the middle of truncate/unlink, we do not endup
      with lost or half truncated files.
      3491b2bc
  11. 20 Jun, 2003 1 commit
    • Andrew Morton's avatar
      [PATCH] Add system calls statfs64 and fstatfs64 · 244f3626
      Andrew Morton authored
      From: Peter Chubb <peter@chubb.wattle.id.au>
      
      Add two new system calls, statfs64 and fstatfs64.  This has been needed
      sincew the 64-bit sector_t merge - the current structures will overflow.
      
      - Use a common interface (vfs_statfs) with the rest of the kernel,
      
      - convert to 32-bit at (f)statfs time.
      
      - New field f_frsize gives underlying fragment size for the filesystem.
        (Solaris has this, and the Open Group describe it).
      
      - The old statfs syscalls will now return -EOVERFLOW if the device was
        too large to be represented inthe old data structures.
      
      The new system calls take a size_t argument, which is the size of the
      structure to be filled in (as requested by Ben LaHaise), to `futureproof' the
      interface.
      
      Has been reviewed by the arch maintainers and by Ulrich Drepper.
      244f3626
  12. 04 Jun, 2003 2 commits
    • Andrew Morton's avatar
      [PATCH] reiserfs support for blocksizes other than 4096 bytes · 1e559269
      Andrew Morton authored
      From: Oleg Drokin <green@namesys.com>
      
      This patch allows reiserfs to support blocksizes from 1024 bytes and up to
      PAGE_CACHE_SIZE.  Also it fixes two glitches that prevent reiserfs from
      working correctly in case if PAGE_CACHE_SIZE is bigger than blocksize.
      
      Originally this patch was created by Edward Shushkin and Vladimir Saveliev,
      and then it was adapted to modern 2.4 and 2.5 by me.
      
      Also people should be aware that 1024 bytes blocksize is not very good thing
      as tree grows very fast.  mkreiserfs is able to create filesystems with
      different blocksizes for quite a while already (-b switch).
      1e559269
    • Andrew Morton's avatar
      [PATCH] reiserfs option parser fix and ability to pass · b743d13b
      Andrew Morton authored
      From: Oleg Drokin <green@namesys.com>
      
      This patch adds support for remounting taking into account all extra options
      you may want to pass it.  (by Jeff Mahooney).
      
      Also it reworks the parser to correctly deal with mutually exclusive options.
      Now whatever option was specified last will take an effect.
      
      - If you pass more than one jdev= option, the error will be reported and
        mount/remount refused.
      
      - If you pass incorrect alloc= suboptions, the mount/remount will fail.
        (it did not before).
      
      - nolargeio now actually looks at its argument.  Argument is expected to be
        numeric.  If it is zero, default io size is set to 128k (default setting),
        if it is non-zero, default io size is set to PAGE_SIZE.
      b743d13b
  13. 25 May, 2003 3 commits
    • Andries E. Brouwer's avatar
      [PATCH] change get_sb prototype · 2f124a73
      Andries E. Brouwer authored
      (i) The prototypes for free_vfsmnt(), alloc_vfsmnt(), do_kern_mount()
          so far occurred in several individual c files.  Now they are in
          <linux/mount.h>.
      
      (ii) do_kern_mount() has a third argument name that is typically a
           constant.  It is called with "rootfs", "nfsd", type->name,
           "capifs", "usbdevfs", "binfmt_misc" etc.  So, it should have a
           prototype that expresses this:
      
      	do_kern_mount(const char *fstype, int flags, const char *name, void *data);
      
      This makes the ugly cast
      
      -       return do_kern_mount(type->name, 0, (char *)type->name, NULL);
      +       return do_kern_mount(type->name, 0, type->name, NULL);
      
      go away. Now do_kern_mount() calls type->get_sb(), so also get_sb()
      must have a const third argument. That is what the patch below does.
      
      If I am not mistaken, precisely two filesystems do not treat this
      argument as a constant, namely afs and cifs. A separate patch
      gives some cleanup there.
      2f124a73
    • Andrew Morton's avatar
      [PATCH] mark shrinkable slabs as being reclaimable · 6f333c22
      Andrew Morton authored
      All slabs which can be reclaimed via VM presure are marked as being
      shrinkable, so the core slab code will keep count of their pages.
      
      Except for the one in XFS.  It has strange wrapper stuff.
      6f333c22
    • Andrew Morton's avatar
      [PATCH] reiserfs: inode attributes support. · 37c90629
      Andrew Morton authored
      From: Oleg Drokin <green@namesys.com>
      
      This is a forward port of 2.4's inode attributes support for reiserfs.
      Original implementation for 2.4 was performed by Nikita Danilov.
      
      In order to enable this support, one must use "attrs" mount options, eg:
      
      	mount /dev/hda1 /mount/pont -t reiserfs -o attrs
      
      Also either the filesystem must have been created with a recent mkreiserfs
      or must have been modified by a recent version of reiserfsck with its
      "--clean-attributes" option.
      
      If that is not done, attributes support will not be enabled and a kernel
      message will be printed.  This is necessary because old kernels left random
      garbage in the place where these attributes now live.
      
      These attributes are totally compatible with ext2's ones.  You can
      manipulate them with chattr/lsattr etc.
      
      Additionally the chattr 'd' option may be used to disable tail packing on a
      specific file or a directory tree.  (The 'd' option normally means "don't
      dump".  reiserfs has overloaded it).
      37c90629
  14. 19 May, 2003 1 commit
    • Andrew Morton's avatar
      [PATCH] reiserfs: reiserfs_file_write implementation · afd64673
      Andrew Morton authored
      From: Oleg Drokin <green@namesys.com>
      
      With the current 'one block at a time' algorithm, writes past the end of a
      file are slow because each new file block is separately added into the tree
      causing shifting of other items which is CPU expensive.
      
      With this new implementation if you write into file with big enough chunks,
      it uses half as much CPU.  Also this version is more SMP friendly than the
      current one.
      
      There are some known-bad applications that break with this patch (ie.  start
      to work very slow or even hang).
      
      This is because the filesystem returns a large value in the stat.st_blocksize
      hint (128k instead of 4k).  This tickles a small number of application bugs.
      One is KDE's kmail 3.04 (fixed by upgrading to 3.1+) and the other is
      sleepycat's database from before 1997.
      
      If you hit a slowdown problem that you believe is related to the increased
      "recommended i/o size" value, try to mount your fs with nolargeio=1 mount
      option (remount should work too).
      
      This patch exports block_commit_write(), generic_osync_inode() and
      remove_suid() to modules.
      afd64673
  15. 25 Feb, 2003 1 commit
  16. 13 Jan, 2003 1 commit
  17. 01 Jan, 2003 1 commit
  18. 07 Dec, 2002 2 commits
  19. 09 Oct, 2002 1 commit
    • Andrew Morton's avatar
      [PATCH] 64-bit sector_t - printk changes and sector_t cleanup · be48ef9e
      Andrew Morton authored
      From Peter Chubb
      
      printk changes: A sector_t can be either 64 or 32 bits, so cast it to a
      printable type that is at least as large as 64-bits on all platforms
      (i.e., cast to unsigned long long and use a %llu format)
      
      Transition to 64-bit sector_t: fix isofs_get_blocks by converting the
      (possibly 64-bit) arg to a long.
      
      SCSI 64-bit sector_t cleanup: capacity now stored as sector_t; make
      sure that the READ_CAPACITY command doesn't sign-extend its returned
      value; avoid 64-bit division when printing size in MB.
      
      Still to do:
       - 16-byte SCSI commands
       - Individual scsi drivers.
      be48ef9e
  20. 08 Oct, 2002 1 commit
  21. 20 Aug, 2002 1 commit
  22. 30 Jul, 2002 1 commit
  23. 09 Jul, 2002 1 commit
  24. 11 Jun, 2002 1 commit
    • Alexander Viro's avatar
      [PATCH] (4/14) resync · b83c1ac7
      Alexander Viro authored
      added bdev_read_only() - analog of is_read_only() using block_device.
      Almost all callers of is_read_only() converted.
      b83c1ac7
  25. 30 May, 2002 4 commits