]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/log
linux-2.6-omap-h63xx.git
17 years agoMerge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6
Russell King [Thu, 30 Oct 2008 14:26:45 +0000 (14:26 +0000)]
Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6

17 years agoleds: da903x: (da9030 only) led brightness reversed.
Jonathan Cameron [Thu, 30 Oct 2008 11:05:00 +0000 (11:05 +0000)]
leds: da903x: (da9030 only) led brightness reversed.

The brightness control register calculation (for the pwm) is
effectively the reverse of what would be expected.
1 is maximum brightness, 255 minimum.

This patch inverts this.

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Mike Rapoport <mike@compulab.co.il>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
17 years ago[ARM] sharpsl_pm: fix compilation w/o CONFIG_PM
Dmitry Baryshkov [Thu, 16 Oct 2008 22:34:41 +0000 (02:34 +0400)]
[ARM] sharpsl_pm: fix compilation w/o CONFIG_PM

Fix compilation of sharpsl_pm when CONFIG_PM in unselected.

Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
17 years agodm snapshot: wait for chunks in destructor
Mikulas Patocka [Thu, 30 Oct 2008 13:33:16 +0000 (13:33 +0000)]
dm snapshot: wait for chunks in destructor

If there are several snapshots sharing an origin and one is removed
while the origin is being written to, the snapshot's mempool may get
deleted while elements are still referenced.

Prior to dm-snapshot-use-per-device-mempools.patch the pending
exceptions may still have been referenced after the snapshot was
destroyed, but this was not a problem because the shared mempool
was still there.

This patch fixes the problem by tracking the number of mempool elements
in use.

The scenario:
- You have an origin and two snapshots 1 and 2.
- Someone writes to the origin.
- It creates two exceptions in the snapshots, snapshot 1 will be primary
exception, snapshot 2's pending_exception->primary_pe will point to the
exception in snapshot 1.
- The exceptions are being relocated, relocation of exception 1 finishes
(but it's pending_exception is still allocated, because it is referenced
by an exception from snapshot 2)
- The user lvremoves snapshot 1 --- it calls just suspend (does nothing)
and destructor. md->pending is zero (there is no I/O submitted to the
snapshot by md layer), so it won't help us.
- The destructor waits for kcopyd jobs to finish on snapshot 1 --- but
there are none.
- The destructor on snapshot 1 cleans up everything.
- The relocation of exception on snapshot 2 finishes, it drops reference
on primary_pe. This frees its primary_pe pointer. Primary_pe points to
pending exception created for snapshot 1. So it frees memory into
non-existing mempool.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
17 years agodm snapshot: fix register_snapshot deadlock
Mikulas Patocka [Thu, 30 Oct 2008 13:33:12 +0000 (13:33 +0000)]
dm snapshot: fix register_snapshot deadlock

register_snapshot() performs a GFP_KERNEL allocation while holding
_origins_lock for write, but that could write out dirty pages onto a
device that attempts to acquire _origins_lock for read, resulting in
deadlock.

So move the allocation up before taking the lock.

This path is not performance-critical, so it doesn't matter that we
allocate memory and free it if we find that we won't need it.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
17 years agodm raid1: fix do_failures
Ilpo Jarvinen [Thu, 30 Oct 2008 13:33:07 +0000 (13:33 +0000)]
dm raid1: fix do_failures

Missing braces.  Commit 1f965b1943 (dm raid1: separate region_hash interface
part1) broke it.

Signed-off-by: Ilpo Jarvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Cc: Heinz Mauelshagen <hjm@redhat.com>
17 years agoInput: elo - fix format string in elo driver
Vojtech Pavlik [Thu, 30 Oct 2008 13:11:40 +0000 (09:11 -0400)]
Input: elo - fix format string in elo driver

Fix typo in format string.

Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
17 years agoInput: struct device - replace bus_id with dev_name(), dev_set_name()
Kay Sievers [Thu, 30 Oct 2008 04:07:50 +0000 (00:07 -0400)]
Input: struct device - replace bus_id with dev_name(), dev_set_name()

Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
17 years agoMerge branches 'topic/fix/misc' and 'topic/fix/asoc' into for-linus
Takashi Iwai [Thu, 30 Oct 2008 13:26:24 +0000 (14:26 +0100)]
Merge branches 'topic/fix/misc' and 'topic/fix/asoc' into for-linus

17 years agoALSA: ASoC: Fix WM9713 ALC Decay Time name
Mark Brown [Thu, 30 Oct 2008 12:37:10 +0000 (12:37 +0000)]
ALSA: ASoC: Fix WM9713 ALC Decay Time name

The control had an extra space at the end of the name.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
17 years agoALSA: ASoC: Fix some minor errors in mpc5200 psc i2s driver
Jon Smirl [Thu, 30 Oct 2008 12:37:09 +0000 (12:37 +0000)]
ALSA: ASoC: Fix some minor errors in mpc5200 psc i2s driver

Fix missing unsigned for irqsave flags in psc i2s driver
Make attribute visiblity static
Collect all sysfs errors before checking status

[Word wrapped DEVICE_ATTR() lines for 80 columns -- broonie]

Signed-off-by: Jon Smirl <jonsmirl@gmail.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
17 years agoALSA: ASoC: Fix mono controls after conversion to support full int masks
Mark Brown [Thu, 30 Oct 2008 12:37:08 +0000 (12:37 +0000)]
ALSA: ASoC: Fix mono controls after conversion to support full int masks

When ASoC was converted to support full int width masks SOC_SINGLE_VALUE()
omitted the assignment of rshift, causing the control operatins to report
some mono controls as stereo. This happened to work some of the time due
to a confusion between shift and min in snd_soc_info_volsw().

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
17 years agoALSA: sound/ice1712: indentation & braces disagree - add braces
Ilpo Järvinen [Thu, 30 Oct 2008 11:09:55 +0000 (13:09 +0200)]
ALSA: sound/ice1712: indentation & braces disagree - add braces

Neither has any significance currently to the flow
because err is checked for the same condition before
the place of disagreement.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
17 years agoi386/PAE: fix pud_page()
Jan Beulich [Thu, 30 Oct 2008 10:37:21 +0000 (10:37 +0000)]
i386/PAE: fix pud_page()

Impact: cleanup

To the unsuspecting user it is quite annoying that this broken and
inconsistent with x86-64 definition still exists.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agox86: signal: cosmetic unification of NR_restart_syscall
Hiroshi Shimamoto [Thu, 30 Oct 2008 01:46:40 +0000 (18:46 -0700)]
x86: signal: cosmetic unification of NR_restart_syscall

