aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-07-23powerpc/mpic: Create a revmap with enough entries for IPIs and timersBenjamin Herrenschmidt1-1/+1
The current mpic code creates a linear revmap just big enough for all the sources, which happens to miss the IPIs and timers on some machines. This will in turn break when the irqdomain code loses the fallback of doing a linear search when the revmap fails (and really slows down IPIs otherwise). This happens for example on the U4 based Apple machines such as the dual core PowerMac G5s. Signed-off-by: Benjamin Herrenschmidt <[email protected]>
2012-07-22net: Fix references to out-of-scope variables in put_cmsg_compat()Jesper Juhl1-2/+2
In net/compat.c::put_cmsg_compat() we may assign 'data' the address of either the 'ctv' or 'cts' local variables inside the 'if (!COMPAT_USE_64BIT_TIME)' branch. Those variables go out of scope at the end of the 'if' statement, so when we use 'data' further down in 'copy_to_user(CMSG_COMPAT_DATA(cm), data, cmlen - sizeof(struct compat_cmsghdr))' there's no telling what it may be refering to - not good. Fix the problem by simply giving 'ctv' and 'cts' function scope. Signed-off-by: Jesper Juhl <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2012-07-22Merge branch 'kill_rtcache'David S. Miller26-1206/+292
The ipv4 routing cache is non-deterministic, performance wise, and is subject to reasonably easy to launch denial of service attacks. The routing cache works great for well behaved traffic, and the world was a much friendlier place when the tradeoffs that led to the routing cache's design were considered. What it boils down to is that the performance of the routing cache is a product of the traffic patterns seen by a system rather than being a product of the contents of the routing tables. The former of which is controllable by external entitites. Even for "well behaved" legitimate traffic, high volume sites can see hit rates in the routing cache of only ~%10. The general flow of this patch series is that first the routing cache is removed. We build a completely new rtable entry every lookup request. Next we make some simplifications due to the fact that removing the routing cache causes several members of struct rtable to become no longer necessary. Then we need to make some amends such that we can legally cache pre-constructed routes in the FIB nexthops. Firstly, we need to invalidate routes which are hit with nexthop exceptions. Secondly we have to change the semantics of rt->rt_gateway such that zero means that the destination is on-link and non-zero otherwise. Now that the preparations are ready, we start caching precomputed routes in the FIB nexthops. Output and input routes need different kinds of care when determining if we can legally do such caching or not. The details are in the commit log messages for those changes. The patch series then winds down with some more struct rtable simplifications and other tidy ups that remove unnecessary overhead. On a SPARC-T3 output route lookups are ~876 cycles. Input route lookups are ~1169 cycles with rpfilter disabled, and about ~1468 cycles with rpfilter enabled. These measurements were taken with the kbench_mod test module in the net_test_tools GIT tree: git://git.kernel.org/pub/scm/linux/kernel/git/davem/net_test_tools.git That GIT tree also includes a udpflood tester tool and stresses route lookups on packet output. For example, on the same SPARC-T3 system we can run: time ./udpflood -l 10000000 10.2.2.11 with routing cache: real 1m21.955s user 0m6.530s sys 1m15.390s without routing cache: real 1m31.678s user 0m6.520s sys 1m25.140s Performance undoubtedly can easily be improved further. For example fib_table_lookup() performs a lot of excessive computations with all the masking and shifting, some of it conditionalized to deal with edge cases. Also, Eric's no-ref optimization for input route lookups can be re-instated for the FIB nexthop caching code path. I would be really pleased if someone would work on that. In fact anyone suitable motivated can just fire up perf on the loading of the test net_test_tools benchmark kernel module. I spend much of my time going: bash# perf record insmod ./kbench_mod.ko dst=172.30.42.22 src=74.128.0.1 iif=2 bash# perf report Thanks to helpful feedback from Joe Perches, Eric Dumazet, Ben Hutchings, and others. Signed-off-by: David S. Miller <[email protected]>
2012-07-23Remove stale .rej fileBenjamin Herrenschmidt1-22/+0
Commit 9778b696a0188ad3b3524b383953ee73b31b7b68 accidentally added a .rej file (probably my fault), remove it. Signed-off-by: Benjamin Herrenschmidt <[email protected]>
2012-07-22Merge tag 'mmc-merge-for-3.6-rc1' of ↵Linus Torvalds43-519/+1057
git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc Pull MMC updates from Chris Ball: "MMC highlights for 3.6: Core: - Rename cd-gpio to slot-gpio and extend it to support more slot GPIO functions, such as write-protect. - Add a function to get regulators (Vdd and Vccq) for a host. Drivers: - sdhci-pxav2, sdhci-pxav3: Add device tree support. - sdhi: Add device tree support. - sh_mmcif: Add support for regulators, device tree, slot-gpio. - tmio: Add regulator support, use slot-gpio." * tag 'mmc-merge-for-3.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (62 commits) mmc: sdhci-dove: Prepare for common clock framework mmc: sdhci-dove: Add SDHCI_QUIRK_NO_HISPD_BIT mmc: omap_hsmmc: ensure probe returns error upon resource failure mmc: mxs-mmc: Add wp-inverted property mmc: esdhc: Fix DMA_MASK to not break mx25 DMA access mmc: core: reset signal voltage on power up mmc: sd: Fix sd current limit setting mmc: omap_hsmmc: add clk_prepare and clk_unprepare mmc: sdhci: When a UHS switch fails, cycle power if regulator is used mmc: atmel-mci: modify CLKDIV displaying in debugfs mmc: atmel-mci: fix incorrect setting of host->data to NULL mmc: sdhci: poll for card even when card is logically unremovable mmc: sdhci: Introduce new flag SDHCI_USING_RETUNING_TIMER mmc: sdio: Change pr_warning to pr_warn_ratelimited mmc: core: Simplify and fix for SD switch processing mmc: sdhci: restore host settings when card is removed mmc: sdhci: fix incorrect command used in tuning mmc: sdhci-pci: CaFe has broken card detection mmc: sdhci: Report failure reasons for all cases in sdhci_add_host() mmc: s3cmci: Convert s3cmci driver to gpiolib API ...
2012-07-22Merge branch 'x86-mce-for-linus' of ↵Linus Torvalds8-153/+160
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull x86/mce changes from Ingo Molnar: "This tree improves the AMD thresholding bank code and includes a memory fault signal handling fixlet." * 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/mce: Fix siginfo_t->si_addr value for non-recoverable memory faults x86, MCE, AMD: Update copyrights and boilerplate x86, MCE, AMD: Give proper names to the thresholding banks x86, MCE, AMD: Make error_count read only x86, MCE, AMD: Cleanup reading of error_count x86, MCE, AMD: Print decimal thresholding values x86, MCE, AMD: Move shared bank to node descriptor x86, MCE, AMD: Remove local_allocate_... wrapper x86, MCE, AMD: Remove shared banks sysfs linking x86, amd_nb: Export model 0x10 and later PCI id
2012-07-22mmc: sdhci-dove: Prepare for common clock frameworkSebastian Hesselbarth1-1/+47
As mach-dove is moving towards common clock framework prepare the sdhci driver to grab its clock. Signed-off-by: Sebastian Hesselbarth <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2012-07-22mmc: sdhci-dove: Add SDHCI_QUIRK_NO_HISPD_BITSebastian Hesselbarth1-1/+2
The sdio controller on dove doesn't have a bit to indicate high-speed. With the quirk set it fixes accessing high-speed sdcards. Signed-off-by: Sebastian Hesselbarth <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2012-07-22mmc: omap_hsmmc: ensure probe returns error upon resource failureKevin Hilman1-0/+2
If platform_get_resource_by_name() fails, driver probe is aborted an should return an error so the driver is not bound to the device. However, in the current error path of platform_get_resource_by_name(), probe returns zero since the return value (ret) is not properly set. With a zero return value, the driver core assumes probe was successful and will bind the driver to the device. Fix this by ensuring that probe returns an error code in this failure path. Signed-off-by: Kevin Hilman <[email protected]> Acked-by: Venkatraman S <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2012-07-22mmc: mxs-mmc: Add wp-inverted propertyMarek Vasut1-2/+13
The write-protect GPIO is inverted on some boards. Handle such case. Signed-off-by: Marek Vasut <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2012-07-22mmc: esdhc: Fix DMA_MASK to not break mx25 DMA accessWilson Callan1-2/+7
Patch to not set reserved bits in i.MX25 PROCTL register. DMA stops working if those bits get set. Signed-off-by: Wilson Callan <[email protected]> Acked-by: Sascha Hauer <[email protected]> Signed-off-by: Chris Ball <[email protected]>
2012-07-22Merge tag 'pm-for-3.6-rc1' of ↵Linus Torvalds65-479/+887
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm Pull power management updates from Rafael Wysocki: - ACPI conversion to PM handling based on struct dev_pm_ops. - Conversion of a number of platform drivers to PM handling based on struct dev_pm_ops and removal of empty legacy PM callbacks from a couple of PCI drivers. - Suspend-to-both for in-kernel hibernation from Bojan Smojver. - cpuidle fixes and cleanups from ShuoX Liu, Daniel Lezcano and Preeti Murthy. - cpufreq bug fixes from Jonghwa Lee and Stephen Boyd. - Suspend and hibernate fixes from Srivatsa Bhat and Colin Cross. - Generic PM domains framework updates. - RTC CMOS wakeup signaling update from Paul Fox. - sparse warnings fixes from Sachin Kamat. - Build warnings fixes for the generic PM domains framework and PM sysfs code. - sysfs switch for printing device suspend times from Sameer Nanda. - Documentation fix from Oskar Schirmer. * tag 'pm-for-3.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (70 commits) cpufreq: Fix sysfs deadlock with concurrent hotplug/frequency switch EXYNOS: bugfix on retrieving old_index from freqs.old PM / Sleep: call early resume handlers when suspend_noirq fails PM / QoS: Use NULL pointer instead of plain integer in qos.c PM / QoS: Use NULL pointer instead of plain integer in pm_qos.h PM / Sleep: Require CAP_BLOCK_SUSPEND to use wake_lock/wake_unlock PM / Sleep: Add missing static storage class specifiers in main.c cpuilde / ACPI: remove time from acpi_processor_cx structure cpuidle / ACPI: remove usage from acpi_processor_cx structure cpuidle / ACPI : remove latency_ticks from acpi_processor_cx structure rtc-cmos: report wakeups from interrupt handler PM / Sleep: Fix build warning in sysfs.c for CONFIG_PM_SLEEP unset PM / Domains: Fix build warning for CONFIG_PM_RUNTIME unset olpc-xo15-sci: Use struct dev_pm_ops for power management PM / Domains: Replace plain integer with NULL pointer in domain.c file PM / Domains: Add missing static storage class specifier in domain.c file PM / crypto / ux500: Use struct dev_pm_ops for power management PM / IPMI: Remove empty legacy PCI PM callbacks tpm_nsc: Use struct dev_pm_ops for power management tpm_tis: Use struct dev_pm_ops for power management ...
2012-07-22Merge branch 'for-next' of ↵Linus Torvalds35-2390/+1675
git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending Pull target updates from Nicholas Bellinger: "There have been lots of work in a number of areas this past round. The highlights include: - Break out target_core_cdb.c emulation into SPC/SBC ops (hch) - Add a parse_cdb method to target backend drivers (hch) - Move sync_cache + write_same + unmap into spc_ops (hch) - Use target_execute_cmd for WRITEs in iscsi_target + srpt (hch) - Offload WRITE I/O backend submission in tcm_qla2xxx + tcm_fc (hch + nab) - Refactor core_update_device_list_for_node() into enable/disable funcs (agrover) - Replace the TCM processing thread with a TMR work queue (hch) - Fix regression in transport_add_device_to_core_hba from TMR conversion (DanC) - Remove racy, now-redundant check of sess_tearing_down with qla2xxx (roland) - Add range checking, fix reading of data len + possible underflow in UNMAP (roland) - Allow for target_submit_cmd() returning errors + convert fabrics (roland + nab) - Drop bogus struct file usage for iSCSI/SCTP (viro)" * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (54 commits) iscsi-target: Drop bogus struct file usage for iSCSI/SCTP target: NULL dereference on error path target: Allow for target_submit_cmd() returning errors target: Check number of unmap descriptors against our limit target: Fix possible integer underflow in UNMAP emulation target: Fix reading of data length fields for UNMAP commands target: Add range checking to UNMAP emulation target: Add generation of LOGICAL BLOCK ADDRESS OUT OF RANGE target: Make unnecessarily global se_dev_align_max_sectors() static target: Remove se_session.sess_wait_list qla2xxx: Remove racy, now-redundant check of sess_tearing_down target: Check sess_tearing_down in target_get_sess_cmd() sbp-target: Consolidate duplicated error path code in sbp_handle_command() target: Un-export target_get_sess_cmd() qla2xxx: Get rid of redundant qla_tgt_sess.tearing_down target: Make core_disable_device_list_for_node use pre-refactoring lock ordering target: refactor core_update_device_list_for_node() target: Eliminate else using boolean logic target: Misc retval cleanups target: Remove hba param from core_dev_add_lun ...
2012-07-22Merge tag 'regulator-3.6' of ↵Linus Torvalds67-2650/+5524
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator Pull regulator updates from Mark Brown: "Lots and lots of fixes from Axel and some others here, plus some framework enhancements which continue the theme of factoring code out of the drivers and into the core. - Initial framework support for GPIO controlled enable signals, saving a bunch of code in drivers. - Move fixed regulator enable time and voltage mapping table specifications to data. - Used some of the recent framework enhancements to make voltage change notifications more useful, passing the voltage in as an argument to the notification. - Fixed the pattern used for finding individual regulators on a device to not rely on the node name, supporting the use of multiple PMICs of the same type in the system. - New drivers for Maxim MAX77686, TI LP872x and LP8788, Samsung S2MPS11, and Wolfson Arizona microphone supplies and LDOs." * tag 'regulator-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (176 commits) regulator: add new lp8788 regulator driver regulator: mc13xxx: Remove extern function declaration for mc13xxx_sw_regulator regulator: tps65910: set input_supply on desc unconditionally regulator: palmas: Fix calcuating selector in palmas_map_voltage_smps regulator: lp872x: Simplify implementation of lp872x_find_regulator_init_data() regulator: twl: Fix list_voltate for twl6030ldo_ops regulator: twl: Convert twl6030ldo_ops to [get|set]_voltage_sel regulator: twl: Fix the formula to calculate vsel and voltage for twl6030ldo regulator: s5m8767: Properly handle gpio_request failure regulator: max8997: Properly handle gpio_request failure regulator: tps62360: use devm_* for gpio request regulator: tps6586x: add support for input supply regulator: tps65217: Add device tree support regulator: aat2870: Remove unused min_uV and max_uV from struct aat2870_regulator regulator: aat2870: Convert to regulator_list_voltage_table regulator: da9052: initialize of_node param for regulator register regulator: Add REGULATOR_STATUS_UNDEFINED. regulator: Fix a typo in regulator_mode_to_status() core function. regulator: s2mps11: Use sec_reg_write rather than sec_reg_update when mask is 0xff regulator: s2mps11: Fix wrong setting for config.dev ...
2012-07-22Merge tag 'regmap-3.6' of ↵Linus Torvalds5-39/+478
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap Pull regmap updates from Mark Brown: "A few fixes plus a few features, the most generally useful thing being the register paging support which can be used by quite a few devices: - Support for wake IRQs in regmap-irq - Support for register paging - Support for explicitly specified endianness, mostly for MMIO." * tag 'regmap-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap: regmap: Fix incorrect arguments to kzalloc() call regmap: Add hook for printk logging for debugging during early init regmap: Fix work_buf switching for page update during virtual range access. regmap: Add support for register indirect addressing. regmap: Move lock out from internal function _regmap_update_bits(). regmap: mmio: Staticize regmap_mmio_gen_context() regmap: Remove warning on stubbed dev_get_regmap() regmap: Implement support for wake IRQs regmap: Don't try to map non-existant IRQs regmap: Constify regmap_irq_chip regmap: mmio: request native endian formatting regmap: allow busses to request formatting with specific endianness
2012-07-23ext4: switch EXT4_IOC_RESIZE_FS to mnt_want_write_file()Al Viro1-2/+2
Signed-off-by: Al Viro <[email protected]>
2012-07-23btrfs: switch btrfs_ioctl_balance() to mnt_want_write_file()Al Viro1-2/+2
Signed-off-by: Al Viro <[email protected]>
2012-07-23switch dentry_open() to struct path, make it grab references itselfAl Viro15-151/+106
Signed-off-by: Al Viro <[email protected]>
2012-07-23spufs: shift dget/mntget towards dentry_open()Al Viro1-28/+18
Signed-off-by: Al Viro <[email protected]>
2012-07-23zoran: don't bother with struct file * in zoran_mapAl Viro2-3/+5
all we need it for is file->private_data, which is assign-once, already assigned by that point and, incidentally, its value is already in use by zoran ->mmap() anyway. So just store that pointer instead... Signed-off-by: Al Viro <[email protected]>
2012-07-23ecryptfs: don't reinvent the wheels, please - use struct completionAl Viro3-65/+26
... and keep the sodding requests on stack - they are small enough. Signed-off-by: Al Viro <[email protected]>
2012-07-23don't expose I_NEW inodes via dentry->d_inodeAl Viro7-19/+19
d_instantiate(dentry, inode); unlock_new_inode(inode); is a bad idea; do it the other way round... Signed-off-by: Al Viro <[email protected]>
2012-07-23tidy up namei.c a bitAl Viro1-18/+21
locking/unlocking for rcu walk taken to a couple of inline helpers Signed-off-by: Al Viro <[email protected]>
2012-07-23unobfuscate follow_up() a bitAl Viro1-1/+1
really convoluted test in there has grown up during struct mount introduction; what it checks is that we'd reached the root of mount tree.
2012-07-23ext3: pass custom EOF to generic_file_llseek_size()Eric Sandeen1-2/+2
Use the new custom EOF argument to generic_file_llseek_size so that SEEK_END will go to the max hash value for htree dirs in ext3 rather than to i_size_read() Signed-off-by: Eric Sandeen <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-23ext4: use core vfs llseek code for dir seeksEric Sandeen2-64/+17
Use the new functionality in generic_file_llseek_size() to accept a custom EOF position, and un-cut-and-paste all the vfs llseek code from ext4. Also fix up comments on ext4_llseek() to reflect reality. Signed-off-by: Eric Sandeen <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-23vfs: allow custom EOF in generic_file_llseek codeEric Sandeen4-11/+15
For ext3/4 htree directories, using the vfs llseek function with SEEK_END goes to i_size like for any other file, but in reality we want the maximum possible hash value. Recent changes in ext4 have cut & pasted generic_file_llseek() back into fs/ext4/dir.c, but replicating this core code seems like a bad idea, especially since the copy has already diverged from the vfs. This patch updates generic_file_llseek_size to accept both a custom maximum offset, and a custom EOF position. With this in place, ext4_dir_llseek can pass in the appropriate maximum hash position for both maxsize and eof, and get what it wants. As far as I know, this does not fix any bugs - nfs in the kernel doesn't use SEEK_END, and I don't know of any user who does. But some ext4 folks seem keen on doing the right thing here, and I can't really argue. (Patch also fixes up some comments slightly) Signed-off-by: Eric Sandeen <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22vfs: Avoid unnecessary WB_SYNC_NONE writeback during sys_sync and reorder ↵Jan Kara1-10/+9
sync passes wakeup_flusher_threads(0) will queue work doing complete writeback for each flusher thread. Thus there is not much point in submitting another work doing full inode WB_SYNC_NONE writeback by writeback_inodes_sb(). After this change it does not make sense to call nonblocking ->sync_fs and block device flush before calling sync_inodes_sb() because wakeup_flusher_threads() is completely asynchronous and thus these functions would be called in parallel with inode writeback running which will effectively void any work they do. So we move sync_inodes_sb() call before these two functions. Signed-off-by: Jan Kara <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22vfs: Remove unnecessary flushing of block devicesJan Kara1-8/+8
It is not necessary to write block devices twice. The reason why we first did flush and then proper sync is that for_each_bdev() { write_bdev() wait_for_completion() } is much slower than for_each_bdev() write_bdev() for_each_bdev() wait_for_completion() when there is bigger amount of data. But as is seen in the above, there's no real need to scan pages and submit them twice. We just need to separate the submission and waiting part. This patch does that. Signed-off-by: Jan Kara <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22vfs: Make sys_sync writeout also block device inodesJan Kara1-7/+11
In case block device does not have filesystem mounted on it, sys_sync will just ignore it and doesn't writeout its dirty pages. This is because writeback code avoids writing inodes from superblock without backing device and blockdev_superblock is such a superblock. Since it's unexpected that sync doesn't writeout dirty data for block devices be nice to users and change the behavior to do so. So now we iterate over all block devices on blockdev_super instead of iterating over all superblocks when syncing block devices. Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Jan Kara <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22vfs: Create function for iterating over block devicesJan Kara2-0/+41
Signed-off-by: Jan Kara <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22vfs: Reorder operations during sys_syncJan Kara1-12/+34
Change the order of operations during sync from for_each_sb { writeback_inodes_sb(); sync_fs(nowait); __sync_blockdev(nowait); } for_each_sb { sync_inodes_sb(); sync_fs(wait); __sync_blockdev(wait); } to for_each_sb writeback_inodes_sb(); for_each_sb sync_fs(nowait); for_each_sb __sync_blockdev(nowait); for_each_sb sync_inodes_sb(); for_each_sb sync_fs(wait); for_each_sb __sync_blockdev(wait); This is a preparation for the following patches in this series. Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Jan Kara <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22quota: Move quota syncing to ->sync_fs methodJan Kara7-3/+28
Since the moment writes to quota files are using block device page cache and space for quota structures is reserved at the moment they are first accessed we have no reason to sync quota before inode writeback. In fact this order is now only harmful since quota information can easily change during inode writeback (either because conversion of delayed-allocated extents or simply because of allocation of new blocks for simple filesystems not using page_mkwrite). So move syncing of quota information after writeback of inodes into ->sync_fs method. This way we do not have to use ->quota_sync callback which is primarily intended for use by quotactl syscall anyway and we get rid of calling ->sync_fs() twice unnecessarily. We skip quota syncing for OCFS2 since it does proper quota journalling in all cases (unlike ext3, ext4, and reiserfs which also support legacy non-journalled quotas) and thus there are no dirty quota structures. CC: "Theodore Ts'o" <[email protected]> CC: Joel Becker <[email protected]> CC: [email protected] Acked-by: Steven Whitehouse <[email protected]> Acked-by: Dave Kleikamp <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Jan Kara <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22quota: Split dquot_quota_sync() to writeback and cache flushing partJan Kara9-13/+37
Split off part of dquot_quota_sync() which writes dquots into a quota file to a separate function. In the next patch we will use the function from filesystems and we do not want to abuse ->quota_sync quotactl callback more than necessary. Acked-by: Steven Whitehouse <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Jan Kara <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22vfs: Move noop_backing_dev_info check from sync into writebackJan Kara2-7/+5
In principle, a filesystem may want to have ->sync_fs() called during sync(1) although it does not have a bdi (i.e. s_bdi is set to noop_backing_dev_info). Only writeback code really needs bdi set to something reasonable. So move the checks where they are more logical. Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Jan Kara <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22fs/ufs: get rid of write_superArtem Bityutskiy5-16/+42
This patch makes UFS stop using the VFS '->write_super()' method along with the 's_dirt' superblock flag, because they are on their way out. The way we implement this is that we schedule a delay job instead relying on 's_dirt' and '->write_super()'. The whole "superblock write-out" VFS infrastructure is served by the 'sync_supers()' kernel thread, which wakes up every 5 (by default) seconds and writes out all dirty superblocks using the '->write_super()' call-back. But the problem with this thread is that it wastes power by waking up the system every 5 seconds, even if there are no diry superblocks, or there are no client file-systems which would need this (e.g., btrfs does not use '->write_super()'). So we want to kill it completely and thus, we need to make file-systems to stop using the '->write_super()' VFS service, and then remove it together with the kernel thread. Tested using fsstress from the LTP project. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22fs/ufs: re-arrange the code a bitArtem Bityutskiy1-59/+58
This patch does not do any functional changes. It only moves 3 functions in fs/ufs/super.c a little bit up in order to prepare for further changes where I'll need this new arrangement to avoid forward declarations. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22fs/ufs: remove extra superblock write on unmountArtem Bityutskiy1-3/+0
UFS calls 'ufs_write_super()' from 'ufs_put_super()' in order to write the superblocks to the media. However, it is not needed because VFS calls '->sync_fs()' before calling '->put_super()' - so by the time we are in 'ufs_write_super()', the superblocks are already synchronized. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22fs/sysv: stop using write_super and s_dirtArtem Bityutskiy2-11/+0
It does not look like sysv FS needs 'write_super()' at all, because all it does is a timestamp update. I cannot test this patch, because this file-system is so old and probably has not been used by anyone for years, so there are no tools to create it in Linux. But from the code I see that marking the superblock as dirty is basically marking the superblock buffers as drity and then setting the s_dirt flag. And when 'write_super()' is executed to handle the s_dirt flag, we just update the timestamp and again mark the superblock buffer as dirty. Seems pointless. It looks like we can update the timestamp more opprtunistically - on unmount or remount of sync, and nothing should change. Thus, this patch removes 'sysv_write_super()' and 's_dirt'. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22fs/sysv: remove another useless write_super callArtem Bityutskiy1-4/+1
We do not need to call 'sysv_write_super()' from 'sysv_remount()', because VFS has called 'sysv_sync_fs()' before calling '->remount()'. So remove it. Remove also '(un)lock_super()' which obvioulsy is becoming useless in this function. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22fs/sysv: remove useless write_super callArtem Bityutskiy1-3/+0
We do not need to call 'sysv_write_super()' from 'sysv_put_super()', because VFS has called 'sysv_sync_fs()' before calling '->put_super()'. So remove it. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22hfs: get rid of hfs_sync_superArtem Bityutskiy4-39/+48
This patch makes hfs stop using the VFS '->write_super()' method along with the 's_dirt' superblock flag, because they are on their way out. The whole "superblock write-out" VFS infrastructure is served by the 'sync_supers()' kernel thread, which wakes up every 5 (by default) seconds and writes out all dirty superblocks using the '->write_super()' call-back. But the problem with this thread is that it wastes power by waking up the system every 5 seconds, even if there are no diry superblocks, or there are no client file-systems which would need this (e.g., btrfs does not use '->write_super()'). So we want to kill it completely and thus, we need to make file-systems to stop using the '->write_super()' VFS service, and then remove it together with the kernel thread. Tested using fsstress from the LTP project. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22hfs: introduce VFS superblock object back-referenceArtem Bityutskiy2-5/+2
Add an 'sb' VFS superblock back-reference to the 'struct hfs_sb_info' data structure - we will need to find the VFS superblock from a 'struct hfs_sb_info' object in the next patch, so this change is jut a preparation. Remove few useless newlines while on it. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22hfs: simplify a bit checking for R/OArtem Bityutskiy3-4/+5
We have the following pattern in 2 places in HFS if (!RDONLY) hfs_mdb_commit(); This patch pushes the RDONLY check down to 'hfs_mdb_commit()'. This will make the following patches a bit simpler. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22hfs: remove extra mdb write on unmountArtem Bityutskiy1-2/+0
HFS calls 'hfs_write_super()' from 'hfs_put_super()' in order to write the MDB to the media. However, it is not needed because VFS calls '->sync_fs()' before calling '->put_super()' - so by the time we are in 'hfs_write_super()', the MDB is already synchronized. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22hfs: get rid of lock_superArtem Bityutskiy1-2/+10
Stop using lock_super for serializing the MDB changes - use the buffer-head own lock instead. Tested with fsstress. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22hfs: push lock_super downArtem Bityutskiy3-6/+2
HFS uses 'lock_super()'/'unlock_super()' around 'hfs_mdb_commit()' in order to serialize MDB (Master Directory Block) changes. Push it down to 'hfs_mdb_commit()' in order to simplify the code a bit. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22hfsplus: get rid of write_superArtem Bityutskiy5-16/+43
This patch makes hfsplus stop using the VFS '->write_super()' method along with the 's_dirt' superblock flag, because they are on their way out. The whole "superblock write-out" VFS infrastructure is served by the 'sync_supers()' kernel thread, which wakes up every 5 (by default) seconds and writes out all dirty superblocks using the '->write_super()' call-back. But the problem with this thread is that it wastes power by waking up the system every 5 seconds, even if there are no diry superblocks, or there are no client file-systems which would need this (e.g., btrfs does not use '->write_super()'). So we want to kill it completely and thus, we need to make file-systems to stop using the '->write_super()' VFS service, and then remove it together with the kernel thread. Tested using fsstress from the LTP project. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22hfsplus: remove useless checkArtem Bityutskiy1-3/+0
This check is useless because we always have 'sb->s_fs_info' to be non-NULL. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>
2012-07-22hfsplus: amend debugging printArtem Bityutskiy1-1/+1
Print correct function name in the debugging print of the 'hfsplus_sync_fs()' function. Signed-off-by: Artem Bityutskiy <[email protected]> Signed-off-by: Al Viro <[email protected]>