aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2006-08-30[POWERPC] Make OF irq map code detect more error casesBenjamin Herrenschmidt3-7/+25
Device-tree bugs on js20 with some versions of SLOF were causing the interrupt for IDE to not be parsed correctly and fail to boot. This patch adds a bit more sanity checking to the parser to detect some of those errors and fail instead of returning bogus information. The powerpc PCI code can then trigger a fallback that works on those machines. Signed-off-by: Benjamin Herrenschmidt <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-08-30[POWERPC] Support for "weird" MPICs and fixup mpc7448_hpc2Zang Roy-r619115-66/+305
This adds a new hardware information table for mpic. This enables the mpic code to deal with mpic controllers with different register layouts and hardware behaviours. This introduces CONFIG_MPIC_WEIRD. For boards with non standard mpic controllers, select CONFIG_MPIC_WEIRD and add its hardware information in the mpic_infos[] array. TSI108/109 PIC takes the first index of weird hardware information table. :) The table can be extended. The Tsi108/109 PIC looks like standard OpenPIC but, in fact, is different in register mapping and behavior. The patch does not affect the behavior of standard mpic. If CONFIG_MPIC_WEIRD is not defined, the code is essentially identical to the current code. [[email protected]: This patch is a slightly cleaned up version of Zang Roy's support for the TSI108 MPIC variant. It also fixes up MPC7448_hpc2 to use the new version of the type macros and changes the way MPIC is selected in Kconfig to better match what is done for other system devices. ] Signed-off-by: Roy Zang <[email protected]> Signed-off-by: Benjamin Herrenschmidt <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-08-29[SUNLANCE]: Fix probing problem.Krzysztof Helt1-16/+11
The current probe table causes ledma and lebuffer "le" devices to get probed twice which is not what we want. Match just "le" and look directly at the parent to get the correct top-level node information. Signed-off-by: Krzysztof Helt <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2006-08-29[SPARC64]: Fix X server hangs due to large pages.David S. Miller1-0/+2
This problem was introduced by changeset 14778d9072e53d2171f66ffd9657daff41acfaed Unlike the hugetlb code paths, the normal fault code is not setup to propagate PTE changes for large page sizes correctly like the ones we make for I/O mappings in io_remap_pfn_range(). It is absolutely necessary to update all sub-ptes of a largepage mapping on a fault. Adding special handling for this would add considerably complexity to tlb_batch_add(). So let's just side-step the issue and forcefully dirty any writable PTEs created by io_remap_pfn_range(). The only other real option would be to disable to large PTE code of io_remap_pfn_range() and we really don't want to do that. Much thanks to Mikael Pettersson for tracking down this problem and testing debug patches. Signed-off-by: David S. Miller <[email protected]>
2006-08-29[STRIP]: Fix neighbour table refcount leak.Stephen Hemminger1-2/+4
Found by inspection. The STRIP driver does neigh_lookup() but never releases. This driver shouldn't being doing gratuitous arp anyway. Untested, obviously, because of lack of hardware. Signed-off-by: Stephen Hemminger <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2006-08-29[IPV6]: ipv6_add_addr should install dstentry earlierKeir Fraser1-2/+2
ipv6_add_addr allocates a struct inet6_ifaddr and a dstentry, but it doesn't install the dstentry in ifa->rt until after it releases the addrconf_hash_lock. This means other CPUs will be able to see the new address while it hasn't been initialized completely yet. One possible fix would be to grab the ifp->lock spinlock when creating the address struct; a simpler fix is to just move the assignment. Acked-by: [email protected] Acked-by: [email protected] Acked-by: YOSHIFUJI Hideaki <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2006-08-29[NETLINK]: Call panic if nl_table allocation failsAkinobu Mita1-8/+6
This patch makes crash happen if initialization of nl_table fails in initcalls. It is better than getting use after free crash later. Signed-off-by: Akinobu Mita <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2006-08-29[TCP]: Two RFC3465 Appropriate Byte Count fixes.Daikichi Osuga2-3/+8
1) fix slow start after retransmit timeout 2) fix case of L=2*SMSS acked bytes comparison Signed-off-by: Daikichi Osuga <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2006-08-29[IPV6]: SNMPv2 "ipv6IfStatsInAddrErrors" counter errorLv Liangying1-0/+4
When I tested Linux kernel 2.6.17.7 about statistics "ipv6IfStatsInAddrErrors", found that this counter couldn't increase correctly. The criteria is RFC2465: ipv6IfStatsInAddrErrors OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of input datagrams discarded because the IPv6 address in their IPv6 header's destination field was not a valid address to be received at this entity. This count includes invalid addresses (e.g., ::0) and unsupported addresses (e.g., addresses with unallocated prefixes). For entities which are not IPv6 routers and therefore do not forward datagrams, this counter includes datagrams discarded because the destination address was not a local address." ::= { ipv6IfStatsEntry 5 } When I send packet to host with destination that is ether invalid address(::0) or unsupported addresses(1::1), the Linux kernel just discard the packet, and the counter doesn't increase(in the function ip6_pkt_discard). Signed-off-by: Lv Liangying <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2006-08-29[E100]: Add module option to ignore bad EEPROM checksums.David S. Miller1-1/+5
Several people run into the situation where the E100 EEPROM contents are fine, but the checksum hasn't been set properly. This renders the device useless for them even though it would function correctly. The default is off, which retains the current behavior. Signed-off-by: David S. Miller <[email protected]>
2006-08-29[SCTP]: Fix sctp_primitive_ABORT() call in sctp_close().Sridhar Samudrala1-3/+7
With the recent fix, the callers of sctp_primitive_ABORT() need to create an ABORT chunk and pass it as an argument rather than msghdr that was passed earlier. Signed-off-by: Sridhar Samudrala <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2006-08-30[XFS] Fix char size overflow in bmap_alloc call for unwritten extentAdrian Bunk1-1/+1
conversion. Since bma.conv is a char and XFS_BMAPI_CONVERT is 0x1000, bma.conv was always assigned zero. Spotted by the GNU C compiler (SVN version). SGI-PV: 947312 SGI-Modid: xfs-linux-melb:xfs-kern:26887a Signed-off-by: Adrian Bunk <[email protected]> Signed-off-by: Nathan Scott <[email protected]>
2006-08-30[XFS] Update the MAINTAINERS file entry for XFS.Nathan Scott1-1/+2
Signed-off-by: Nathan Scott <[email protected]>
2006-08-30[POWERPC] Fix MPIC sense codes in documentationBenjamin Herrenschmidt1-3/+3
The booting-without-of.txt had incorrect definition for the sense codes for an OpenPIC controller Signed-off-by: Benjamin Herrenschmidt <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-08-30[POWERPC] Fix performance regression in IRQ radix tree lockingBenjamin Herrenschmidt1-18/+66
When reworking the powerpc irq code, I figured out that we were using the radix tree in a racy way. As a temporary fix, I put a spinlock in there. However, this can have a significant impact on performances. This patch reworks that to use a smarter technique based on the fact that what we need is in fact a rwlock with extremely rare writers (thus optimized for the read path). Signed-off-by: Benjamin Herrenschmidt <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-08-30[POWERPC] Add mpc7448hpc2 device tree source fileZang Roy-r619111-0/+190
This patch adds the mpc7448hpc2 device tree source file. Signed-off-by: Roy Zang <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-08-30[POWERPC] Add MPC8349E MDS device tree source file to arch/powerpc/boot/dtsKim Phillips1-0/+328
Add MPC8349E MDS device tree source file to arch/powerpc/boot/dts Signed-off-by: Kim Phillips <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-08-30[POWERPC] modify mpc83xx platforms to use new IRQ layerKim Phillips5-87/+28
This fixes MPC834x MDS (formerly SYS) and ITX platform code to get IRQ data (including PCI) from the device tree, and to use the new IPIC code. renamed defconfig (sys -> mds), left one redundant NULL assignment in mpc83xx_pcibios_fixup to keep the compiler happy. Signed-off-by: Kim Phillips <[email protected]> Signed-off-by: Li Yang <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-08-30[POWERPC] Adapt ipic driver to new host_ops interface, add set_irq_type to ↵Kim Phillips2-98/+228
set IRQ sense This converts ipic code to Benh's IRQ mods. For the IPIC, IRQ sense values in the device tree equal those in include/linux/irq.h; that's 8 for low assertion (most internal IRQs on mpc83xx), and 2 for high-to-low change. spinlocks added to [un]mask, ack operations; default handler and type now set in host_map; and redundant condition check eliminated. Signed-off-by: Kim Phillips <[email protected]> Signed-off-by: Li Yang <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-08-30[POWERPC] back up old school ipic.[hc] to arch/ppcKim Phillips5-6/+705
Keep from breaking 83xx arch/ppc build. Back up old school arch/powerpc/sysdev/ipic.[hc] to arch/ppc/syslib. Signed-off-by: Kim Phillips <[email protected]> Signed-off-by: Paul Mackerras <[email protected]>
2006-08-29Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6Linus Torvalds17-260/+576
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: [CIFS] Do not send Query All EAs SMB when mount option nouser_xattr [CIFS] endian errors in lanman protocol support [CIFS] Fix oops in cifs_close due to unitialized lock sem and list in [CIFS] Fix oops when negotiating lanman and no password specified [CIFS] [CIFS] Allow cifsd to suspend if connection is lost [CIFS] Make midState usage more consistent [CIFS] spinlock protect read of last srv response time in timeout path [CIFS] Do not time out posix brl requests when using new posix setfileinfo
2006-08-29[IA64] Increase default nodes shift to 10, nr_cpus to 1024Christoph Lameter1-2/+2
Change both the NODES_SHIFT and the NR_CPUS so that even big machines can boot all nodes and processors with a generic kernel. Signed-off-by: Christoph Lameter <[email protected]> Signed-off-by: Tony Luck <[email protected]>
2006-08-29[IA64] remove redundant local_irq_save() calls from sn_sal.hRuss Anderson1-6/+0
sn_change_memprotect() does a local_irq_save() then calls ia64_sal_oemcall_nolock() which calls SAL_CALL_NOLOCK() which also does a local_irq_save(). This patch removes the redundant local_irq_save() and local_irq_restore() calls in sn_change_memprotect() and sn_inject_error(). Signed-off-by: Russ Anderson <[email protected]> Signed-off-by: Tony Luck <[email protected]>
2006-08-28Merge master.kernel.org:/home/rmk/linux-2.6-serialLinus Torvalds2-0/+17
* master.kernel.org:/home/rmk/linux-2.6-serial: [SERIAL] Support for Intashield 2 port PCI serial card
2006-08-28Merge master.kernel.org:/home/rmk/linux-2.6-armLinus Torvalds17-79/+205
* master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] 3761/1: fix armv4t breakage after adding thumb interworking to userspace helpers [ARM] Add Integrator support for glibc outb() and friends [ARM] Move prototype for register_isa_ports to asm/io.h [ARM] Arrange for isa.c to use named initialisers [ARM] 3741/1: remove sa1111.c build warning on non-sa1100 systems [ARM] 3760/1: This patch adds timeouts while working with SSP registers. Such timeouts were en [ARM] 3758/1: Preserve signalling NaNs in conversion [ARM] 3749/3: Correct VFP single/double conversion emulation [ARM] 3748/3: Correct error check in vfp_raise_exceptions
2006-08-28[ARM] 3761/1: fix armv4t breakage after adding thumb interworking to ↵Lennert Buytenhek2-5/+11
userspace helpers Patch from Lennert Buytenhek On armv4t systems, we have always compiled the kernel with -march=armv4 instead of -march=armv4t, which means that any use of bx will bomb out. Commit ba9b5d76372dc290b6ca04dad93927a22c2ac49a introduced the use of bx in the kernel, which means we need to compile with -march=armv4t on armv4t systems now. Signed-off-by: Lennert Buytenhek <[email protected]> Signed-off-by: Russell King <[email protected]>
2006-08-28[ARM] Add Integrator support for glibc outb() and friendsRussell King2-2/+3
Add the necessary call to register_isa_ports() so that glibc knows where these are found on Integrator platforms. Signed-off-by: Russell King <[email protected]>
2006-08-28[ARM] Move prototype for register_isa_ports to asm/io.hRussell King2-1/+7
Signed-off-by: Russell King <[email protected]>
2006-08-28[ARM] Arrange for isa.c to use named initialisersRussell King1-21/+42
Convert isa.c (the glibc interface for emulating ISA IO) to use named initialisers. Signed-off-by: Russell King <[email protected]>
2006-08-27Linux v2.6.18-rc5Linus Torvalds1-1/+1
2006-08-27[PATCH] Fix tty layer DoS and comment relevant codeAlan Cox2-10/+80
Unlike the other tty comment patch this one has code changes. Specifically it limits the queue size for a tty to 64K characters (128Kbytes) worst case even if the tty is ignoring tty->throttle. This is because certain drivers don't honour the throttle value correctly, although it is a useful safeguard anyway. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] tty layer comment the locking assumptions and functions somewhatAlan Cox2-62/+715
Doesn't fix them but does show up some interesting areas that need review and fixing. Signed-off-by: Alan Cox <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] cdrom/gdsc: fix printk format warningRandy Dunlap1-1/+1
Fix printk format warning: drivers/cdrom/gscd.c:269: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 2 has type ‘unsigned int’ Signed-off-by: Randy Dunlap <[email protected]> Cc: Jens Axboe <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] x86: NUMAQ Kconfig fixKAMEZAWA Hiroyuki1-1/+3
When we select NUMA with i386, the system is only X86_NUMAQ or using ACPI. Signed-off-by: KAMEZAWA Hiroyuki <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] /proc/meminfo: don't put spaces in namesAndrew Morton2-2/+2
None of the other /proc/meminfo lines have a space in the identifier. This post-2.6.17 addition has the potential to break existing parsers, so use an underscore instead (like Committed_AS). Cc: Christoph Lameter <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] fix up lockdep trace in fs/exec.cDave Jones1-1/+1
This fixes the locking error noticed by lockdep: ============================================= [ INFO: possible recursive locking detected ] --------------------------------------------- init/1 is trying to acquire lock: (&sighand->siglock){....}, at: [<c047a78a>] flush_old_exec+0x3ae/0x859 but task is already holding lock: (&sighand->siglock){....}, at: [<c047a77a>] flush_old_exec+0x39e/0x859 other info that might help us debug this: 2 locks held by init/1: #0: (tasklist_lock){..--}, at: [<c047a76a>] flush_old_exec+0x38e/0x859 #1: (&sighand->siglock){....}, at: [<c047a77a>] flush_old_exec+0x39e/0x859 stack backtrace: [<c04051e1>] show_trace_log_lvl+0x54/0xfd [<c040579d>] show_trace+0xd/0x10 [<c04058b6>] dump_stack+0x19/0x1b [<c043b33a>] __lock_acquire+0x773/0x997 [<c043bacf>] lock_acquire+0x4b/0x6c [<c060630b>] _spin_lock+0x19/0x28 [<c047a78a>] flush_old_exec+0x3ae/0x859 [<c0498053>] load_elf_binary+0x4aa/0x1628 [<c0479cab>] search_binary_handler+0xa7/0x24e [<c047b577>] do_execve+0x15b/0x1f9 [<c04022b4>] sys_execve+0x29/0x4d [<c0403faf>] syscall_call+0x7/0xb Signed-off-by: Arjan van de Ven <[email protected]> Signed-off-by: Dave Jones <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] lockdep: annotate reiserfsIngo Molnar2-2/+3
reiserfs seems to have another locking level layer for the i_mutex due to the xattrs-are-a-directory thing. Signed-off-by: Ingo Molnar <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] lockdep: annotate idescsi_pc_intr()Ingo Molnar1-1/+1
idescsi_pc_intr() uses local_irq_enable() in IRQ context: annotate it. (this has no effect on kernels with lockdep disabled. On kernels with lockdep enabled this means that we wont actually disable interrupts, and the warning message will go away as well.) Signed-off-by: Ingo Molnar <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] CONFIG_ACPI_SRAT NUMA build fixKAMEZAWA Hiroyuki1-1/+1
In file included from include/asm/mmzone.h:18, from include/linux/mmzone.h:439, <snip> include/asm/srat.h:31:2: error: #error CONFIG_ACPI_SRAT not defined, and srat.h header has been included make[1]: *** [arch/i386/kernel/asm-offsets.s] Error 1 This can happen with CONFIG_NUMA && !CONFIG_ACPI && !CONFIG_X86_NUMAQ Signed-off-by: KAMEZAWA Hiroyuki <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] cpuset: oom panic fixNick Piggin1-1/+1
cpuset_excl_nodes_overlap always returns 0 if current is exiting. This caused customer's systems to panic in the OOM killer when processes were having trouble getting memory for the final put_user in mm_release. Even though there were lots of processes to kill. Change to returning 1 in this case. This achieves parity with !CONFIG_CPUSETS case, and was observed to fix the problem. Signed-off-by: Nick Piggin <[email protected]> Acked-by: Paul Jackson <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] register_one_node() compile fixKAMEZAWA Hiroyuki1-1/+9
register_one_node()'s should be defined under CONFIG_NUMA=n. fixes following bug. CC init/version.o LD init/built-in.o LD .tmp_vmlinux1 mm/built-in.o: In function `add_memory': undefined reference to `register_one_node' Signed-off-by: KAMEZAWA Hiroyuki <[email protected]> Acked-by: Yasunori Goto <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] Manage jbd allocations from its own slabsBadari Pulavarty4-13/+97
JBD currently allocates commit and frozen buffers from slabs. With CONFIG_SLAB_DEBUG, its possible for an allocation to cross the page boundary causing IO problems. https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=200127 So, instead of allocating these from regular slabs - manage allocation from its own slabs and disable slab debug for these slabs. [[email protected]: cleanups] Signed-off-by: Badari Pulavarty <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] cpuset: top_cpuset tracks hotplug changes to cpu_online_mapPaul Jackson2-0/+39
Change the list of cpus allowed to tasks in the top (root) cpuset to dynamically track what cpus are online, using a CPU hotplug notifier. Make this top cpus file read-only. On systems that have cpusets configured in their kernel, but that aren't actively using cpusets (for some distros, this covers the majority of systems) all tasks end up in the top cpuset. If that system does support CPU hotplug, then these tasks cannot make use of CPUs that are added after system boot, because the CPUs are not allowed in the top cpuset. This is a surprising regression over earlier kernels that didn't have cpusets enabled. In order to keep the behaviour of cpusets consistent between systems actively making use of them and systems not using them, this patch changes the behaviour of the 'cpus' file in the top (root) cpuset, making it read only, and making it automatically track the value of cpu_online_map. Thus tasks in the top cpuset will have automatic use of hot plugged CPUs allowed by their cpuset. Thanks to Anton Blanchard and Nathan Lynch for reporting this problem, driving the fix, and earlier versions of this patch. Signed-off-by: Paul Jackson <[email protected]> Cc: Nathan Lynch <[email protected]> Cc: Anton Blanchard <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] md: fix recent breakage of md/raid1 array checkingNeilBrown1-3/+4
A recent patch broke the ability to do a user-request check of a raid1. This patch fixes the breakage and also moves a comment that was dislocated by the same patch. Signed-off-by: Neil Brown <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] md: avoid backward event updates in md superblock when degraded.NeilBrown1-0/+13
If we - shut down a clean array, - restart with one (or more) drive(s) missing - make some changes - pause, so that they array gets marked 'clean', the event count on the superblock of included drives will be the same as that of the removed drives. So adding the removed drive back in will cause it to be included with no resync. To avoid this, we only update the eventcount backwards when the array is not degraded. In this case there can (should) be no non-connected drives that we can get confused with, and this is the particular case where updating-backwards is valuable. Signed-off-by: Neil Brown <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] eventpoll.c compile fixMasoud Asgharifard Sharbiani1-2/+2
Fix two compile failures in eventpoll.c code which would happen if DEBUG_EPOLL is bigger than zero. Signed-off-by: Masoud Sharbiani <[email protected]> Cc: Davide Libenzi <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] Documentation update for relay interfaceTom Zanussi3-444/+481
Here's updated documentation for the relay interface, rewritten to match the relayfs->relay changes. It also moves relayfs.txt to relay.txt in the process. It includes the changes to relayfs.txt previously posted by Randy Dunlap, thanks for those. The relay-apps examples have also been updated to match, and can be found on the sourceforge relayfs website. Signed-off-by: Tom Zanussi <[email protected]> Cc: "Randy.Dunlap" <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] Remove redundant up() in stop_machine()Yingchao Zhou1-1/+0
An up() is called in kernel/stop_machine.c on failure, and also in the caller (unconditionally). Signed-off-by: Zhou Yingchao <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] ufs: truncate correctionEvgeniy Dushistov1-52/+25
1) When we allocated last fragment in ufs_truncate, we read page, check if block mapped to address, and if not trying to allocate it. This is wrong behaviour, fragment may be NOT allocated, but mapped, this happened because of "block map" function not checked allocated fragment or not, it just take address of the first fragment in the block, add offset of fragment and return result, this is correct behaviour in almost all situation except call from ufs_truncate. 2) Almost all implementation of UFS, which I can investigate have such "defect": if you have full disk, and try truncate file, for example 3GB to 2MB, and have hole in this region, truncate return -ENOSPC. I tried evade from this problem, but "block allocation" algorithm is tied to right value of i_lastfrag, and fix of this corner case may slow down of ordinaries scenarios, so this patch makes behavior of "truncate" operations similar to what other UFS implementations do. Signed-off-by: Evgeniy Dushistov <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-08-27[PATCH] ufs: write to hole in big fileEvgeniy Dushistov1-14/+21
On UFS, this scenario: open(O_TRUNC) lseek(1024 * 1024 * 80) write("A") lseek(1024 * 2) write("A") may cause access to invalid address. This happened because of "goal" is calculated in wrong way in block allocation path, as I see this problem exists also in 2.4. We use construction like this i_data[lastfrag], i_data array of pointers to direct blocks, indirect and so on, it has ceratain size ~20 elements, and lastfrag may have value for example 40000. Also this patch fixes related to handling such scenario issues, wrong zeroing metadata, in case of block(not fragment) allocation, and wrong goal calculation, when we allocate block Signed-off-by: Evgeniy Dushistov <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>