Impact: cleanup

Add #ifdef directive to unify NR_restart_syscall.

Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agox86: signal: cosmetic unification of macros for setup_rt_frame()
Hiroshi Shimamoto [Thu, 30 Oct 2008 01:46:07 +0000 (18:46 -0700)]
x86: signal: cosmetic unification of macros for setup_rt_frame()

Impact: cleanup

Add #ifdef directive for unification.

Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agox86: signal: cosmetic unification of signr_convert()
Hiroshi Shimamoto [Thu, 30 Oct 2008 01:44:08 +0000 (18:44 -0700)]
x86: signal: cosmetic unification of signr_convert()

Impact: cleanup

Make signr_convert() same.

Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: switch sched_features to seqfile
Li Zefan [Thu, 30 Oct 2008 07:23:32 +0000 (15:23 +0800)]
sched: switch sched_features to seqfile

Impact: cleanup

So handling of sched_features read is simplified.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: remove sched-design.txt from 00-INDEX
Li Zefan [Thu, 30 Oct 2008 07:23:39 +0000 (15:23 +0800)]
sched: remove sched-design.txt from 00-INDEX

Impact: remove stale documentation reference

sched-design.txt has been removed.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: change sched_debug's mode to 0444
Li Zefan [Thu, 30 Oct 2008 07:23:34 +0000 (15:23 +0800)]
sched: change sched_debug's mode to 0444

Impact: change /proc/sched/debug from rw-r--r-- to r--r--r--

/proc/sched_debug is read-only.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agoALSA: usb - Add quirk for Edirol UA-25EX advanced modes
Takashi Iwai [Mon, 20 Oct 2008 14:07:45 +0000 (16:07 +0200)]
ALSA: usb - Add quirk for Edirol UA-25EX advanced modes

Added the quirk for UA-25EX advanced modes.
UA-25EX is almost compatible with UA-25.

Tested-by: Serge Perinsky <sergebass@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
17 years ago[ARM] S3C24XX: Move mci.h to arch/arm/plat-s3c24xx/include/plat
Ben Dooks [Thu, 30 Oct 2008 10:14:39 +0000 (10:14 +0000)]
[ARM] S3C24XX: Move mci.h to arch/arm/plat-s3c24xx/include/plat

Move mci.h to new position in arch/arm/plat-s3c24xx/include/plat
ready to clean out old include directories.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
17 years ago[ARM] S3C: Move plat/regs-spi.h to arch/arm/plat-s3c/include/plat.
Ben Dooks [Thu, 30 Oct 2008 10:14:38 +0000 (10:14 +0000)]
[ARM] S3C: Move plat/regs-spi.h to arch/arm/plat-s3c/include/plat.

Move plat/regs-spi.h to arch/arm/plat-s3c/include/plat ready
ready to clean out old include directories.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
17 years ago[ARM] S3C24XX: Movev udc headers to arch/arm/plat-s3c24xx/include/plat
Ben Dooks [Thu, 30 Oct 2008 10:14:37 +0000 (10:14 +0000)]
[ARM] S3C24XX: Movev udc headers to arch/arm/plat-s3c24xx/include/plat

Move the udc headers to the proper home in
arch/arm/plat-s3c24xx/include/plat ready to clean out
the old include directories.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
17 years ago[ARM] S3C: Move regs-ac97.h to arch/arm/plat-s3c/include/plat.
Ben Dooks [Thu, 30 Oct 2008 10:14:36 +0000 (10:14 +0000)]
[ARM] S3C: Move regs-ac97.h to arch/arm/plat-s3c/include/plat.

Move regs-ac97.h to arch/arm/plat-s3c/include/plat ready
to clean out old include directories.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
17 years ago[ARM] S3C: Move nand headers to arch/arm/plat-s3c/include/plat
Ben Dooks [Thu, 30 Oct 2008 10:14:35 +0000 (10:14 +0000)]
[ARM] S3C: Move nand headers to arch/arm/plat-s3c/include/plat

Move nand headers to arch/arm/plat-s3c/include/plat
ready to clean out the old include directories.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
17 years ago[ARM] S3C: Move regs-rtc.h to arch/arm/plat-s3c/include/plat
Ben Dooks [Thu, 30 Oct 2008 10:14:34 +0000 (10:14 +0000)]
[ARM] S3C: Move regs-rtc.h to arch/arm/plat-s3c/include/plat

Move regs-rtc.h to arch/arm/plat-s3c/include/plat ready
to clean out old include directories.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
17 years ago[ARM] S3C: Move i2c headers to arch/arm/plat-s3c/include/plat.
Ben Dooks [Thu, 30 Oct 2008 10:14:33 +0000 (10:14 +0000)]
[ARM] S3C: Move i2c headers to arch/arm/plat-s3c/include/plat.

Move the i2c headers to arch/arm/plat-s3c/include/plat
ready to clean out the old include directories.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
17 years ago[ARM] S3C: Move regs-watchdog.h to arch/arm/plat-s3c/include/plat
Ben Dooks [Thu, 30 Oct 2008 10:14:32 +0000 (10:14 +0000)]
[ARM] S3C: Move regs-watchdog.h to arch/arm/plat-s3c/include/plat

Move  regs-watchdog.h to arch/arm/plat-s3c/include/plat ready
to clean out the old include directories

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
17 years ago[ARM] pcm037: map AIPS1 and AIPS2 as nonshared area
Sascha Hauer [Thu, 18 Sep 2008 13:48:23 +0000 (15:48 +0200)]
[ARM] pcm037: map AIPS1 and AIPS2 as nonshared area

The internal devices of the MX3 Processor have to be mapped
MT_DEVICE_NONSHARED devices, otherwise cache corruptions occur.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
17 years ago[ARM] build fixes for netX serial driver
Paul Bolle [Tue, 14 Oct 2008 16:13:45 +0000 (18:13 +0200)]
[ARM] build fixes for netX serial driver

Make the netX serial driver tristate (as the help text implied). Make the
serial driver build correctly if the netX serial console is disabled. Do not
allow the netX serial console if the netX serial driver is build as a module.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
17 years ago[XFS] Fix race when looking up reclaimable inodes
David Chinner [Thu, 30 Oct 2008 07:32:43 +0000 (18:32 +1100)]
[XFS] Fix race when looking up reclaimable inodes

If we get a race looking up a reclaimable inode, we can end up with the
winner proceeding to use the inode before it has been completely
re-initialised. This is a Bad Thing.

Fix the race by checking whether we are still initialising the inod eonce
we have a reference to it, and if so wait for the initialisation to
complete before continuing.

