linux/drivers/staging
Nick Piggin 949854d024 fs: Use rename lock and RCU for multi-step operations
The remaining usages for dcache_lock is to allow atomic, multi-step read-side
operations over the directory tree by excluding modifications to the tree.
Also, to walk in the leaf->root direction in the tree where we don't have
a natural d_lock ordering.

This could be accomplished by taking every d_lock, but this would mean a
huge number of locks and actually gets very tricky.

Solve this instead by using the rename seqlock for multi-step read-side
operations, retry in case of a rename so we don't walk up the wrong parent.
Concurrent dentry insertions are not serialised against.  Concurrent deletes
are tricky when walking up the directory: our parent might have been deleted
when dropping locks so also need to check and retry for that.

We can also use the rename lock in cases where livelock is a worry (and it
is introduced in subsequent patch).

Signed-off-by: Nick Piggin <npiggin@kernel.dk>
2011-01-07 17:50:22 +11:00
..
adis16255 staging: adis16255: fix sysfs leak 2010-08-31 14:51:53 -07:00
asus_oled Staging: asus_oled: fix up my fixup for some sysfs attribute permissions 2010-11-18 11:27:18 -08:00
ath6kl Staging: ath6kl: Fix pointer casts on 64-bit architectures 2010-11-09 16:49:02 -08:00
autofs convert get_sb_nodev() users 2010-10-29 04:16:31 -04:00
batman-adv Staging: batman-adv: ensure that eth_type_trans gets linear memory 2010-11-29 10:53:14 -08:00
bcm Staging: bcm: use get_user() to access user pointers 2010-11-09 13:32:36 -08:00
brcm80211 staging: brcm80211: updated maintainers contact information 2010-11-29 10:53:14 -08:00
comedi staging: comedi: fix memory leak 2010-11-16 12:25:52 -08:00
cpia staging: cpia: fix camera file owner in cpia_open() 2010-11-09 13:24:12 -08:00
crystalhd Merge 'staging-next' to Linus's tree 2010-10-28 09:44:56 -07:00
cx25821 [media] Don't export format_by_forcc on two different drivers 2010-12-02 01:59:10 -02:00
cxt1e1 Staging: cxt1e1: multiple definition of max_mtu fix 2010-10-19 10:12:14 -07:00
dt3155v4l V4L/DVB: videobuf: add queue argument to videobuf_waiton() 2010-10-21 01:06:14 -02:00
easycap staging: easycap needs smp_lock.h, fixes build error 2010-11-29 10:53:14 -08:00
echo
et131x Staging: et131x: Makefile: replace the use of <module>-objs with <module>-y 2010-10-08 07:23:49 -07:00
frontier Staging: frontier: fix up my fixup for some sysfs attribute permissions 2010-11-18 11:27:18 -08:00
ft1000 drivers/staging: delete double assignment 2010-11-09 14:05:22 -08:00
go7007 [media] v4l: Remove module_name argument to the v4l2_i2c_new_subdev* functions 2010-11-22 11:56:26 -02:00
hv SCSI host lock push-down 2010-11-16 13:33:23 -08:00
iio Staging: iio: adis16220: fix up my fixup for some sysfs attribute permissions 2010-11-18 11:27:19 -08:00
intel_sst Merge branch 'master' into work 2010-11-29 10:44:22 -08:00
keucr SCSI host lock push-down 2010-11-16 13:33:23 -08:00
line6 Staging: line6: fix up my fixup for some sysfs attribute permissions 2010-11-18 11:27:20 -08:00
lirc Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 2010-10-28 12:13:00 -07:00
memrar llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
msm staging: Final semaphore cleanup 2010-10-30 12:12:50 +02:00
octeon Merge 'staging-next' to Linus's tree 2010-10-28 09:44:56 -07:00
olpc_dcon i2c: Drivers shouldn't include <linux/i2c-id.h> 2010-11-15 22:40:38 +01:00
panel llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
phison Staging: phison: fix problem caused by libata change 2010-10-09 13:26:12 -07:00
pohmelfs fs: Use rename lock and RCU for multi-step operations 2011-01-07 17:50:22 +11:00
quatech_usb2 staging/trivial: fix typos concerning "initiali[zs]e" 2010-09-04 21:23:26 -07:00
quickstart Staging: quickstart: free after input_unregister_device() 2010-11-16 12:25:52 -08:00
rt2860 Staging: rt2870: Add USB ID for Buffalo Airstation WLI-UC-GN 2010-11-29 11:48:29 -08:00
rt2870 Staging: rt2870: Makefile: replace the use of <module>-objs with <module>-y 2010-10-08 07:23:46 -07:00
rtl8187se staging: rtl8187se: Change panic to warn when RF switch turned off 2010-11-16 12:25:53 -08:00
rtl8192e Staging: rtl8192e: fix IOMMU memory leak 2010-11-09 14:05:23 -08:00
rtl8192u Staging: rtl8192u: Makefile: replace the use of <module>-objs with <module>-y 2010-10-08 07:23:42 -07:00
rtl8712 Merge branch 'master' into work 2010-11-29 10:44:22 -08:00
samsung-laptop Staging: samsung-laptop: fix up my fixup for some sysfs attribute permissions 2010-11-18 11:27:19 -08:00
sbe-2t3e3 Staging: sbe-2t3e3: Makefile: replace the use of <module>-objs with <module>-y 2010-10-08 07:23:45 -07:00
serqt_usb2
slicoss staging: slicoss: use free_netdev(netdev) instead of kfree() 2010-09-30 04:14:21 -07:00
sm7xx staging: sm7xx: call disable_pci_device() if pci_probe() failed 2010-08-31 14:48:09 -07:00
smbfs fs: dcache scale subdirs 2011-01-07 17:50:21 +11:00
solo6x10 Staging: solo6x10: fix build problem 2010-11-02 08:39:05 -07:00
speakup Merge branch 'master' into work 2010-11-29 10:44:22 -08:00
spectra staging: spectra: fix build error 2010-11-17 11:57:43 -08:00
stradis staging/stradis: mark as "depends on BKL" 2010-11-17 08:59:32 -08:00
ti-st staging: ti-st: move TI_ST from staging to misc/ 2010-10-06 08:25:06 -07:00
tidspbridge Revert "staging: tidspbridge: replace iommu custom for opensource implementation" 2010-11-10 18:34:44 -06:00
tm6000 [media] v4l: Remove module_name argument to the v4l2_i2c_new_subdev* functions 2010-11-22 11:56:26 -02:00
udlfb Staging: udlfb: fix up my fixup for some sysfs attribute permissions 2010-11-18 11:27:19 -08:00
usbip Merge 'staging-next' to Linus's tree 2010-10-28 09:44:56 -07:00
vme Staging: vme: Assure D16 cycle if required in master_read and master_write 2010-09-30 04:33:26 -07:00
vt6655 Merge 'staging-next' to Linus's tree 2010-10-28 09:44:56 -07:00
vt6656 staging: vt6656: implement missing brackets 2010-11-09 14:05:23 -08:00
westbridge drivers/staging: delete double assignment 2010-11-09 14:05:22 -08:00
winbond staging: fix winbond build, needs delay.h 2010-11-19 10:13:56 -08:00
wlags49_h2 Merge 'staging-next' to Linus's tree 2010-10-28 09:44:56 -07:00
wlags49_h25 Staging: wlags49_h25: Makefile: cleaned up Makefile cflag lines 2010-10-05 11:56:38 -07:00
wlan-ng Staging: wlan-ng: Fix wrong #ifdef #endif sequence 2010-11-09 16:51:42 -08:00
xgifb Merge 'staging-next' to Linus's tree 2010-10-28 09:44:56 -07:00
zram Revert "Staging: zram: work around oops due to startup ordering snafu" 2010-12-30 12:07:22 -08:00
Kconfig Staging: dream: remove dream driver and arch from tree 2010-10-29 12:42:18 -07:00
Makefile Staging: dream: remove dream driver and arch from tree 2010-10-29 12:42:18 -07:00
staging.c