1. 18 Feb, 2009 1 commit
  2. 17 Feb, 2009 1 commit
  3. 31 Dec, 2008 1 commit
  4. 09 Feb, 2009 1 commit
  5. 27 Nov, 2008 2 commits
  6. 31 Dec, 2008 1 commit
  7. 06 Jan, 2009 1 commit
  8. 17 Sep, 2009 1 commit
    • Vladimir Saveliev's avatar
      This is the main reiserfs4 filesystem. · 1b1cafb1
      Vladimir Saveliev authored
      Q&A wrt this patch:
      
      - A really short guide to how to get up and running with this filesystem.
      
              Reiser4 is a file system based on dancing tree algorithms, and
              is described at http://www.namesys.com.  One should be able to get it
              up and running just like any of the other filesystems supported by
              Linux.  Configure it to be compiled either builtin or as a module. 
              Create reiser4 filesystem with mkfs.reiser4, mount and use it.  More
              detailed info can be found at
              http://thebsh.namesys.com/snapshots/LATEST/READ.ME.
      
      - The direct URL which people use to obtain the mkfs tool for this
        filesystem.  Also fsck and anything else.
      
              Reiser4 userland tools can be obtained at
              ftp://ftp.namesys.com/pub/reiser4progs. 
              ftp://ftp.namesys.com/pub/reiser4progs/README contains detailed
              instructions on how to compile and install these tools.  Also all
              reiser4 progs have man pages.  
      
      - Any known shortcomings, caveats, etc.
      
              Reiser4 has been tested on i386 yet only.  Quota support is
              not ready yet.  Should be ready soon.  Reiser4 was tested extensively,
              and we got to where the mailing list was not able to hit any bugs, but
              then we told people that, got an order of magnitude increase in users,
              and they are able to hit bugs that we are working on now.
      
              Reiser's Law of Software Engineering: Each order of magnitude
              increase in users finds more bugs, in a quantity equal to the previous
              order of magnitude increase in users.  Success for software developers
              is measured by how long the frustration lasts.
      
              Only the very core functionality is working.  Exotic plugins,
              an API for multiple operation transactions and accessing multiple
              small files in one syscall, compression, inheritance, all have been
              postponed until after the core functionality is shipped.  The
              compression plugin needs a code review before anyone should use it.
      
      - A statement on compatibility with reiserfs3 filesytems.
      
              To upgrade from reiserfs V3 to V4, use tar, or sponsor us to
              write a convertfs.
      
      - Bear in mind that people will immediately benchmark this filesytem, and
        first impressions count.  Now is your chance to communicate any tuning
        guidelines, mount options or whatever which you'd like people to understand
        BEFORE they start publishing benchmark info.
      
              Reiser4 is not tuned for fsync/sync/O_SYNC performance yet.  
      
              If you see results that are much different from those at
              www.namesys.com/benchmarks.html, let us know.  If you see performance
              characteristics that don't quite make sense, email
              reiserfs-list@namesys.com, such things are always of interest.
      
              reiser4 is not tuned for mmaping and dirtying more than
              physical ram like IOzone does.  This is quite different in its code
              path from writing and dirtying more than physical ram.  There are
              those who think that what IOZone does is rarely done by real programs,
              and therefor we should not bother to optimize what it does.  All I
              know is, this month we are not optimized for it.
      
              Please consider its space savings when you benchmark it also.
      
      [michal.k.k.piotrowski@gmail.com: kill #include "linux/config.h"]
      [akpm@linux-foundation.org: reiser4_drop_page: don't call remove_from_page_cache]
      [bunk@stusta.de: fs/reiser4/: possible cleanups]
      Signed-off-by: default avatarVladimir Saveliev <vs@namesys.com>
      Signed-off-by: default avatarHans Reiser <reiser@namesys.com>
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      DESC
      reiser4: fix for drop-unused-semaphores.patch
      EDESC
      Wait for tail conversion completion when acquiring exclusive access by
      . mmap_unix_file()
      . setattr_unix_file()
      . release_unix_file()
      Update comments.
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      Cc Jonathan Briggs <jbriggs@esoft.com>
      DESC
      reiser4-slab-allocators-remove-slab_debug_initial-flag
      EDESC
      Cc: Christoph Lameter <cl@linux-foundation.org>.com>
      DESC
      reiser4: use simple_prepare_write to zero page data
      EDESC
      It's common for file systems to need to zero data on either side of a
      write, if a page is not Uptodate during prepare_write.  It just so happens
      that simple_prepare_write() in libfs.c does exactly that, so we can avoid
      duplication and just call that function to zero page data.
      Signed-off-by: default avatarNate Diller <nate.diller@gmail.com>
      Cc: Vladimir Saveliev <vs@namesys.com>
      Cc: Edward Shishkin <edward@namesys.com>
      DESC
      reiser4-fix
      EDESC
      
      DESC
      reiser4: use zero_user_page
      EDESC
      Use zero_user_page() instead of open-coding it.
      Signed-off-by: default avatarNate Diller <nate.diller@gmail.com>
      Cc: Vladimir Saveliev <vs@namesys.com>
      Cc: Edward Shishkin <edward@namesys.com>
      DESC
      reiser4: remove typedefs
      EDESC
      . Reduce number of typedefs from 289 to 248
      . Remove unused file plugin/file/invert.c
      . Update comments
      
      DESC
      reiser4: fix write_extent
      EDESC
      Prepared-by Ignatich <ignatich@gmail.com>
      
      Fix reiser4_write_extent():
         1) handling incomplete writes missed in reiser4-temp-fix.patch
         2) bugs in the case of returned errors
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      DESC
      reiser4 make sync_inodes non-void
      EDESC
      Make reiser4_sync_inodes non-void
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      DESC
      Reiser4: Drop 'size' argument from bio_endio and bi_end_io
      EDESC
      Reiser4: Drop 'size' argument from bio_endio and bi_end_io
      
      This patch pushes into Reiser4 the changes introduced by
      commit 6712ecf8:
      
      	As bi_end_io is only called once when the request is complete,
      	the 'size' argument is now redundant.  Remove it.
      
      	Now there is no need for bio_endio to subtract the size completed
      	from bi_size.  So don't do that either.
      
      	While we are at it, change bi_end_io to return void.
      Signed-off-by: default avatarLaurent Riffard <laurent.riffard@free.fr>
      Acked-by: default avatarJens Axboe <jens.axboe@oracle.com>
      Acked-by: default avatarEdward Shishkin <edward@namesys.com>
      DESC
      mm: clean up and kernelify shrinker registration
      EDESC
      I can never remember what the function to register to receive VM pressure
      is called.  I have to trace down from __alloc_pages() to find it.
      
      It's called "set_shrinker()", and it needs Your Help.
      
      1) Don't hide struct shrinker.  It contains no magic.
      2) Don't allocate "struct shrinker".  It's not helpful.
      3) Call them "register_shrinker" and "unregister_shrinker".
      4) Call the function "shrink" not "shrinker".
      5) Reduce the 17 lines of waffly comments to 13, but document it properly.
      
      The comment in reiser4 makes me a little queasy.
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Cc: Vladimir Saveliev <vs@namesys.com>
      Acked-by: default avatarEdward Shishkin <edward@namesys.com>
      DESC
      reiser4: fix NULL dereference in __mnt_is_readonly in ftruncate()
      EDESC
      Signed-off-by: default avatarDave Hansen <haveblue@us.ibm.com>
      Cc: Edward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      reiser4: fix extent2tail
      EDESC
      Fixed bug in extent2tail conversion.
      
      Bug description:
      when converting partially converted file
      (with flag REISER4_PART_MIXED installed)
      reiser4_cut_tree() starts to cut old metatada
      from wrong offset. Result is data corruption.
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      DESC
      reiser4: fix read_tail
      EDESC
      Update hint when reading tails
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      DESC
      reiser4: fix unix-file readpages filler
      EDESC
      Protect page (via incrementing page count) from being reclaimed when looking
      for extent pointer in unix-file specific readpages filler.
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      DESC
      reiser4: fix readpage_unix_file
      EDESC
      . If nominated (by VFS) page is out of file size, then fill it
        by zeros instead of returning -EINVAL (this prevents returning
        an unexpected error (-EINVAL) by some apps that don't check
        file size).
      
      . Check if the page became uptodate while it was being unlocked.
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      Cc: Zan Lynx <zlynx@acm.org>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      reiser4: fix for new aops patches
      EDESC
      Cc: Vladimir Saveliev <vs@namesys.com>
      Cc: Edward Shishkin <edward@namesys.com>
      DESC
      reiser4: do not allocate struct file on stack
      EDESC
      Do not allocate struct file on stack, pass the persistent one instead.
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      Tested-by: default avatarZan Lynx <zlynx@acm.org>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      git-block-vs-reiser4
      EDESC
      Hope this is right.
      
      Hope you know what you're doing ;)
      
      Cc: Vladimir Saveliev <vs@namesys.com>
      Cc: Edward Shishkin <edward@namesys.com>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      DESC
      reiser4: cryptcompress misc fixups
      EDESC
      .  Fix a race (reproducible by fsx + sync (1)) between
        checkin_page_cluster operations: serialize them via special per-inode
        checkin_mutex (usual i_mutex is not suitable for this purpose, as
        ->writepages() also calls checkin_page_cluster();
      
      .  Add comments for checkin/checkout technique for synchronization of
        primary and secondary caches with proof of correctness;
      
      .  Fix missed right neighbor when updating disk clusters by
        handle_pos_on_leaf() during squalloc (should use upper levels to get
        expected non-connected neighbor);
      
      .  Resolve a race between read and truncate (when read finds partially
        truncated and, hence, unrecoverable disk cluster) via keeping a track of
        leftmost truncated disk clusters in cryptcompress-specific part of inode;
      
      . Introduce size translators and size modulators for
        common needs;
      
      . Update comments;
      
      . Rename badly sounding function names;
      
      . Fix coding style;
      
      . Add my part of credits.
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      reiser4: cryptcompress misc fixups-2
      EDESC
      Check a file plugin id before manipulating with plugin-specific counter.
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      fs/reiser4/plugin/: make 3 functions static
      EDESC
      This patch makes the following needlessly global functions static:
      - file/cryptcompress.c: __put_page_cluster()
      - file/cryptcompress.c: put_hint_cluster()
      - item/ctail.c: ctail_read_disk_cluster()
      Signed-off-by: default avatarAdrian Bunk <bunk@kernel.org>
      Cc: Edward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      reiser4: change error code base
      EDESC
      Change REISER4_ERROR_CODE_BASE to 10000 to not overlap real errnos
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      reiser4: use lzo library functions
      EDESC
      . Convert Reiser4 to use lzo implementation in lib/lzo/ instead of
        including its own copy of minilzo;
      . Do not set zeros to workmem region.
      Signed-off-by: default avatarEdward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      fs/reiser4/plugin/file/cryptcompress.c: kmalloc + memset conversion to kzalloc
      EDESC
       fs/reiser4/plugin/file/cryptcompress.c | 101386 -> 101352 (-34 bytes)
       fs/reiser4/plugin/file/cryptcompress.o | 456784 -> 456644 (-140 bytes)
      Signed-off-by: default avatarMariusz Kozlowski <m.kozlowski@tuxland.pl>
      Cc: Edward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      reiser4: kmalloc + memset conversion to kzalloc
      EDESC
      Signed-off-by: default avatarMariusz Kozlowski <m.kozlowski@tuxland.pl>
      Cc: Edward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      fs/reiser4/init_super.c: kmalloc + memset conversion to kzalloc
      EDESC
       fs/reiser4/init_super.c | 19283 -> 19246 (-37 bytes)
       fs/reiser4/init_super.o | 155348 -> 155152 (-196 bytes)
      Signed-off-by: default avatarMariusz Kozlowski <m.kozlowski@tuxland.pl>
      Cc: Edward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      fs/reiser4/plugin/inode_ops_rename.c: kmalloc + memset conversion to kzalloc
      EDESC
       fs/reiser4/plugin/inode_ops_rename.c | 28474 -> 28344 (-130 bytes)
       fs/reiser4/plugin/inode_ops_rename.o | 142600 -> 142476 (-124 bytes)
      Signed-off-by: default avatarMariusz Kozlowski <m.kozlowski@tuxland.pl>
      Cc: Edward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      fs/reiser4/ktxnmgrd.c: kmalloc + memset conversion to kzalloc
      EDESC
       fs/reiser4/ktxnmgrd.c | 5314 -> 5277 (-37 bytes)
       fs/reiser4/ktxnmgrd.o | 131624 -> 131496 (-128 bytes)
      Signed-off-by: default avatarMariusz Kozlowski <m.kozlowski@tuxland.pl>
      Cc: Edward Shishkin <edward@namesys.com>
      Cc: "Vladimir V. Saveliev" <vs@namesys.com>
      DESC
      Use helpers to obtain task pid in printks
      EDESC
      The task_struct->pid member is going to be deprecated, so start
      using the helpers (task_pid_nr/task_pid_vnr/task_pid_nr_ns) in
      the kernel.
      
      The first thing to start with is the pid, printed to dmesg - in
      this case we may safely use task_pid_nr(). Besides, printks produce
      more (much more) than a half of all the explicit pid usage.
      Signed-off-by: default avatarPavel Emelyanov <xemul@openvz.org>
      DESC
      Subject: [PATCH 1/2] remove asm/bitops.h includes
      EDESC
      remove asm/bitops.h includes
      
      including asm/bitops directly may cause compile errors. don't include it
      and include linux/bitops instead. next patch will deny including asm header
      directly.
      
      Cc: Adrian Bunk <bunk@kernel.org>
      Signed-off-by: default avatarJiri Slaby <jirislaby@gmail.com>
      1b1cafb1
  9. 11 Nov, 2009 5 commits
  10. 04 Jun, 2009 1 commit
  11. 17 Sep, 2009 1 commit
  12. 04 Jun, 2009 1 commit
  13. 30 Oct, 2009 7 commits
  14. 12 Nov, 2009 2 commits
  15. 13 Nov, 2009 1 commit
  16. 12 Nov, 2009 4 commits
    • Albin Tonnerre's avatar
      - changes to ach/arch/boot/Makefile to make it easier to add new · 16877336
      Albin Tonnerre authored
         compression types
       - new piggy.lzo.S necessary for lzo compression
       - changes in arch/arm/boot/compressed/misc.c to allow the use of lzo or
         gzip, depending on the config
       - Kconfig support
      Signed-off-by: default avatarAlbin Tonnerre <albin.tonnerre@free-electrons.com>
      Tested-by: default avatarWu Zhangjin <wuzhangjin@gmail.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      16877336
    • Andrew Morton's avatar
      Cc: "H. Peter Anvin" <hpa@zytor.com> · af866bdc
      Andrew Morton authored
      Cc: Albin Tonnerre <albin.tonnerre@free-electrons.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Wu Zhangjin <wuzhangjin@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      af866bdc
    • Andrew Morton's avatar
      ERROR: that open brace { should be on the previous line · 6ca15ba2
      Andrew Morton authored
      #184: FILE: lib/decompress_unlzo.c:48:
      +static const unsigned char lzop_magic[] =
      +	{ 0x89, 0x4c, 0x5a, 0x4f, 0x00, 0x0d, 0x0a, 0x1a, 0x0a };
      
      WARNING: line over 80 characters
      #254: FILE: lib/decompress_unlzo.c:118:
      +		error("Both input pointer and fill function provided, don't know what to do");
      
      WARNING: line over 80 characters
      #259: FILE: lib/decompress_unlzo.c:123:
      +		error("NULL input pointer and missing position pointer or fill function");
      
      WARNING: line over 80 characters
      #313: FILE: lib/decompress_unlzo.c:177:
      +		r = lzo1x_decompress_safe((u8 *) in_buf, src_len, out_buf, &tmp);
      
      total: 1 errors, 3 warnings, 291 lines checked
      
      ./patches/lib-add-support-for-lzo-compressed-kernels.patch has style problems, please review.  If any of these errors
      are false positives report them to the maintainer, see
      CHECKPATCH in MAINTAINERS.
      
      Please run checkpatch prior to sending patches
      
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Albin Tonnerre <albin.tonnerre@free-electrons.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Wu Zhangjin <wuzhangjin@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      6ca15ba2
    • Albin Tonnerre's avatar
      This patch series adds generic support for creating and extracting · efca0bcd
      Albin Tonnerre authored
      LZO-compressed kernel images, as well as support for using such images on
      the x86 and ARM architectures, and support for creating and using
      LZO-compressed initrd and initramfs images.
      
      
      
      This patch:
      
      The lzo compressor is worse than gzip at compression, but faster at
      extraction.  Here are some figures for an ARM board I'm working on:
      
      Uncompressed size: 3.24Mo
      gzip  1.61Mo 0.72s
      lzo   1.75Mo 0.48s
      
      So for a compression ratio that is still relatively close to gzip, it's
      much faster to extract, at least in that case.
      
      This part contains:
       - Makefile routine to support lzo compression
       - Fixes to the existing lzo compressor so that it can be used in
         compressed kernels
       - wrapper around the existing lzo1x_decompress, as it only extracts one
         block at a time, while we need to extract a whole file here
       - config dialog for kernel compression
      Signed-off-by: default avatarAlbin Tonnerre <albin.tonnerre@free-electrons.com>
      Tested-by: default avatarWu Zhangjin <wuzhangjin@gmail.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      efca0bcd
  17. 13 Nov, 2009 3 commits
    • Andrew Morton's avatar
      ERROR: code indent should use tabs where possible · db812467
      Andrew Morton authored
      #90: FILE: lib/zlib_inflate/inffast.c:250:
      +                    /* minimum length is three */$
      
      ERROR: space prohibited before that close parenthesis ')'
      #97: FILE: lib/zlib_inflate/inffast.c:257:
      +		    if (dist > 2 ) {
      
      WARNING: suspect code indent for conditional statements (24, 28)
      #111: FILE: lib/zlib_inflate/inffast.c:271:
      +			if (dist == 1)
      [...]
      +			    pat16 = (pat16 & 0xff) | ((pat16 & 0xff ) << 8);
      
      ERROR: space prohibited before that close parenthesis ')'
      #113: FILE: lib/zlib_inflate/inffast.c:273:
      +			    pat16 = (pat16 & 0xff) | ((pat16 & 0xff ) << 8);
      
      ERROR: space prohibited before that close parenthesis ')'
      #115: FILE: lib/zlib_inflate/inffast.c:275:
      +			    pat16 = (pat16 & 0xff00) | ((pat16 & 0xff00 ) >> 8);
      
      total: 4 errors, 1 warnings, 93 lines checked
      
      ./patches/zlib-optimize-inffast-when-copying-direct-from-output.patch has style problems, please review.  If any of these errors
      are false positives report them to the maintainer, see
      CHECKPATCH in MAINTAINERS.
      
      Please run checkpatch prior to sending patches
      
      Cc: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      db812467
    • Joakim Tjernlund's avatar
      JFFS2 uses lesser compression ratio and inflate always ends up in "copy · 9dad9789
      Joakim Tjernlund authored
      direct from output" case.
      
      This patch tries to optimize the direct copy procedure.  Uses
      get_unaligned() but only in one place.
      
      The copy loop just above this one can also use this optimization, but I
      havn't done so as I have not tested if it is a win there too.
      
      On my MPC8321 this is about 17% faster on my JFFS2 root FS than the
      original.
      Signed-off-by: default avatarJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Cc: Roel Kluin <roel.kluin@gmail.com>
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      9dad9789
    • Akinobu Mita's avatar
      Use hweight8 instead of counting for each bit · 1e8e2e80
      Akinobu Mita authored
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Acked-by: default avatarAnders Larsen <al@alarsen.net>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      1e8e2e80
  18. 10 Oct, 2009 1 commit
  19. 12 Nov, 2009 1 commit
  20. 10 Nov, 2009 2 commits
    • Andrew Morton's avatar
      ERROR: space prohibited before that close parenthesis ')' · f78370af
      Andrew Morton authored
      #252: FILE: fs/direct-io.c:1212:
      +			if (end > isize )
      
      total: 1 errors, 0 warnings, 338 lines checked
      
      ./patches/direct-io-cleanup-blockdev_direct_io-locking.patch has style problems, please review.  If any of these errors
      are false positives report them to the maintainer, see
      CHECKPATCH in MAINTAINERS.
      
      Please run checkpatch prior to sending patches
      
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      f78370af
    • Christoph Hellwig's avatar
      Currently the locking in blockdev_direct_IO is a mess, we have three · b3c9569b
      Christoph Hellwig authored
      different locking types and very confusing checks for some of them.  The
      most complicated one is DIO_OWN_LOCKING for reads, which happens to not
      actually be used.
      
      This patch gets rid of the DIO_OWN_LOCKING - as mentioned above the read
      case is unused anyway, and the write side is almost identical to
      DIO_NO_LOCKING.  The difference is that DIO_NO_LOCKING always sets the
      create argument for the get_blocks callback to zero, but we can easily
      move that to the actual get_blocks callbacks.  There are four users of the
      DIO_NO_LOCKING mode: gfs already ignores the create argument and thus is
      fine with the new version, ocfs2 only errors out if create were ever set,
      and we can remove this dead code now, the block device code only ever uses
      create for an error message if we are fully beyond the device which can
      never happen, and last but not least XFS will need the new behavour for
      writes.
      
      Now we can replace the lock_type variable with a flags one, where no flag
      means the DIO_NO_LOCKING behaviour and DIO_LOCKING is kept as the first
      flag.  Separate out the check for not allowing to fill holes into a
      separate flag, although for now both flags always get set at the same
      time.
      
      Also revamp the documentation of the locking scheme to actually make
      sense.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Cc: Dave Chinner <david@fromorbit.com>
      Cc: Badari Pulavarty <pbadari@us.ibm.com>
      Cc: Jeff Moyer <jmoyer@redhat.com>
      Cc: Jens Axboe <jens.axboe@oracle.com>
      Cc: Zach Brown <zach.brown@oracle.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Alex Elder <aelder@sgi.com>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Cc: Joel Becker <joel.becker@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      b3c9569b
  21. 30 Oct, 2009 2 commits
    • Andrew Morton's avatar
      Cc: Jeff Moyer <jmoyer@redhat.com> · f0a477b3
      Andrew Morton authored
      Cc: Zach Brown <zach.brown@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      f0a477b3
    • Jeff Moyer's avatar
      Intel reported a performance regression caused by the following commit: · b7f890ec
      Jeff Moyer authored
      commit 848c4dd5
      Author: Zach Brown <zach.brown@oracle.com>
      Date:   Mon Aug 20 17:12:01 2007 -0700
      
          dio: zero struct dio with kzalloc instead of manually
      
          This patch uses kzalloc to zero all of struct dio rather than
          manually trying to track which fields we rely on being zero.  It
          passed aio+dio stress testing and some bug regression testing on
          ext3.
      
          This patch was introduced by Linus in the conversation that lead up
          to Badari's minimal fix to manually zero .map_bh.b_state in commit:
      
            6a648fa7
      
          It makes the code a bit smaller.  Maybe a couple fewer cachelines to
          load, if we're lucky:
      
             text    data     bss     dec     hex filename
          3285925  568506 1304616 5159047  4eb887 vmlinux
          3285797  568506 1304616 5158919  4eb807 vmlinux.patched
      
          I was unable to measure a stable difference in the number of cpu
          cycles spent in blockdev_direct_IO() when pushing aio+dio 256K reads
          at ~340MB/s.
      
          So the resulting intent of the patch isn't a performance gain but to
          avoid exposing ourselves to the risk of finding another field like
          .map_bh.b_state where we rely on zeroing but don't enforce it in the
          code.
      
      Zach surmised that zeroing out the page array was what caused most of
      the problem, and suggested the approach taken in the attached patch for
      resolving the issue.  Intel re-tested with this patch and saw a 0.6%
      performance gain (the original regression was 0.5%).
      Signed-off-by: default avatarJeff Moyer <jmoyer@redhat.com>
      Acked-by: default avatarZach Brown <zach.brown@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      b7f890ec