While there, fix a leaked reference count in the same code when
encountering an unlinked inode and we are not doing a lookup for a create
operation.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32429a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] remove restricted chown parameter from xfs linux
Tim Shimmin [Thu, 30 Oct 2008 07:30:48 +0000 (18:30 +1100)]
[XFS] remove restricted chown parameter from xfs linux

On Linux all filesystems are supposed to be operating under Posix'
restricted chown. Restricted chown means it restricts chown to the owner
unless you have CAP_FOWNER.

NOTE: that 2 files outside of fs/xfs have been modified too for this
change.

Reviewed-by: Dave Chinner <david@fromorbit.com>
SGI-PV: 988919

SGI-Modid: xfs-linux-melb:xfs-kern:32413a

Signed-off-by: Tim Shimmin <tes@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] remove restricted chown parameter from xfs linux
Tim Shimmin [Thu, 30 Oct 2008 07:30:09 +0000 (18:30 +1100)]
[XFS] remove restricted chown parameter from xfs linux

On Linux all filesystems are supposed to be operating under Posix'
restricted chown. Restricted chown means it restricts chown to the owner
unless you have CAP_FOWNER.

NOTE: that 2 files outside of fs/xfs have been modified too for this
change.

Reviewed-by: Dave Chinner <david@fromorbit.com>
SGI-PV: 988919

SGI-Modid: 2.6.x-xfs-melb:linux:32413b

Signed-off-by: Tim Shimmin <tes@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] kill sys_cred
Christoph Hellwig [Thu, 30 Oct 2008 07:27:48 +0000 (18:27 +1100)]
[XFS] kill sys_cred

capable_cred has been unused for a while so we can kill it and sys_cred.
That also means the cred argument to xfs_setattr and xfs_change_file_space
can be removed now.

SGI-PV: 988918

SGI-Modid: xfs-linux-melb:xfs-kern:32412a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Tim Shimmin <tes@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] correctly select first log item to push
David Chinner [Thu, 30 Oct 2008 07:26:51 +0000 (18:26 +1100)]
[XFS] correctly select first log item to push

Under heavy metadata load we are seeing log hangs. The AIL has items in it
ready to be pushed, and they are within the push target window. However,
we are not pushing them when the last pushed LSN is less than the LSN of
the first log item on the AIL. This is a regression introduced by the AIL
push cursor modifications.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32409a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Tim Shimmin <tes@sgi.com>
17 years ago[XFS] free partially initialized inodes using destroy_inode
Christoph Hellwig [Thu, 30 Oct 2008 07:26:04 +0000 (18:26 +1100)]
[XFS] free partially initialized inodes using destroy_inode

To make sure we free the security data inodes need to be freed using the
proper VFS helper (which we also need to export for this). We mark these
inodes bad so we can skip the flush path for them.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32398a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
17 years agoInode: export symbol destroy_inode
Christoph Hellwig [Thu, 30 Oct 2008 07:24:37 +0000 (18:24 +1100)]
Inode: export symbol destroy_inode

To make sure we free the security data inodes need to be freed using
the proper VFS helper (which we also need to export for this). We mark
these inodes bad so we can skip the flush path for them.

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
17 years ago[XFS] stop using xfs_itobp in xfs_bulkstat
Christoph Hellwig [Thu, 30 Oct 2008 07:04:13 +0000 (18:04 +1100)]
[XFS] stop using xfs_itobp in xfs_bulkstat

xfs_bulkstat only wants the dinode, offset and buffer from a given inode
number. Instead of using xfs_itobp on a fake inode which is complicated
and currently leads to leaks of the security data just use xfs_inotobp
which is designed to do exactly the kind of lookup xfs_bulkstat wants. The
only thing that's missing in xfs_inotobp is a flags paramter that let's us
pass down XFS_IMAP_BULKSTAT, but that can easily added.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32397a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
17 years ago[XFS] avoid all reclaimable inodes in xfs_sync_inodes_ag
David Chinner [Thu, 30 Oct 2008 07:03:14 +0000 (18:03 +1100)]
[XFS] avoid all reclaimable inodes in xfs_sync_inodes_ag

If we are syncing data in xfs_sync_inodes_ag(), the VFS inode must still
be referencable as the dirty data state is carried on the VFS inode. hence
if we can't get a reference via igrab(), the inode must be in reclaim
which implies that it has no dirty data attached.

Leave such inodes to the reclaim code to flush the dirty inode state to
disk and so avoid attempting to access the VFS inode when it may not exist
in xfs_sync_inodes_ag().

Version 4:
o don't reference linux inode until after igrab() succeeds

Version 3:
o converted unlock/rele to an xfs_iput() call.

Version 2:
o change igrab logic to be more linear
o remove initial reclaimable inode check now that we are using
  igrab() failure to find reclaimable inodes
o assert that igrab failure occurs only on reclaimable inodes
o clean up inode locking - only grab the iolock if we are doing
  a SYNC_DELWRI call and we have a dirty inode.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32391a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Peter Leckie <pleckie@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Can't lock inodes in radix tree preload region
David Chinner [Thu, 30 Oct 2008 06:55:27 +0000 (17:55 +1100)]
[XFS] Can't lock inodes in radix tree preload region

When we are inside a radix tree preload region, we cannot sleep. Recently
we moved the inode locking inside the preload region for the inode radix
tree. Fix that, and fix a missed unlock in another error path in the same
code at the same time.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32385a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Trivial xfs_remove comment fixup
Christoph Hellwig [Thu, 30 Oct 2008 06:55:18 +0000 (17:55 +1100)]
[XFS] Trivial xfs_remove comment fixup

The dp to ip comment should be for the unconditional xfs_droplink call,
and the "." link obviously only exists for directories, so it should be in
the is_dir conditional.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32374a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] fix biosize option
Christoph Hellwig [Thu, 30 Oct 2008 06:55:08 +0000 (17:55 +1100)]
[XFS] fix biosize option

iosizelog shouldn't be the same as iosize but the logarithm of it. Then
again the current biosize option doesn't make much sense to me as it
doesn't set the preferred I/O size as mentioned in the comment next to it
but rather the allocation size and thus is identical to the allocsize
option (except for the missing logarithm). It's also not documented in
Documentation/filesystems/xfs.txt or the mount manpage.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32373a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] fix the noquota mount option
Christoph Hellwig [Thu, 30 Oct 2008 06:54:57 +0000 (17:54 +1100)]
[XFS] fix the noquota mount option

