- 01 Dec, 2008 26 commits
-
-
Christoph Hellwig authored
Allocate the inode in xfs_iget_cache_miss and pass it into xfs_iread. This simplifies the error handling and allows xfs_iread to be shared with userspace which already uses these semantics. Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Just pass down the XFS_IGET_* flags all the way down to xfs_imap instead of translating them mid-way. Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Most uses of struct xfs_imap are to map and inode to a buffer. To avoid copying around the inode location information we should just embedd a strcut xfs_imap into the xfs_inode. To make sure it doesn't bloat an inode the im_len is changed to a ushort, which is fine as that's what the users exepect anyway. Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
xfs_imap is the only caller of xfs_dilocate and doesn't add any significant value. Merge the two functions and document the various cases we have for inode cluster lookup in the new xfs_imap. Also remove the unused im_agblkno and im_ioffset fields from struct xfs_imap while we're at it. Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
We have removed the support for old-style inode items a while ago and xlog_recover_do_inode_trans is now only called for XFS_LI_INODE items. That means we can remove the call to xfs_imap there and with it the XFS_IMAP_LOOKUP that is set by all other callers. We can also mark xfs_imap static now. (First sent on October 21st) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
The only caller of xfs_itobp that doesn't have i_blkno setup is now the initial inode read. It needs access to the whole xfs_imap so using xfs_inotobp is not an option. Instead opencode the buffer lookup in xfs_iread and kill all the functionality for the initial map from xfs_itobp. (First sent on October 21st) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Split out the body of the main loop into a separate helper to make the code readable. Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
These names don't add any value at all over just using the numerical values. (First sent on October 9th) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Now that we have a separate xfs_icdinode_t for the in-core inode which gets logged there is no need anymore for the xfs_dinode vs xfs_dinode_core split - the fact that part of the structure gets logged through the inode log item and a small part not can better be described in a comment. All sizeof operations on the dinode_core either really wanted the icdinode and are switched to that one, or had already added the size of the agi unlinked list pointer. Later both will be replaced with helpers once we get the larger CRC-enabled dinode. Removing the data and attribute fork unions also has the advantage that xfs_dinode.h doesn't need to pull in every header under the sun. While we're at it also add some more comments describing the dinode structure. (First sent on October 7th) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
xfs_ialloc_log_di is only used to log the full inode core + di_next_unlinked. That means all the offset magic is not nessecary and we can simply use xfs_trans_log_buf directly. Also add a comment describing what we should do here instead. (First sent on October 7th) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Move all fields from xlog_iclog_fields_t into xlog_in_core_t instead of having them in a substructure and the using #defines to make it look like they were directly in xlog_in_core_t. Also document that xlog_in_core_2_t is grossly misnamed, and make all references to it typesafe. (First sent on Semptember 15th) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
From: Christoph Hellwig authored
Add a helper to read the AGF header and perform basic verification. Based on hunks from a larger patch from Dave Chinner. (First sent on Juli 23rd) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Add a helper to read the AGI header and perform basic verification. Based on hunks from a larger patch from Dave Chinner. (First sent on Juli 23rd) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Dave Chinner authored
i_gen is incremented in directory operations when the directory is changed. It is never read or otherwise used so it should be removed to help reduce the size of the struct xfs_inode. The patch also removes a duplicate logging of the directory inode core. We only need to do this once per transaction so kill the one associated with the i_gen increment. Signed-off-by:
Dave Chinner <david@fromorbit.com> Reviewed-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
The only thing left is xfs_do_force_shutdown which already has a defintion in xfs_mount.h. Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
The only thing left are the forced shutdown flags and freeze macros which fit into xfs_mount.h much better. Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Eric Sandeen authored
This adds the fiemap inode_operation, which for us converts the fiemap values & flags into a getbmapx structure which can be sent to xfs_getbmap. The formatter then copies the bmv array back into the user's fiemap buffer via the fiemap helpers. If we wanted to be more clever, we could also return mapping data for in-inode attributes, but I'm not terribly motivated to do that just yet. Signed-off-by:
Eric Sandeen <sandeen@sandeen.net> Reviewed-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Eric Sandeen authored
This adds a new output flag, BMV_OF_LAST to indicate if we've hit the last extent in the inode. This potentially saves an extra call from userspace to see when the whole mapping is done. It also adds BMV_IF_DELALLOC and BMV_OF_DELALLOC to request, and indicate, delayed-allocation extents. In this case bmv_block is set to -2 (-1 was already taken for HOLESTARTBLOCK; unfortunately these are the reverse of the in-kernel constants.) These new flags facilitate addition of the new fiemap interface. Rather than adding sh_delalloc, remove sh_unwritten & just test the flags directly. Signed-off-by:
Eric Sandeen <sandeen@sandeen.net> Reviewed-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Eric Sandeen authored
Preliminary work to hook up fiemap, this allows us to pass in an arbitrary formatter to copy extent data back to userspace. The formatter takes info for 1 extent, a pointer to the user "thing*" and a pointer to a "filled" variable to indicate whether a userspace buffer did get filled in (for fiemap, hole "extents" are skipped). I'm just using the getbmapx struct as a "common denominator" because as far as I can see, it holds all info that any formatters will care about. ("*thing" because fiemap doesn't pass the user pointer around, but rather has a pointer to a fiemap info structure, and helpers associated with it) Signed-off-by:
Eric Sandeen <sandeen@sandeen.net> Reviewed-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Dave Chinner authored
gcc is warning about an uninitialised variable in xfs_growfs_rt(). This is a false positive. Fix it by changing the scope of the transaction pointer to wholly within the internal loop inside the function. While there, preemptively change xfs_growfs_rt_alloc() in the same way as it has exactly the same structure as xfs_growfs_rt() but gcc is not warning about it. Yet. Signed-off-by:
Dave Chinner <david@fromorbit.com> Reviewed-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Dave Chinner authored
XFS gets the sign of the error wrong in several places when gathering the error from generic linux functions. These functions return negative error values, while the core XFS code returns positive error values. Hence when XFS inverts the error to be returned to the VFS, it can incorrectly invert a negative error and this error will be ignored by the syscall return. Fix all the problems related to calling filemap_* functions. Problem initially identified by Nick Piggin in xfs_fsync(). Signed-off-by:
Dave Chinner <david@fromorbit.com> Reviewed-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Some recent gcc warnings don't like passing string variables to printf-like functions without using at least a "%s" format string. Change the two occurances of that in xfs to please gcc. Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Eric Sandeen <sandeen@sandeen.net> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Now that we've stopped using the Linux inode cache when can trivally support the inode64 mount option on 32bit architectures. As far as the kernel and most userspace is concerned this works perfectly, but applications still using really old stat and readdir interfaces will get an EOVERFLOW error when hitting an inode number not fitting into 32 bits (that problem of course also exists when using these applications on a 64bit kernel). Note that because inode64 is simply a mount option we can currently mount a filesystem having > 32 bit inode numbers and cause a variety of problems, all this is solved but this patch which enables XFS_BIG_INUMS, even when inode64 is not used. (First sent on October 18th) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
Currently there's no ->open method set for directories on XFS. That means we don't perform any check for opening too large directories without O_LARGEFILE, we don't check for shut down filesystems, and we don't actually do the readahead for the first block in the directory. Instead of just setting the directories open routine to xfs_file_open we merge the shutdown check directly into xfs_file_open and create a new xfs_dir_open that first calls xfs_file_open and then performs the readahead for block 0. (First sent on September 29th) Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Dave Chinner <david@fromorbit.com> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
Christoph Hellwig authored
xfs_log_force_umount may be called very early during log recovery where If we fail a buffer read in xlog_recover_do_inode_trans we abort the mount. But at that point log recovery has started delayed writeback of inode buffers. As part of the aborted mount we try to flush out all delwri buffers, but at that point we have already freed the superblock, and set mp->m_sb_bp to NULL, and xfs_log_force_umount which gets called after the inode buffer writeback trips over it. Make xfs_log_force_umount a little more careful when accessing mp->m_sb_bp to avoid this. Signed-off-by:
Christoph Hellwig <hch@lst.de> Reviewed-by:
Eric Sandeen <sandeen@sandeen.net> Signed-off-by:
Niv Sardi <xaiki@sgi.com>
-
- 28 Nov, 2008 1 commit
-
- 21 Nov, 2008 1 commit
-
-
Linus Torvalds authored
* master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] 5330/1: mach-pxa: Fixup reset for systems using reboot=cold or other strings [ARM] pxa: fix incorrect PCMCIA PSKTSEL pin configuration for spitz [ARM] pxa: fix I2C controller device being registered twice on Akita pxafb: only initialize the smart panel thread when dealing with a smartpanel pxafb: introduce LCD_TYPE_MASK and use it.
-
- 20 Nov, 2008 12 commits
-
-
Linus Torvalds authored
-
git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6Linus Torvalds authored
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6: [IA64] xen: fix xen_get_eflags. [IA64] ia64/pv_ops/pv_cpu_ops: fix _IA64_REG_IP case. [IA64] remove duplicate include iommu.h [IA64] use mprintk instead of printk, in ia64_mca_modify_original_stack [IA64] Rationalize kernel mode alignment checking
-
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6Linus Torvalds authored
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: USB: ACE1001 patch for cp2101.c USB: usbmon: fix read(2) USB: gadget rndis: send notifications USB: gadget rndis: stop windows self-immolation USB: storage: update unusual_devs entries for Nokia 5300 and 5310 USB: storage: updates unusual_devs entry for the Nokia 6300 usb: musb: fix bug in musb_schedule USB: fix SB700 usb subsystem hang bug
-
Isaku Yamahata authored
fix xen_get_eflags. It doesn't take any argument. Signed-off-by:
Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by:
Tony Luck <tony.luck@intel.com>
-
Isaku Yamahata authored
pv_cpu_ops.getreg(_IA64_REG_IP) returned constant. But the returned ip valued should be the one in the caller, not of the callee. This patch fixes that. Signed-off-by:
Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by:
Tony Luck <tony.luck@intel.com>
-
Huang Weiyi authored
arch/ia64/kernel/pci-dma.c only needs to include iommu once. Signed-off-by:
Huang Weiyi <weiyi.huang@gmail.com> Signed-off-by:
Tony Luck <tony.luck@intel.com>
-
Hidetoshi Seto authored
Using printk from MCA/INIT context is unsafe since it can cause deadlock. The ia64_mca_modify_original_stack is called from both of mca handler and init handler, so it should use mprintk instead of printk. Signed-off-by:
Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> Signed-off-by:
Tony Luck <tony.luck@intel.com>
-
Tony Luck authored
Itanium processors can handle some misaligned data accesses. They also provide a mode where all such accesses are forced to trap. The kernel was schizophrenic about use of this mode: * Base kernel code ran in permissive mode where the only traps generated were from those cases that the h/w could not handle. * Interrupt, syscall and trap code ran in strict mode where all unaligned accesses caused traps to the 0x5a00 unaligned reference vector. Use strict alignment checking throughout the kernel, but make sure that we continue to let user mode use more relaxed mode as the default. Signed-off-by:
Tony Luck <tony.luck@intel.com>
-
Matthew Wilcox authored
When we migrate an interrupt from one CPU to another, we set the move_in_progress flag and clean up the vectors later once they're not being used. If you're unlucky and call destroy_irq() before the vectors become un-used, the move_in_progress flag is never cleared, which causes the interrupt to become unusable. This was discovered by Jesse Brandeburg for whom it manifested as an MSI-X device refusing to use MSI-X mode when the driver was unloaded and reloaded repeatedly. Signed-off-by:
Matthew Wilcox <willy@linux.intel.com> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
-
Trond Myklebust authored
Fix a regression reported by Max Kellermann whereby kernel profiling showed that his clients were spending 45% of their time in rpcauth_lookup_credcache. It turns out that although his processes had identical uid/gid/groups, generic_match() was failing to detect this, because the task->group_info pointers were not shared. This again lead to the creation of a huge number of identical credentials at the RPC layer. The regression is fixed by comparing the contents of task->group_info if the actual pointers are not identical. Signed-off-by:
Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
-
git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6Linus Torvalds authored
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: [CIFS] Do not attempt to close invalidated file handles [CIFS] fix check for dead tcon in smb_init
-
git://ftp.linux-mips.org/pub/scm/upstream-linusLinus Torvalds authored
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: MIPS: csrc-r4k: Fix declaration depending on the wrong CONFIG_ symbol. MIPS: csrc-r4k: Fix spelling mistake. MIPS: RB532: Provide functions for gpio configuration MIPS: IP22: Make indy_sc_ops variable static MIPS: RB532: GPIO register offsets are relative to GPIOBASE MIPS: Malta: Fix include paths in malta-amon.c
-