1. 15 9月, 2009 36 次提交
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 · 39695224
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (209 commits)
        [SCSI] fix oops during scsi scanning
        [SCSI] libsrp: fix memory leak in srp_ring_free()
        [SCSI] libiscsi, bnx2i: make bound ep check common
        [SCSI] libiscsi: add completion function for drivers that do not need pdu processing
        [SCSI] scsi_dh_rdac: changes for rdac debug logging
        [SCSI] scsi_dh_rdac: changes to collect the rdac debug information during the initialization
        [SCSI] scsi_dh_rdac: move the init code from rdac_activate to rdac_bus_attach
        [SCSI] sg: fix oops in the error path in sg_build_indirect()
        [SCSI] mptsas : Bump version to 3.04.12
        [SCSI] mptsas : FW event thread and scsi mid layer deadlock in SYNCHRONIZE CACHE command
        [SCSI] mptsas : Send DID_NO_CONNECT for pending IOs of removed device
        [SCSI] mptsas : PAE Kernel more than 4 GB kernel panic
        [SCSI] mptsas : NULL pointer on big endian systems causing Expander not to tear off
        [SCSI] mptsas : Sanity check for phyinfo is added
        [SCSI] scsi_dh_rdac: Add support for Sun StorageTek ST2500, ST2510 and ST2530
        [SCSI] pmcraid: PMC-Sierra MaxRAID driver to support 6Gb/s SAS RAID controller
        [SCSI] qla2xxx: Update version number to 8.03.01-k6.
        [SCSI] qla2xxx: Properly delete rports attached to a vport.
        [SCSI] qla2xxx: Correct various NPIV issues.
        [SCSI] qla2xxx: Correct qla2x00_eh_wait_on_command() to wait correctly.
        ...
      39695224
    • L
      Merge branch 'docs-next' of git://git.lwn.net/linux-2.6 · a9bbd210
      Linus Torvalds 提交于
      * 'docs-next' of git://git.lwn.net/linux-2.6:
        Document the flex_array library.
        Doc: seq_file.txt fix wrong dd command example.
      a9bbd210
    • L
      Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm · 2ca7d674
      Linus Torvalds 提交于
      * 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: (257 commits)
        [ARM] Update mach-types
        ARM: 5636/1: Move vendor enum to AMBA include
        ARM: Fix pfn_valid() for sparse memory
        [ARM] orion5x: Add LaCie NAS 2Big Network support
        [ARM] pxa/sharpsl_pm: zaurus c3000 aka spitz: fix resume
        ARM: 5686/1: at91: Correct AC97 reset line in at91sam9263ek board
        ARM: 5640/1: This patch modifies the support of AC97 on the at91sam9263 ek board
        ARM: 5689/1: Update default config of HP Jornada 700-series machines
        ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() with highmem
        ARM: 5688/1: ks8695_serial: disable_irq() lockup
        ARM: 5687/1: fix an oops with highmem
        ARM: 5684/1: Add nuc960 platform to w90x900
        ARM: 5683/1: Add nuc950 platform to w90x900
        ARM: 5682/1: Add cpu.c and dev.c and modify some files of w90p910 platform
        ARM: 5626/1: add suspend/resume functions to amba-pl011 serial driver
        ARM: 5625/1: fix hard coded 4K resource size in amba bus detection
        MMC: MMCI: convert realview MMC to use gpiolib
        ARM: 5685/1: Make MMCI driver compile without gpiolib
        ARM: implement highpte
        ARM: Show FIQ in /proc/interrupts on CONFIG_FIQ
        ...
      
      Fix up trivial conflict in arch/arm/kernel/signal.c.
      
      It was due to the TIF_NOTIFY_RESUME addition in commit d0420c83 ("KEYS:
      Extend TIF_NOTIFY_RESUME to (almost) all architectures") and follow-ups.
      2ca7d674
    • H
      fix undefined reference to user_shm_unlock · 2195d281
      Hugh Dickins 提交于
      My 353d5c30 "mm: fix hugetlb bug due to
      user_shm_unlock call" broke the CONFIG_SYSVIPC !CONFIG_MMU build of both
      2.6.31 and 2.6.30.6: "undefined reference to `user_shm_unlock'".
      
      gcc didn't understand my comment! so couldn't figure out to optimize
      away user_shm_unlock() from the error path in the hugetlb-less case, as
      it does elsewhere.  Help it to do so, in a language it understands.
      Reported-by: NMike Frysinger <vapier@gentoo.org>
      Signed-off-by: NHugh Dickins <hugh.dickins@tiscali.co.uk>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2195d281
    • L
      Merge branch 'kvm-updates/2.6.32' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 69def9f0
      Linus Torvalds 提交于
      * 'kvm-updates/2.6.32' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (202 commits)
        MAINTAINERS: update KVM entry
        KVM: correct error-handling code
        KVM: fix compile warnings on s390
        KVM: VMX: Check cpl before emulating debug register access
        KVM: fix misreporting of coalesced interrupts by kvm tracer
        KVM: x86: drop duplicate kvm_flush_remote_tlb calls
        KVM: VMX: call vmx_load_host_state() only if msr is cached
        KVM: VMX: Conditionally reload debug register 6
        KVM: Use thread debug register storage instead of kvm specific data
        KVM guest: do not batch pte updates from interrupt context
        KVM: Fix coalesced interrupt reporting in IOAPIC
        KVM guest: fix bogus wallclock physical address calculation
        KVM: VMX: Fix cr8 exiting control clobbering by EPT
        KVM: Optimize kvm_mmu_unprotect_page_virt() for tdp
        KVM: Document KVM_CAP_IRQCHIP
        KVM: Protect update_cr8_intercept() when running without an apic
        KVM: VMX: Fix EPT with WP bit change during paging
        KVM: Use kvm_{read,write}_guest_virt() to read and write segment descriptors
        KVM: x86 emulator: Add adc and sbb missing decoder flags
        KVM: Add missing #include
        ...
      69def9f0
    • A
      cleanup console_print() · 353f6dd2
      Anirban Sinha 提交于
      console_print() is an old legacy interface mostly unused in the entire
      kernel tree. It's best to clean up its existing use and let developers
      use their own implementation of it as they feel fit.
      Signed-off-by: NAnirban Sinha <asinha@zeugmasystems.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      353f6dd2
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 · bb193c98
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:
        slub: fix slab_pad_check()
        slub: release kobject if sysfs_create_group failed in sysfs_slab_add
        SLUB: fix ARCH_KMALLOC_MINALIGN cases 64 and 256
        SLUB: Fix some coding style issues
        SLUB: Drop write permission to /proc/slabinfo
        slab: remove duplicate kmem_cache_init_late() declarations
        slub: change kmem_cache->align to record the real alignment
        slub: use size and objsize orders to disable debug flags
        slub: add option to disable higher order debugging slabs
      bb193c98
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · f65ac45e
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        x86, mce: do not compile mcelog message on AMD
        EDAC, AMD: decode FR MCEs
        EDAC, AMD: decode load store MCEs
        EDAC, AMD: decode bus unit MCEs
        EDAC, AMD: decode instruction cache MCEs
        EDAC, AMD: decode data cache MCEs
        EDAC, AMD: carve out decoding of MCi_STATUS ErrorCode
        EDAC, AMD: carve out MCi_STATUS decoding
        x86, mce: pass mce info to EDAC for decoding
        amd64_edac: cleanup amd64_decode_bus_error
        amd64_edac: remove memory and GART TLB error decoders
        amd64_edac: cleanup/complete NB MCE decoding
        amd64_edac: cleanup amd64_process_error_info
        EDAC: beef up ErrorCodeExt error signatures
        EDAC: move MCE error descriptions to EDAC core
      f65ac45e
    • L
      Merge branch 'osync_cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 · 4142e0d1
      Linus Torvalds 提交于
      * 'osync_cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:
        fsync: wait for data writeout completion before calling ->fsync
        vfs: Remove generic_osync_inode() and sync_page_range{_nolock}()
        fat: Opencode sync_page_range_nolock()
        pohmelfs: Use new syncing helper
        xfs: Convert sync_page_range() to simple filemap_write_and_wait_range()
        ocfs2: Update syncing after splicing to match generic version
        ntfs: Use new syncing helpers and update comments
        ext4: Remove syncing logic from ext4_file_write
        ext3: Remove syncing logic from ext3_file_write
        ext2: Update comment about generic_osync_inode
        vfs: Introduce new helpers for syncing after writing to O_SYNC file or IS_SYNC inode
        vfs: Rename generic_file_aio_write_nolock
        ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock
        pohmelfs: Use __generic_file_aio_write instead of generic_file_aio_write_nolock
        vfs: Remove syncing from generic_file_direct_write() and generic_file_buffered_write()
        vfs: Export __generic_file_aio_write() and add some comments
        vfs: Introduce filemap_fdatawait_range
      4142e0d1
    • L
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw · 33f1de69
      Linus Torvalds 提交于
      * 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw:
        GFS2: Whitespace fixes
        GFS2: Remove unused sysfs file
        GFS2: Be extra careful about deallocating inodes
        GFS2: Remove no_formal_ino generating code
        GFS2: Rename eattr.[ch] as xattr.[ch]
        GFS2: Clean up of extended attribute support
        GFS2: Add explanation of extended attr on-disk format
        GFS2: Add "-o errors=panic|withdraw" mount options
        GFS2: jumping to wrong label?
        GFS2: free disk inode which is deleted by remote node -V2
        GFS2: Add a document explaining GFS2's uevents
        GFS2: Add sysfs link to device
        GFS2: Replace assertion with proper error handling
        GFS2: Improve error handling in inode allocation
        GFS2: Add some more info to uevents
        GFS2: Add online uevent to GFS2
      33f1de69
    • L
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 · 041d6d0b
      Linus Torvalds 提交于
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6:
        udf: Fix possible corruption when close races with write
        udf: Perform preallocation only for regular files
        udf: Remove wrong assignment in udf_symlink
        udf: Remove dead code
      041d6d0b
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 · af8cb8aa
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: (21 commits)
        fs/Kconfig: move nilfs2 outside misc filesystems
        nilfs2: convert nilfs_bmap_lookup to an inline function
        nilfs2: allow btree code to directly call dat operations
        nilfs2: add update functions of virtual block address to dat
        nilfs2: remove individual gfp constants for each metadata file
        nilfs2: stop zero-fill of btree path just before free it
        nilfs2: remove unused btree argument from btree functions
        nilfs2: remove nilfs_dat_abort_start and nilfs_dat_abort_free
        nilfs2: shorten freeze period due to GC in write operation v3
        nilfs2: add more check routines in mount process
        nilfs2: An unassigned variable is assigned to a never used structure member
        nilfs2: use GFP_NOIO for bio_alloc instead of GFP_NOWAIT
        nilfs2: stop using periodic write_super callback
        nilfs2: clean up nilfs_write_super
        nilfs2: fix disorder of nilfs_write_super in nilfs_sync_fs
        nilfs2: remove redundant super block commit
        nilfs2: implement nilfs_show_options to display mount options in /proc/mounts
        nilfs2: always lookup disk block address before reading metadata block
        nilfs2: use semaphore to protect pointer to a writable FS-instance
        nilfs2: fix format string compile warning (ino_t)
        ...
      af8cb8aa
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 · 6cdb5930
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
        cifs: consolidate reconnect logic in smb_init routines
        cifs: Replace wrtPending with a real reference count
        cifs: protect GlobalOplock_Q with its own spinlock
        cifs: use tcon pointer in cifs_show_options
        cifs: send IPv6 addr in upcall with colon delimiters
        [CIFS] Fix checkpatch warnings
        PATCH] cifs: fix broken mounts when a SSH tunnel is used (try #4)
        [CIFS] Memory leak in ntlmv2 hash calculation
        [CIFS] potential NULL dereference in parse_DFS_referrals()
      6cdb5930
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 · 99bc4706
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6: (21 commits)
        sparc64: Initial niagara2 perf counter support.
        sparc64: Perf counter 'nop' event is not constant.
        sparc64: Provide a way to specify a perf counter overflow IRQ enable bit.
        sparc64: Provide hypervisor tracing bit support for perf counters.
        sparc64: Initial hw perf counter support.
        sparc64: Implement a real set_perf_counter_pending().
        sparc64: Use nmi_enter() and nmi_exit(), as needed.
        sparc64: Provide extern decls for sparc_??u_type strings.
        sparc64: Make touch_nmi_watchdog() actually work.
        sparc64: Kill unnecessary cast in profile_timer_exceptions_notify().
        sparc64: Manage NMI watchdog enabling like x86.
        sparc: add basic support for 'perf'
        sparc: convert /proc/io_map, /proc/dvma_map to seq_file
        sparc, leon: sparc-leon specific SRMMU initialization and bootup fixes.
        sparc,leon: Added support for AMBAPP bus.
        sparc,leon: Introduce the sparc-leon CPU type.
        sparc,leon: Redefine MMU register access asi if CONFIG_LEON
        sparc,leon: CONFIG_SPARC_LEON option and leon specific files.
        sparc64: cheaper asm/uaccess.h inclusion
        SPARC: fix duplicate declaration
        ...
      99bc4706
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 · d7e9660a
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1623 commits)
        netxen: update copyright
        netxen: fix tx timeout recovery
        netxen: fix file firmware leak
        netxen: improve pci memory access
        netxen: change firmware write size
        tg3: Fix return ring size breakage
        netxen: build fix for INET=n
        cdc-phonet: autoconfigure Phonet address
        Phonet: back-end for autoconfigured addresses
        Phonet: fix netlink address dump error handling
        ipv6: Add IFA_F_DADFAILED flag
        net: Add DEVTYPE support for Ethernet based devices
        mv643xx_eth.c: remove unused txq_set_wrr()
        ucc_geth: Fix hangs after switching from full to half duplex
        ucc_geth: Rearrange some code to avoid forward declarations
        phy/marvell: Make non-aneg speed/duplex forcing work for 88E1111 PHYs
        drivers/net/phy: introduce missing kfree
        drivers/net/wan: introduce missing kfree
        net: force bridge module(s) to be GPL
        Subject: [PATCH] appletalk: Fix skb leak when ipddp interface is not loaded
        ...
      
      Fixed up trivial conflicts:
      
       - arch/x86/include/asm/socket.h
      
         converted to <asm-generic/socket.h> in the x86 tree.  The generic
         header has the same new #define's, so that works out fine.
      
       - drivers/net/tun.c
      
         fix conflict between 89f56d1e ("tun: reuse struct sock fields") that
         switched over to using 'tun->socket.sk' instead of the redundantly
         available (and thus removed) 'tun->sk', and 2b980dbd ("lsm: Add hooks
         to the TUN driver") which added a new 'tun->sk' use.
      
         Noted in 'next' by Stephen Rothwell.
      d7e9660a
    • L
      Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip · b8cb48aa
      Linus Torvalds 提交于
      * 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86: split __phys_addr out into separate file
        xen: use stronger barrier after unlocking lock
        xen: only enable interrupts while actually blocking for spinlock
        xen: make -fstack-protector work under Xen
      b8cb48aa
    • P
      aceda773
    • J
      udf: Fix possible corruption when close races with write · cbc8cc33
      Jan Kara 提交于
      When we close a file, we remove preallocated blocks from it. But this
      truncation was not protected by i_mutex and thus it could have raced with a
      write through a different fd and cause crashes or even filesystem corruption.
      Signed-off-by: NJan Kara <jack@suse.cz>
      cbc8cc33
    • J
      udf: Perform preallocation only for regular files · 81056dd0
      Jan Kara 提交于
      So far we preallocated blocks also for directories but that brings a
      problem, when to get rid of preallocated blocks we don't need. So far
      we removed them in udf_clear_inode() which has a disadvantage that
      1) blocks are unavailable long after writing to a directory finished
         and thus one can get out of space unnecessarily early
      2) releasing blocks from udf_clear_inode is problematic because VFS
         does not expect us to redirty inode there and it also slows down
         memory reclaim.
      
      So preallocate blocks only for regular files where we can drop preallocation
      in udf_release_file.
      Signed-off-by: NJan Kara <jack@suse.cz>
      81056dd0
    • J
      udf: Remove wrong assignment in udf_symlink · 7c6e3d1a
      Jan Kara 提交于
      Recomputation of the pointer was wrong (it should have been just increment).
      Luckily, we never use the computed value. Remove it.
      Signed-off-by: NJan Kara <jack@suse.cz>
      7c6e3d1a
    • J
      udf: Remove dead code · 5891d9dd
      Jan Kara 提交于
      Remove code that gets never used.
      Signed-off-by: NJan Kara <jack@suse.cz>
      5891d9dd
    • B
      x86, mce: do not compile mcelog message on AMD · 22223c9b
      Borislav Petkov 提交于
      Now that decoding is done in-kernel, suppress mcelog message part.
      
      CC: Andi Kleen <andi@firstfloor.org>
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      22223c9b
    • B
      EDAC, AMD: decode FR MCEs · 53bd5fed
      Borislav Petkov 提交于
      See Fam10h BKDG (31116, rev. 3.28), Table 101.
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      53bd5fed
    • B
      EDAC, AMD: decode load store MCEs · f9350efd
      Borislav Petkov 提交于
      See Fam10h BKDG (31116, rev. 3.28), Table 100.
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      f9350efd
    • B
      EDAC, AMD: decode bus unit MCEs · 56cad2d6
      Borislav Petkov 提交于
      ... according to Table 69, Fam10h BKDG (31116, rev. 3.28).
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      56cad2d6
    • B
      EDAC, AMD: decode instruction cache MCEs · ab5535e7
      Borislav Petkov 提交于
      See Fam10h BKDG (31116, rev. 3.28), Table 95
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      ab5535e7
    • B
      EDAC, AMD: decode data cache MCEs · 51966241
      Borislav Petkov 提交于
      Those get reported in MC0_STATUS, see Table 92, F10h BKDG (31116, rev.
      3.28) for more details.
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      51966241
    • B
      EDAC, AMD: carve out decoding of MCi_STATUS ErrorCode · d93cc222
      Borislav Petkov 提交于
      This is the MCE error code from the MCi_STATUS banks, bits [15:0] which
      describe what type of error was encountered: GART TLB, Memory or Bus
      error. The semantics of those bits are identical across all MCE banks so
      decode those separately, irrespectively of MCE type.
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      d93cc222
    • B
      EDAC, AMD: carve out MCi_STATUS decoding · b69b29de
      Borislav Petkov 提交于
      The MCi_STATUS registers have most field definitions in common so decode
      them in the general path. Do not pass ecc_type along and compute it in
      __amd64_decode_bus_error instead.
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      b69b29de
    • B
      x86, mce: pass mce info to EDAC for decoding · 549d042d
      Borislav Petkov 提交于
      Move NB decoder along with required defines to EDAC MCE core. Add
      registration routines for further decoding of the MCE info in the AMD64
      EDAC module.
      
      CC: Andi Kleen <andi@firstfloor.org>
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      549d042d
    • B
      ecaf5606
    • B
    • B
      amd64_edac: cleanup/complete NB MCE decoding · 5110dbde
      Borislav Petkov 提交于
      * don't dump info which mcheck already does
      * update to newest BKDG
      * mv amd64_process_error_info -> amd64_decode_nb_mce
      * shorten error struct names
      * remove redundant info ptr in amd64_process_error_info
      * remove unused ErrorCodeExt[19:16] (MCx_STATUS) defines
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      5110dbde
    • B
      amd64_edac: cleanup amd64_process_error_info · ef44cc4c
      Borislav Petkov 提交于
      * mv amd64_error_info_regs -> err_regs
      
      * remove redundant info ptr
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      ef44cc4c
    • B
      1c43f2e2
    • B
      EDAC: move MCE error descriptions to EDAC core · b70ef010
      Borislav Petkov 提交于
      This is in preparation of adding AMD-specific MCE decoding functionality
      to the EDAC core. The error decoding macros originate from the AMD64
      EDAC driver albeit in a simplified and cleaned up version here.
      
      While at it, add macros to generate the error description strings and
      use them in the error type decoders directly which removes a bunch of
      code and makes the decoding functions much more readable. Also, fix
      strings and shorten macro names.
      
      Remove superfluous htlink_msgs.
      Signed-off-by: NBorislav Petkov <borislav.petkov@amd.com>
      b70ef010
  2. 14 9月, 2009 4 次提交
    • C
      fsync: wait for data writeout completion before calling ->fsync · 2daea67e
      Christoph Hellwig 提交于
      Currenly vfs_fsync(_range) first calls filemap_fdatawrite to write out
      the data, the calls into ->fsync to write out the metadata and then finally
      calls filemap_fdatawait to wait for the data I/O to complete.  What sounds
      like a clever micro-optimization actually is nast trap for many filesystems.
      
      For many modern filesystems i_size or other inode information is only
      updated on I/O completion and we need to wait for I/O to finish before
      we can write out the metadata.  For old fashionen filesystems that
      instanciate blocks during the actual write and also update the metadata
      at that point it opens up a large window were we could expose uninitialized
      blocks after a crash.  While a few filesystems that need it already wait
      for the I/O to finish inside their ->fsync methods it is rather suboptimal
      as it is done under the i_mutex and also always for the whole file instead
      of just a part as we could do for O_SYNC handling.
      
      Here is a small audit of all fsync instances in the tree:
      
       - spufs_mfc_fsync:
       - ps3flash_fsync:
       - vol_cdev_fsync:
       - printer_fsync:
       - fb_deferred_io_fsync:
       - bad_file_fsync:
       - simple_sync_file:
      
      	don't care - filesystems/drivers do't use the page cache or are
      	purely in-memory.
      
       - simple_fsync:
       - file_fsync:
       - affs_file_fsync:
       - fat_file_fsync:
       - jfs_fsync:
       - ubifs_fsync:
       - reiserfs_dir_fsync:
       - reiserfs_sync_file:
      
      	never touch pagecache themselves.  We need to wait before if we do
      	not want to expose stale data after an allocation.
      
       - afs_fsync:
       - fuse_fsync_common:
      
      	do the waiting writeback itself in awkward ways, would benefit from
      	proper semantics
      
       - block_fsync:
      
      	Does a filemap_write_and_wait on the block device inode.  Because we
      	now have f_mapping that is the same inode we call it on in vfs_fsync.
      	So just removing it and letting the VFS do the work in one go would
      	be an improvement.
      
       - btrfs_sync_file:
       - cifs_fsync:
       - xfs_file_fsync:
      
      	need the wait first and currently do it themselves. would benefit from
      	doing it outside i_mutex.
      
       - coda_fsync:
       - ecryptfs_fsync:
       - exofs_file_fsync:
       - shm_fsync:
      
      	only passes the fsync through to the lower layer
      
       - ext3_sync_file:
      
      	doesn't seem to care, comments are confusing.
      
       - ext4_sync_file:
      
      	would need the wait to work correctly for delalloc mode with late
      	i_size updates.  Otherwise the ext3 comment applies.
      
      	currently implemens it's own writeback and wait in an odd way,
      	could benefit from doing it properly.
      
       - gfs2_fsync:
      
      	not needed for journaled data mode, but probably harmless there.
      	Currently writes back data asynchronously itself.  Needs some
      	major audit.
      
       - hostfs_fsync:
      
      	just calls fsync/datasync on the host FD.  Without the wait before
      	data might not even be inflight yet if we're unlucky.
      
       - hpfs_file_fsync:
       - ncp_fsync:
      
      	no-ops.  Dangerous before and after.
      
       - jffs2_fsync:
      
      	just calls jffs2_flush_wbuf_gc, not sure how this relates to data.
      
       - nfs_fsync_dir:
      
      	just increments stats, claims all directory operations are synchronous
      
       - nfs_file_fsync:
      
      	only writes out data???  Looks very odd.
      
       - nilfs_sync_file:
      
      	looks like it expects all data done, but not sure from the code
      
       - ntfs_dir_fsync:
       - ntfs_file_fsync:
      
      	appear to do their own data writeback.  Very convoluted code.
      
       - ocfs2_sync_file:
      
      	does it's own data writeback, but no wait.  probably needs the wait.
      
       - smb_fsync:
      
      	according to a comment expects all pages written already, probably needs
      	the wait before.
      
      This patch only changes vfs_fsync_range, removal of the wait in the methods
      that have it is left to the filesystem maintainers.  Note that most
      filesystems really do need an audit for their fsync methods given the
      gems found in this very brief audit.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NJan Kara <jack@suse.cz>
      2daea67e
    • J
      vfs: Remove generic_osync_inode() and sync_page_range{_nolock}() · 18f2ee70
      Jan Kara 提交于
      Remove these three functions since nobody uses them anymore.
      Signed-off-by: NJan Kara <jack@suse.cz>
      18f2ee70
    • J
      fat: Opencode sync_page_range_nolock() · 2f3d675b
      Jan Kara 提交于
      fat_cont_expand() is the only user of sync_page_range_nolock(). It's also the
      only user of generic_osync_inode() which does not have a file open.  So
      opencode needed actions for FAT so that we can convert generic_osync_inode() to
      a standard syncing path.
      
      Update a comment about generic_osync_inode().
      
      CC: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: NJan Kara <jack@suse.cz>
      2f3d675b
    • J
      pohmelfs: Use new syncing helper · aa3caafe
      Jan Kara 提交于
      Use new generic_write_sync() helper instead of sync_page_range().
      Acked-by: NEvgeniy Polyakov <zbr@ioremap.net>
      Signed-off-by: NJan Kara <jack@suse.cz>
      aa3caafe