Noquota should clear all mount options, and not just user and group quota.
Probably doesn't matter very much in real life.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32372a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] kill struct xfs_mount_args
Christoph Hellwig [Thu, 30 Oct 2008 06:53:24 +0000 (17:53 +1100)]
[XFS] kill struct xfs_mount_args

No need to parse the mount option into a structure before applying it to
struct xfs_mount.

The content of xfs_start_flags gets merged into xfs_parseargs. Calls
inbetween don't care and can use mount members instead of the args struct.

This patch uncovered that the mount option for shared filesystems wasn't
ever exposed on Linux. The code to handle it is #if 0'ed in this patch
pending a decision on this feature. I'll send a writeup about it to the
list soon.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32371a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] XFS: Check for valid transaction headers in recovery
David Chinner [Thu, 30 Oct 2008 06:40:09 +0000 (17:40 +1100)]
[XFS] XFS: Check for valid transaction headers in recovery

When we are about to add a new item to a transaction in recovery, we need
to check that it is valid first. Currently we just assert that header
magic number matches, but in production systems that is not present and we
add a corrupted transaction to the list to be processed. This results in a
kernel oops later when processing the corrupted transaction.

Instead, if we detect a corrupted transaction, abort recovery and leave
the user to clean up the mess that has occurred.

SGI-PV: 988145

SGI-Modid: xfs-linux-melb:xfs-kern:32356a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Tim Shimmin <tes@sgi.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Finish removing the mount pointer from the AIL API
David Chinner [Thu, 30 Oct 2008 06:39:58 +0000 (17:39 +1100)]
[XFS] Finish removing the mount pointer from the AIL API

Change all the remaining AIL API functions that are passed struct
xfs_mount pointers to pass pointers directly to the struct xfs_ail being
used. With this conversion, all external access to the AIL is via the
struct xfs_ail. Hence the operation and referencing of the AIL is almost
entirely independent of the xfs_mount that is using it - it is now much
more tightly tied to the log and the items it is tracking in the log than
it is tied to the xfs_mount.

SGI-PV: 988143

SGI-Modid: xfs-linux-melb:xfs-kern:32353a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Add ail pointer into log items
David Chinner [Thu, 30 Oct 2008 06:39:46 +0000 (17:39 +1100)]
[XFS] Add ail pointer into log items

Add an xfs_ail pointer to log items so that the log items can reference
the AIL directly during callbacks without needed a struct xfs_mount.

SGI-PV: 988143

SGI-Modid: xfs-linux-melb:xfs-kern:32352a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Given the log a pointer to the AIL
David Chinner [Thu, 30 Oct 2008 06:39:35 +0000 (17:39 +1100)]
[XFS] Given the log a pointer to the AIL

When we need to go from the log to the AIL, we have to go via the
xfs_mount. Add a xfs_ail pointer to the log so we can go directly to the
AIL associated with the log.

SGI-PV: 988143

SGI-Modid: xfs-linux-melb:xfs-kern:32351a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Move the AIL lock into the struct xfs_ail
David Chinner [Thu, 30 Oct 2008 06:39:23 +0000 (17:39 +1100)]
[XFS] Move the AIL lock into the struct xfs_ail

Bring the ail lock inside the struct xfs_ail. This means the AIL can be
entirely manipulated via the struct xfs_ail rather than needing both the
struct xfs_mount and the struct xfs_ail.

SGI-PV: 988143

SGI-Modid: xfs-linux-melb:xfs-kern:32350a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Allow 64 bit machines to avoid the AIL lock during flushes
David Chinner [Thu, 30 Oct 2008 06:39:12 +0000 (17:39 +1100)]
[XFS] Allow 64 bit machines to avoid the AIL lock during flushes

When copying lsn's from the log item to the inode or dquot flush lsn, we
currently grab the AIL lock. We do this because the LSN is a 64 bit
quantity and it needs to be read atomically. The lock is used to guarantee
atomicity for 32 bit platforms.

Make the LSN copying a small function, and make the function used
conditional on BITS_PER_LONG so that 64 bit machines don't need to take
the AIL lock in these places.

SGI-PV: 988143

SGI-Modid: xfs-linux-melb:xfs-kern:32349a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] move the AIl traversal over to a consistent interface
David Chinner [Thu, 30 Oct 2008 06:39:00 +0000 (17:39 +1100)]
[XFS] move the AIl traversal over to a consistent interface

With the new cursor interface, it makes sense to make all the traversing
code use the cursor interface and make the old one go away. This means
more of the AIL interfacing is done by passing struct xfs_ail pointers
around the place instead of struct xfs_mount pointers.

We can replace the use of xfs_trans_first_ail() in xfs_log_need_covered()
as it is only checking if the AIL is empty. We can do that with a call to
xfs_trans_ail_tail() instead, where a zero LSN returned indicates and
empty AIL...

SGI-PV: 988143

SGI-Modid: xfs-linux-melb:xfs-kern:32348a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Use a cursor for AIL traversal.
David Chinner [Thu, 30 Oct 2008 06:38:39 +0000 (17:38 +1100)]
[XFS] Use a cursor for AIL traversal.

To replace the current generation number ensuring sanity of the AIL
traversal, replace it with an external cursor that is linked to the AIL.

Basically, we store the next item in the cursor whenever we want to drop
the AIL lock to do something to the current item. When we regain the lock.
the current item may already be free, so we can't reference it, but the
next item in the traversal is already held in the cursor.

When we move or delete an object, we search all the active cursors and if
there is an item match we clear the cursor(s) that point to the object.
This forces the traversal to restart transparently.

We don't invalidate the cursor on insert because the cursor still points
to a valid item. If the intem is inserted between the current item and the
cursor it does not matter; the traversal is considered to be past the
insertion point so it will be picked up in the next traversal.

Hence traversal restarts pretty much disappear altogether with this method
of traversal, which should substantially reduce the overhead of pushing on
a busy AIL.

Version 2 o add restart logic o comment cursor interface o minor cleanups

SGI-PV: 988143

SGI-Modid: xfs-linux-melb:xfs-kern:32347a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Allocate the struct xfs_ail
David Chinner [Thu, 30 Oct 2008 06:38:26 +0000 (17:38 +1100)]
[XFS] Allocate the struct xfs_ail

Rather than embedding the struct xfs_ail in the struct xfs_mount, allocate
it during AIL initialisation. Add a back pointer to the struct xfs_ail so
that we can pass around the xfs_ail and still be able to access the
xfs_mount if need be. This is th first step involved in isolating the AIL
implementation from the surrounding filesystem code.

SGI-PV: 988143

SGI-Modid: xfs-linux-melb:xfs-kern:32346a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Account for allocated blocks when expanding directories
David Chinner [Thu, 30 Oct 2008 06:38:12 +0000 (17:38 +1100)]
[XFS] Account for allocated blocks when expanding directories

When we create a directory, we reserve a number of blocks for the maximum
possible expansion of of the directory due to various btree splits,
freespace allocation, etc. Unfortunately, each allocation is not reflected
in the total number of blocks still available to the transaction, so the
maximal reservation is used over and over again.

This leads to problems where an allocation group has only enough blocks
for *some* of the allocations required for the directory modification.
After the first N allocations, the remaining blocks in the allocation
group drops below the total reservation, and subsequent allocations fail
because the allocator will not allow the allocation to proceed if the AG
does not have the enough blocks available for the entire allocation total.

This results in an ENOSPC occurring after an allocation has already
occurred. This results in aborting the directory operation (leaving the
directory in an inconsistent state) and cancelling a dirty transaction,
which results in a filesystem shutdown.

Avoid the problem by reflecting the number of blocks allocated in any
directory expansion in the total number of blocks available to the
modification in progress. This prevents a directory modification from
being aborted part way through with an ENOSPC.

SGI-PV: 988144

SGI-Modid: xfs-linux-melb:xfs-kern:32340a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Prevent looping in xfs_sync_inodes_ag
David Chinner [Thu, 30 Oct 2008 06:38:00 +0000 (17:38 +1100)]
[XFS] Prevent looping in xfs_sync_inodes_ag

If the last block of the AG has inodes in it and the AG is an exactly
power-of-2 size then the last inode in the AG points to the last block in
the AG. If we try to find the next inode in the AG by adding one to the
inode number, we increment the inode number past the size of the AG. The
result is that the macro XFS_INO_TO_AGINO() will strip the AG portion of
the inode number and return an inode number of zero.

That is, instead of terminating the lookup loop because we hit the inode
number went outside the valid range for the AG, the search index returns
to zero and we start traversing the radix tree from the start again. This
results in an endless loop in xfs_sync_inodes_ag().

Fix it be detecting if the new search index decreases as a result of
incrementing the current inode number. That indicate an overflow and hence
that we have finished processing the AG so we can terminate the loop.

SGI-PV: 988142

SGI-Modid: xfs-linux-melb:xfs-kern:32335a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] kill deleted inodes list
David Chinner [Thu, 30 Oct 2008 06:37:49 +0000 (17:37 +1100)]
[XFS] kill deleted inodes list

Now that the deleted inodes list is unused, kill it. This also removes the
i_reclaim list head from the xfs_inode, shrinking it by two pointers.

SGI-PV: 988142

SGI-Modid: xfs-linux-melb:xfs-kern:32334a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] use the inode radix tree for reclaiming inodes
David Chinner [Thu, 30 Oct 2008 06:37:37 +0000 (17:37 +1100)]
[XFS] use the inode radix tree for reclaiming inodes

Use the reclaim tag to walk the radix tree and find the inodes under
reclaim. This was the only user of the deleted inode list.

SGI-PV: 988142

SGI-Modid: xfs-linux-melb:xfs-kern:32333a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] mark inodes for reclaim via a tag in the inode radix tree
David Chinner [Thu, 30 Oct 2008 06:37:26 +0000 (17:37 +1100)]
[XFS] mark inodes for reclaim via a tag in the inode radix tree

Prepare for removing the deleted inode list by marking inodes for reclaim
in the inode radix trees so that we can use the radix trees to find
reclaimable inodes.

SGI-PV: 988142

SGI-Modid: xfs-linux-melb:xfs-kern:32331a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] rename inode reclaim functions
David Chinner [Thu, 30 Oct 2008 06:37:15 +0000 (17:37 +1100)]
[XFS] rename inode reclaim functions

The function names xfs_finish_reclaim and xfs_finish_reclaim_all are not
very descriptive of what they are reclaiming. Rename to
xfs_reclaim_inode[s] to match the xfs_sync_inodes() function.

SGI-PV: 988142

SGI-Modid: xfs-linux-melb:xfs-kern:32330a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] move inode reclaim functions to xfs_sync.c
David Chinner [Thu, 30 Oct 2008 06:37:03 +0000 (17:37 +1100)]
[XFS] move inode reclaim functions to xfs_sync.c

Background inode reclaim is run by the xfssyncd. Move the reclaim worker
functions to be close to the sync code as the are very similar in
structure and are both run from the same background thread.

SGI-PV: 988142

SGI-Modid: xfs-linux-melb:xfs-kern:32329a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Fix build warning - xfs_fs_alloc_inode() needs a return statement
Lachlan McIlroy [Thu, 30 Oct 2008 06:36:52 +0000 (17:36 +1100)]
[XFS] Fix build warning - xfs_fs_alloc_inode() needs a return statement

SGI-PV: 988141

SGI-Modid: xfs-linux-melb:xfs-kern:32325a

Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Prevent use-after-free caused by synchronous inode reclaim
David Chinner [Thu, 30 Oct 2008 06:36:40 +0000 (17:36 +1100)]
[XFS] Prevent use-after-free caused by synchronous inode reclaim

With the combined linux and XFS inode, we need to ensure that the combined
structure is not freed before the generic code is finished with the inode.
As it turns out, there is a case where the XFS inode is freed before the
linux inode - when xfs_reclaim() is called from ->clear_inode() on a clean
inode, the xfs inode is freed during that call. The generic code
references the inode after the ->clear_inode() call, so this is a use
after free situation.

Fix the problem by moving the xfs_reclaim() call to ->destroy_inode()
instead of in ->clear_inode(). This ensures the combined inode structure
is not freed until after the generic code has finished with it.

SGI-PV: 988141

SGI-Modid: xfs-linux-melb:xfs-kern:32324a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Combine the XFS and Linux inodes
David Chinner [Thu, 30 Oct 2008 06:36:14 +0000 (17:36 +1100)]
[XFS] Combine the XFS and Linux inodes

To avoid issues with different lifecycles of XFS and Linux inodes, embedd
the linux inode inside the XFS inode. This means that the linux inode has
the same lifecycle as the XFS inode, even when it has been released by the
OS. XFS inodes don't live much longer than this (a short stint in reclaim
at most), so there isn't significant memory usage penalties here.

Version 3 o kill xfs_icount()

Version 2 o remove unused commented out code from xfs_iget(). o kill
useless cast in VFS_I()

SGI-PV: 988141

SGI-Modid: xfs-linux-melb:xfs-kern:32323a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years agoInode: Allow external list initialisation
David Chinner [Thu, 30 Oct 2008 06:35:24 +0000 (17:35 +1100)]
Inode: Allow external list initialisation

To allow XFS to combine the XFS and linux inodes into a single
structure, we need to drive inode lookup from the XFS inode cache,
not the generic inode cache. This means that we need initialise a
struct inode from a context outside alloc_inode() as it is no longer
used by XFS.

After inode allocation and initialisation, we need to add the inode
to the superblock list, the in-use list, hash it and do some
accounting. This all needs to be done with the inode_lock held and
there are already several places in fs/inode.c that do this list
manipulation.  Factor out the common code, add a locking wrapper and
export the function so ti can be called from XFS.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years agosound: struct device - replace bus_id with dev_name(), dev_set_name()
Kay Sievers [Thu, 30 Oct 2008 01:27:20 +0000 (02:27 +0100)]
sound: struct device - replace bus_id with dev_name(), dev_set_name()

Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-By: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
17 years agoInode: Allow external initialisers
David Chinner [Thu, 30 Oct 2008 06:32:23 +0000 (17:32 +1100)]
Inode: Allow external initialisers

To allow XFS to combine the XFS and linux inodes into a single
structure, we need to drive inode lookup from the XFS inode cache,
not the generic inode cache. This means that we need initialise a
struct inode from a context outside alloc_inode() as it is no longer
used by XFS.

Factor and export the struct inode initialisation code from
alloc_inode() to inode_init_always() as a counterpart to
inode_init_once().  i.e. we have to call this init function for each
inode instantiation (always), as opposed inode_init_once() which is
only called on slab object instantiation (once).

Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Never call mark_inode_dirty_sync() directly
David Chinner [Thu, 30 Oct 2008 06:21:30 +0000 (17:21 +1100)]
[XFS] Never call mark_inode_dirty_sync() directly

Once the Linux inode and the XFS inode are combined, we cannot rely on
just check if the linux inode exists as a method of determining if it is
valid or not. Hence we should always call xfs_mark_inode_dirty_sync()
instead as it does the correct checks to determine if the liinux inode is
in a valid state or not.

SGI-PV: 988141

SGI-Modid: xfs-linux-melb:xfs-kern:32318a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] factor xfs_iget_core() into hit and miss cases
David Chinner [Thu, 30 Oct 2008 06:21:19 +0000 (17:21 +1100)]
[XFS] factor xfs_iget_core() into hit and miss cases

There are really two cases in xfs_iget_core(). The first is the cache hit
case, the second is the miss case. They share very little code, and hence
can easily be factored out into separate functions. This makes the code
much easier to understand and subsequently modify.

SGI-PV: 988141

SGI-Modid: xfs-linux-melb:xfs-kern:32317a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] fix instant oops with tracing enabled
Christoph Hellwig [Thu, 30 Oct 2008 06:21:10 +0000 (17:21 +1100)]
[XFS] fix instant oops with tracing enabled

We can only read inode->i_count if the inode is actually there and not a
NULL pointer. This was introduced in one of the recent sync patches.

SGI-PV: 988255

SGI-Modid: xfs-linux-melb:xfs-kern:32315a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Move remaining quiesce code.
David Chinner [Thu, 30 Oct 2008 06:16:21 +0000 (17:16 +1100)]
[XFS] Move remaining quiesce code.

With all the other filesystem sync code it in xfs_sync.c including the
data quiesce code, it makes sense to move the remaining quiesce code to
the same place.

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32312a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Kill xfs_sync()
David Chinner [Thu, 30 Oct 2008 06:16:11 +0000 (17:16 +1100)]
[XFS] Kill xfs_sync()

There are no more callers to xfs_sync() now, so remove the function
altogther.

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32311a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Kill SYNC_CLOSE
David Chinner [Thu, 30 Oct 2008 06:16:00 +0000 (17:16 +1100)]
[XFS] Kill SYNC_CLOSE

SYNC_CLOSE is only ever used and checked in conjunction with SYNC_WAIT,
and this only done in one spot. The only thing this does is make
XFS_bflush() calls to the data buftargs.

This will happen very shortly afterwards the xfs_sync() call anyway in the
unmount path via the xfs_close_devices(), so this code is redundant and
can be removed. That only user of SYNC_CLOSE is now gone, so kill the flag
completely.

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32310a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] make SYNC_DELWRI no longer use xfs_sync
David Chinner [Thu, 30 Oct 2008 06:15:50 +0000 (17:15 +1100)]
[XFS] make SYNC_DELWRI no longer use xfs_sync

Continue to de-multiplex xfs_sync be replacing all SYNC_DELWRI callers
with direct calls functions that do the work. Isolate the data quiesce
case to a function in xfs_sync.c. Isolate the FSDATA case with explicit
calls to xfs_sync_fsdata().

Version 2: o Push delwri related log forces into xfs_sync_inodes().

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32309a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] make SYNC_ATTR no longer use xfs_sync
David Chinner [Thu, 30 Oct 2008 06:15:38 +0000 (17:15 +1100)]
[XFS] make SYNC_ATTR no longer use xfs_sync

Continue to de-multiplex xfs_sync be replacing all SYNC_ATTR callers with
direct calls xfs_sync_inodes(). Add an assert into xfs_sync() to ensure we
caught all the SYNC_ATTR callers.

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32308a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] xfssyncd: don't call xfs_sync
David Chinner [Thu, 30 Oct 2008 06:15:29 +0000 (17:15 +1100)]
[XFS] xfssyncd: don't call xfs_sync

Start de-multiplexing xfs_sync() by making xfs_sync_worker() call the
specific sync functions it needs. This is only a small, unique subset of
the entire xfs_sync() code so is easier to follow.

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32307a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] kill xfs_syncsub
David Chinner [Thu, 30 Oct 2008 06:15:21 +0000 (17:15 +1100)]
[XFS] kill xfs_syncsub

Now that the only caller is xfs_sync(), merge the two together as it makes
no sense to keep them separate.

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32306a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] use xfs_sync_inodes rather than xfs_syncsub
David Chinner [Thu, 30 Oct 2008 06:15:12 +0000 (17:15 +1100)]
[XFS] use xfs_sync_inodes rather than xfs_syncsub

Kill the unused arg in xfs_syncsub() and xfs_sync_inodes(). For callers of
xfs_syncsub() that only want to flush inodes, replace xfs_syncsub() with
direct calls to xfs_sync_inodes() as that is all that is being done with
the specific flags being passed in.

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32305a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Use struct inodes instead of vnodes to kill vn_grab
David Chinner [Thu, 30 Oct 2008 06:15:03 +0000 (17:15 +1100)]
[XFS] Use struct inodes instead of vnodes to kill vn_grab

With the sync code relocated to the linux-2.6 directory we can use struct
inodes directly. If we do the same thing for the quota release code, we
can remove vn_grab altogether. While here, convert the VN_BAD() checks to
is_bad_inode() so we can remove vnodes entirely from this code.

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32304a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] split out two helpers from xfs_syncsub
Christoph Hellwig [Thu, 30 Oct 2008 06:14:53 +0000 (17:14 +1100)]
[XFS] split out two helpers from xfs_syncsub

Split out two helpers from xfs_syncsub for the dummy log commit and the
superblock writeout.

SGI-PV: 988140

SGI-Modid: xfs-linux-melb:xfs-kern:32303a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Move XFS_BMAP_SANITY_CHECK out of line.
Christoph Hellwig [Thu, 30 Oct 2008 06:14:43 +0000 (17:14 +1100)]
[XFS] Move XFS_BMAP_SANITY_CHECK out of line.

Move the XFS_BMAP_SANITY_CHECK macro out of line and make it a properly
typed function. Also pass the xfs_buf for the btree block instead of just
the btree block header, as we will need some additional information for it
to implement CRC checking of btree blocks.

SGI-PV: 988146

SGI-Modid: xfs-linux-melb:xfs-kern:32301a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Always use struct xfs_btree_block instead of short / longform
Christoph Hellwig [Thu, 30 Oct 2008 06:14:34 +0000 (17:14 +1100)]
[XFS] Always use struct xfs_btree_block instead of short / longform
structures.

Always use the generic xfs_btree_block type instead of the short / long
structures. Add XFS_BTREE_SBLOCK_LEN / XFS_BTREE_LBLOCK_LEN defines for
the length of a short / long form block. The rationale for this is that we
will grow more btree block header variants to support CRCs and other RAS
information, and always accessing them through the same datatype with
unions for the short / long form pointers makes implementing this much
easier.

SGI-PV: 988146

SGI-Modid: xfs-linux-melb:xfs-kern:32300a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] cleanup btree record / key / ptr addressing macros.
Christoph Hellwig [Thu, 30 Oct 2008 06:11:40 +0000 (17:11 +1100)]
[XFS] cleanup btree record / key / ptr addressing macros.

Replace the generic record / key / ptr addressing macros that use cpp
token pasting with simpler macros that do the job for just one given btree
type. The new macros lose the cur argument and thus can be used outside
the core btree code, but also gain an xfs_mount * argument to allow for
checking the CRC flag in the near future. Note that many of these macros
aren't actually used in the kernel code, but only in userspace (mostly in
xfs_repair).

SGI-PV: 988146

SGI-Modid: xfs-linux-melb:xfs-kern:32295a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] remove the mount inode list
David Chinner [Thu, 30 Oct 2008 06:11:29 +0000 (17:11 +1100)]
[XFS] remove the mount inode list

Now we've removed all users of the mount inode list, we can kill it. This
reduces the size of the xfs_inode by 2 pointers.

SGI-PV: 988139

SGI-Modid: xfs-linux-melb:xfs-kern:32293a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Cleanup maxrecs calculation.
Christoph Hellwig [Thu, 30 Oct 2008 06:11:19 +0000 (17:11 +1100)]
[XFS] Cleanup maxrecs calculation.

Clean up the way the maximum and minimum records for the btree blocks are
calculated. For the alloc and inobt btrees all the values are
pre-calculated in xfs_mount_common, and we switch the current loop around
the ugly generic macros that use cpp token pasting to generate type names
to two small helpers in normal C code. For the bmbt and bmdr trees these
helpers also exist, but can be called during runtime, too. Here we also
kill various macros dealing with them and inline the logic into the
get_minrecs / get_maxrecs / get_dmaxrecs methods in xfs_bmap_btree.c.

Note that all these new helpers take an xfs_mount * argument which will be
needed to determine the size of a btree block once we add support for
extended btree blocks with CRCs and other RAS information.

SGI-PV: 988146

SGI-Modid: xfs-linux-melb:xfs-kern:32292a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Traverse inode trees when releasing dquots
David Chinner [Thu, 30 Oct 2008 06:08:03 +0000 (17:08 +1100)]
[XFS] Traverse inode trees when releasing dquots

Make releasing all inode dquots traverse the per-ag inode radix trees
rather than the mount inode list. This removes another user of the mount
inode list.

Version 3 o fix comment relating to avoiding trying to release the

quota inodes and those in reclaim.

Version 2 o add comment explaining use of gang lookups for a single inode
o use IRELE, not VN_RELE o move check for ag initialisation to caller.

SGI-PV: 988139

SGI-Modid: xfs-linux-melb:xfs-kern:32291a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Use the inode tree for finding dirty inodes
David Chinner [Thu, 30 Oct 2008 06:07:29 +0000 (17:07 +1100)]
[XFS] Use the inode tree for finding dirty inodes

Update xfs_sync_inodes to walk the inode radix tree cache to find dirty
inodes. This removes a huge bunch of nasty, messy code for traversing the
mount inode list safely and removes another user of the mount inode list.

Version 3 o rediff against new linux-2.6/xfs_sync.c code

Version 2 o add comment explaining use of gang lookups for a single inode
o use IRELE, not VN_RELE o move check for ag initialisation to caller.

SGI-PV: 988139

SGI-Modid: xfs-linux-melb:xfs-kern:32290a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] don't block in xfs_qm_dqflush() during async writeback.
David Chinner [Thu, 30 Oct 2008 06:07:20 +0000 (17:07 +1100)]
[XFS] don't block in xfs_qm_dqflush() during async writeback.

Normally dquots are written back via delayed write mechanisms. They are
flushed to their backing buffer by xfssyncd, which is then pushed out by
either AIL or xfsbufd flushing. The flush from the xfssyncd is supposed to
be non-blocking, but xfs_qm_dqflush() always waits for pinned duots, which
means that it will block for the length of time it takes to do a
synchronous log force. This causes unnecessary extra log I/O to be issued
whenever we try to flush a busy dquot.

Avoid the log forces and blocking xfssyncd by making xfs_qm_dqflush() pay
attention to what type of sync it is doing when it sees a pinned dquot and
not waiting when doing non-blocking flushes.

SGI-PV: 988147

SGI-Modid: xfs-linux-melb:xfs-kern:32287a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Peter Leckie <pleckie@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Remove xfs_iflush_all and clean up xfs_finish_reclaim_all()
David Chinner [Thu, 30 Oct 2008 06:06:28 +0000 (17:06 +1100)]
[XFS] Remove xfs_iflush_all and clean up xfs_finish_reclaim_all()

xfs_iflush_all() walks the m_inodes list to find inodes that need
reclaiming. We already have such a list - the m_del_inodes list. Replace
xfs_iflush_all() with a call to xfs_finish_reclaim_all() and clean up
xfs_finish_reclaim_all() to handle the different flush modes now needed.

Originally based on a patch from Christoph Hellwig.

Version 3 o rediff against new linux-2.6/xfs_sync.c code

Version 2 o revert xfs_syncsub() inode reclaim behaviour back to original

code o xfs_quiesce_fs() should use XFS_IFLUSH_DELWRI_ELSE_ASYNC, not

XFS_IFLUSH_ASYNC, to prevent change of behaviour.

SGI-PV: 988139

SGI-Modid: xfs-linux-melb:xfs-kern:32284a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] move xfssyncd code to xfs_sync.c
David Chinner [Thu, 30 Oct 2008 06:06:18 +0000 (17:06 +1100)]
[XFS] move xfssyncd code to xfs_sync.c

Move all the xfssyncd code to the new xfs_sync.c file. This places it
closer to the actual code that it interacts with, rather than just being
associated with high level VFS code.

SGI-PV: 988139

SGI-Modid: xfs-linux-melb:xfs-kern:32283a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] move sync code to its own file
David Chinner [Thu, 30 Oct 2008 06:06:08 +0000 (17:06 +1100)]
[XFS] move sync code to its own file

The sync code in XFS is spread around several files. While it used to make
sense to have such a distribution, the code is about to be cleaned up and
so centralising it in one spot as the first step makes sense.

SGI-PV: 988139

SGI-Modid: xfs-linux-melb:xfs-kern:32282a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Show buffer address with debug hexdump on corruption
Barry Naujok [Thu, 30 Oct 2008 06:05:58 +0000 (17:05 +1100)]
[XFS] Show buffer address with debug hexdump on corruption

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32233a

Signed-off-by: Barry Naujok <bnaujok@sgi.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Check agf_btreeblks is valid when reading in the AGF
Barry Naujok [Thu, 30 Oct 2008 06:05:49 +0000 (17:05 +1100)]
[XFS] Check agf_btreeblks is valid when reading in the AGF

SGI-PV: 987683

SGI-Modid: xfs-linux-melb:xfs-kern:32232a

Signed-off-by: Barry Naujok <bnaujok@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Sync up kernel and user-space headers
Barry Naujok [Thu, 30 Oct 2008 06:05:38 +0000 (17:05 +1100)]
[XFS] Sync up kernel and user-space headers

SGI-PV: 986558

SGI-Modid: xfs-linux-melb:xfs-kern:32231a

Signed-off-by: Barry Naujok <bnaujok@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Make xfs_btree_check_ptr() debug-only code.
Lachlan McIlroy [Thu, 30 Oct 2008 06:05:26 +0000 (17:05 +1100)]
[XFS] Make xfs_btree_check_ptr() debug-only code.

SGI-PV: 985583

SGI-Modid: xfs-linux-melb:xfs-kern:32224a

Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] Fix build brakage from patch "Clean up dquot pincount code"
Peter Leckie [Thu, 30 Oct 2008 06:05:18 +0000 (17:05 +1100)]
[XFS] Fix build brakage from patch "Clean up dquot pincount code"

This is a fix for patch " Clean up dquot pincount code" which introduced a
build breakage due to a missing & in xfs_qm_dquot_logitem_pin.

SGI-PV: 986789

SGI-Modid: xfs-linux-melb:xfs-kern:32221a

Signed-off-by: Peter Leckie <pleckie@sgi.com>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Clean up dquot pincount code.
Peter Leckie [Thu, 30 Oct 2008 06:05:04 +0000 (17:05 +1100)]
[XFS] Clean up dquot pincount code.

This is a code cleanup and optimization that removes a per mount point
spinlock from the quota code and cleans up the code.

The patch changes the pincount from being an int protected by a spinlock
to an atomic_t allowing the pincount to be manipulated without holding the
spinlock.

This cleanup also protects against random wakup's of both the aild and
xfssyncd by reevaluating the pincount after been woken. Two latter patches
will address the Spurious wakeups.

SGI-PV: 986789

SGI-Modid: xfs-linux-melb:xfs-kern:32215a

Signed-off-by: Peter Leckie <pleckie@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Donald Douwsma <donaldd@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
17 years ago[XFS] Wait for all I/O on truncate to zero file size
Lachlan McIlroy [Thu, 30 Oct 2008 05:59:06 +0000 (16:59 +1100)]
[XFS] Wait for all I/O on truncate to zero file size

It's possible to have outstanding xfs_ioend_t's queued when the file size
is zero. This can happen in the direct I/O path when a direct I/O write
fails due to ENOSPC. In this case the xfs_ioend_t will still be queued (ie
xfs_end_io_direct() does not know that the I/O failed so can't force the
xfs_ioend_t to be flushed synchronously).

When we truncate a file on unlink we don't know to wait for these
xfs_ioend_ts and we can have a use-after-free situation if the inode is
reclaimed before the xfs_ioend_t is finally processed.

As was suggested by Dave Chinner lets wait for all I/Os to complete when
truncating the file size to zero.

SGI-PV: 981668

SGI-Modid: xfs-linux-melb:xfs-kern:32216a

Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
17 years ago[XFS] make btree tracing generic
Christoph Hellwig [Thu, 30 Oct 2008 05:58:50 +0000 (16:58 +1100)]
[XFS] make btree tracing generic

Make the existing bmap btree tracing generic so that it applies to all
btree types.

Some fragments lifted from a patch by Dave Chinner.

This adds two files that were missed from the previous btree tracing
checkin.

SGI-PV: 985583

SGI-Modid: xfs-linux-melb:xfs-kern:32210a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Bill O'Donnell <billodo@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
17 years ago[XFS] mark various functions in xfs_btree.c static
Christoph Hellwig [Thu, 30 Oct 2008 05:58:41 +0000 (16:58 +1100)]
[XFS] mark various functions in xfs_btree.c static

Lots of functionality in xfs_btree.c isn't needed by callers outside of
this file anymore, so mark these functions static.

SGI-PV: 985583

SGI-Modid: xfs-linux-melb:xfs-kern:32209a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Bill O'Donnell <billodo@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>