2010-11-17 15:27:27

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH 0/7] BKL removal follow-up

Hi Linus,

It seems the v4l and udf code has been worked out now and patches
to kill the BKL there are finally making it upstream.

As promised, here are the patches I did since the kernel summit
to turn off the BKL by default. Given that -rc2 is out now, I don't
know how much of these you still want for 2.6.37, so just pick
the ones you like and I'll send a pull request for the rest
once the 2.6.38 merge window opens.

The patches have been in -next for three days, and I fixed up
the two problems that this has revealed. I would have liked
to give them more testing and wait until you have pulled the
UDF patches, but I'm planning to be offline until next Wednesday.

Arnd

Arnd Bergmann (7):
staging/stradis: mark as "depends on BKL"
drm/i810: remove the BKL
BKL: remove extraneous #include <smp_lock.h>
BKL: remove references to lock_kernel from comments
BKL: disable by default
BKL: mark lock_kernel as deprecated
BKL: move CONFIG_BKL to staging

arch/blackfin/kernel/process.c | 1 -
arch/frv/kernel/process.c | 1 -
arch/h8300/kernel/process.c | 1 -
arch/m68k/kernel/process.c | 1 -
arch/m68knommu/kernel/process.c | 1 -
arch/mn10300/kernel/process.c | 1 -
arch/parisc/hpux/sys_hpux.c | 1 -
arch/parisc/kernel/sys_parisc32.c | 1 -
arch/powerpc/kernel/sys_ppc32.c | 1 -
arch/s390/kernel/compat_linux.c | 1 -
arch/sparc/kernel/leon_smp.c | 1 -
arch/sparc/kernel/sys_sparc32.c | 1 -
arch/sparc/kernel/sys_sparc_32.c | 1 -
arch/sparc/kernel/unaligned_32.c | 1 -
arch/sparc/kernel/windows.c | 1 -
arch/tile/kernel/compat.c | 1 -
arch/tile/kernel/compat_signal.c | 1 -
arch/tile/kernel/signal.c | 1 -
arch/tile/kernel/smpboot.c | 1 -
arch/tile/kernel/sys.c | 1 -
arch/tile/mm/fault.c | 1 -
arch/tile/mm/hugetlbpage.c | 1 -
arch/um/kernel/exec.c | 1 -
arch/x86/ia32/sys_ia32.c | 1 -
arch/x86/kernel/cpuid.c | 1 -
arch/x86/kernel/msr.c | 1 -
block/compat_ioctl.c | 1 -
block/ioctl.c | 1 -
drivers/block/drbd/drbd_receiver.c | 1 -
drivers/block/drbd/drbd_worker.c | 1 -
drivers/char/agp/frontend.c | 1 -
drivers/char/amiserial.c | 1 -
drivers/char/briq_panel.c | 1 -
drivers/char/hpet.c | 1 -
drivers/char/hw_random/core.c | 1 -
drivers/char/istallion.c | 1 -
drivers/char/serial167.c | 1 -
drivers/char/specialix.c | 1 -
drivers/char/stallion.c | 1 -
drivers/char/sx.c | 1 -
drivers/char/uv_mmtimer.c | 1 -
drivers/gpu/drm/Kconfig | 4 ++--
drivers/gpu/drm/drm_fops.c | 1 -
drivers/gpu/drm/i810/i810_dma.c | 18 +-----------------
drivers/gpu/drm/i810/i810_drv.c | 6 +++++-
drivers/hid/hidraw.c | 1 -
drivers/hid/usbhid/hiddev.c | 1 -
drivers/infiniband/hw/ipath/ipath_file_ops.c | 1 -
drivers/input/input.c | 1 -
drivers/input/serio/serio_raw.c | 1 -
drivers/media/dvb/dvb-core/dvb_ca_en50221.c | 1 -
drivers/media/dvb/dvb-core/dvb_frontend.c | 1 -
drivers/media/dvb/ngene/ngene-core.c | 1 -
drivers/media/dvb/ngene/ngene-dvb.c | 1 -
drivers/media/dvb/ngene/ngene-i2c.c | 1 -
drivers/media/radio/radio-mr800.c | 1 -
drivers/media/radio/si470x/radio-si470x.h | 1 -
drivers/media/video/bt8xx/bttv-driver.c | 1 -
drivers/media/video/cx88/cx88-blackbird.c | 1 -
drivers/media/video/cx88/cx88-video.c | 1 -
drivers/media/video/pwc/pwc-if.c | 1 -
drivers/media/video/s2255drv.c | 1 -
drivers/media/video/saa7134/saa7134-empress.c | 1 -
drivers/media/video/saa7164/saa7164.h | 1 -
drivers/media/video/usbvision/usbvision-video.c | 1 -
drivers/media/video/v4l2-compat-ioctl32.c | 1 -
drivers/net/wireless/orinoco/orinoco_usb.c | 1 -
drivers/parisc/eisa_eeprom.c | 1 -
drivers/pci/proc.c | 1 -
drivers/pnp/isapnp/proc.c | 1 -
drivers/s390/block/dasd_eer.c | 1 -
drivers/s390/char/fs3270.c | 1 -
drivers/s390/char/tape_char.c | 1 -
drivers/s390/char/vmlogrdr.c | 1 -
drivers/s390/char/vmur.c | 1 -
drivers/s390/crypto/zcrypt_api.c | 1 -
drivers/scsi/hpsa.c | 1 -
drivers/scsi/pm8001/pm8001_sas.h | 1 -
drivers/scsi/sd.c | 1 -
drivers/serial/crisv10.c | 1 -
drivers/serial/serial_core.c | 1 -
drivers/staging/Kconfig | 11 +++++++++++
drivers/staging/cx25821/cx25821.h | 1 -
drivers/staging/easycap/easycap.h | 1 -
.../staging/intel_sst/intel_sst_app_interface.c | 1 -
drivers/staging/rtl8712/osdep_service.h | 1 -
drivers/staging/speakup/buffers.c | 1 -
drivers/staging/stradis/Kconfig | 2 +-
drivers/usb/core/devices.c | 1 -
drivers/usb/core/devio.c | 1 -
drivers/usb/core/file.c | 1 -
drivers/usb/core/inode.c | 1 -
drivers/usb/gadget/f_fs.c | 1 -
drivers/usb/gadget/f_hid.c | 1 -
drivers/usb/host/isp1362-hcd.c | 1 -
drivers/usb/host/uhci-debug.c | 1 -
drivers/usb/mon/mon_bin.c | 1 -
drivers/usb/mon/mon_stat.c | 1 -
drivers/usb/serial/usb-serial.c | 1 -
drivers/video/console/vgacon.c | 1 -
drivers/xen/xenfs/privcmd.c | 1 -
drivers/zorro/proc.c | 1 -
fs/block_dev.c | 1 -
fs/ceph/inode.c | 1 -
fs/ceph/mds_client.c | 1 -
fs/compat_ioctl.c | 1 -
fs/ecryptfs/super.c | 1 -
fs/ext3/super.c | 1 -
fs/ioctl.c | 1 -
fs/lockd/clntlock.c | 1 -
fs/lockd/clntproc.c | 1 -
fs/lockd/svc4proc.c | 1 -
fs/lockd/svclock.c | 1 -
fs/lockd/svcproc.c | 1 -
fs/locks.c | 1 -
fs/namespace.c | 1 -
fs/ncpfs/dir.c | 1 -
fs/ncpfs/file.c | 1 -
fs/ncpfs/inode.c | 1 -
fs/ncpfs/ioctl.c | 1 -
fs/nfs/callback.c | 1 -
fs/nfs/delegation.c | 1 -
fs/nfs/super.c | 1 -
fs/nfsd/nfs4state.c | 8 ++++----
fs/ocfs2/super.c | 1 -
fs/proc/inode.c | 1 -
fs/read_write.c | 1 -
fs/reiserfs/inode.c | 1 -
fs/reiserfs/ioctl.c | 1 -
fs/reiserfs/journal.c | 1 -
fs/reiserfs/super.c | 1 -
include/linux/hardirq.h | 1 -
include/linux/reiserfs_fs.h | 1 -
include/linux/smp_lock.h | 15 ++-------------
include/linux/tty.h | 1 -
init/main.c | 1 -
kernel/trace/trace.c | 1 -
lib/Kconfig.debug | 9 ---------
net/irda/af_irda.c | 1 -
net/irda/irnet/irnet_ppp.c | 1 -
net/sunrpc/svc_xprt.c | 1 -
sound/core/info.c | 1 -
sound/core/pcm_native.c | 1 -
sound/core/sound.c | 1 -
sound/sound_core.c | 1 -
145 files changed, 26 insertions(+), 184 deletions(-)

Cc: Nathan Laredo <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Dave Airlie <[email protected]>
Cc: [email protected]
Cc: "J. Bruce Fields" <[email protected]>
Cc: [email protected]
Cc: Alessio Igor Bogani <[email protected]>
Cc: Jan Kara <[email protected]>


2010-11-21 14:12:53

by Boaz Harrosh

[permalink] [raw]
Subject: Re: [PATCH 0/7] BKL removal follow-up

On 11/19/2010 01:40 AM, Linus Torvalds wrote:
> On Thu, Nov 18, 2010 at 3:34 PM, Jan Kara <[email protected]> wrote:
>>
>> Just for info, UDF BKL removal patches seem to work fine but I want to
>> give them some final SMP testing on Monday before pushing them to -next.
>> I'm not sure how much people hurry with disabling the lock so if I should
>> push them ASAP or whether the next merge window is fine...
>
> I don't think I can reasonably do it in 37, we're late enough in the
> -rc series. So UDF and really saying 'n' to BKL by default will have
> to be for the next merge window.
>
> I hate to do it, but I'd be too nervous about it any other way.
>
> Linus

Could it not default to "n" but be SELECTed by the like of UDF. Or
that too big of a Kconfig change for 37-rcX? I understand it does
not really buy us anything for distro's with allmodconfig style,
but it should help with defconfig on all the other ARCH's.

Thanks
Boaz

2010-11-18 23:41:35

by Linus Torvalds

[permalink] [raw]
Subject: Re: [PATCH 0/7] BKL removal follow-up

On Thu, Nov 18, 2010 at 3:34 PM, Jan Kara <[email protected]> wrote:
>
> ?Just for info, UDF BKL removal patches seem to work fine but I want to
> give them some final SMP testing on Monday before pushing them to -next.
> I'm not sure how much people hurry with disabling the lock so if I should
> push them ASAP or whether the next merge window is fine...

I don't think I can reasonably do it in 37, we're late enough in the
-rc series. So UDF and really saying 'n' to BKL by default will have
to be for the next merge window.

I hate to do it, but I'd be too nervous about it any other way.

Linus

2010-11-22 15:17:45

by Nick Bowler

[permalink] [raw]
Subject: Re: [PATCH 0/7] BKL removal follow-up

On 2010-11-21 09:45 -0800, Linus Torvalds wrote:
> Yes, I'd be ok with UDF doing a "select BKL" along with a "default n"
> for BKL itself.
>
> I think UDF currently is the only sane reason to have BKL enabled any
> more, and yes, it would probably make it easier to configure things.

UFS (which I use) also relies on BKL.

--
Nick Bowler, Elliptic Technologies (http://www.elliptictech.com/)

2010-11-17 15:27:18

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH 4/7] BKL: remove references to lock_kernel from comments

Lock_kernel is gone from the code, so the comments
should be updated, too. nfsd now uses lock_flocks
instead of lock_kernel to protect against posix
file locks.

Signed-off-by: Arnd Bergmann <[email protected]>
Cc: "J. Bruce Fields" <[email protected]>
Cc: [email protected]
---
fs/nfsd/nfs4state.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index f1e5ec6..36db9cc 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -2254,7 +2254,7 @@ nfs4_file_downgrade(struct nfs4_file *fp, unsigned int share_access)
* Spawn a thread to perform a recall on the delegation represented
* by the lease (file_lock)
*
- * Called from break_lease() with lock_kernel() held.
+ * Called from break_lease() with lock_flocks() held.
* Note: we assume break_lease will only call this *once* for any given
* lease.
*/
@@ -2278,7 +2278,7 @@ void nfsd_break_deleg_cb(struct file_lock *fl)
list_add_tail(&dp->dl_recall_lru, &del_recall_lru);
spin_unlock(&recall_lock);

- /* only place dl_time is set. protected by lock_kernel*/
+ /* only place dl_time is set. protected by lock_flocks*/
dp->dl_time = get_seconds();

/*
@@ -2295,7 +2295,7 @@ void nfsd_break_deleg_cb(struct file_lock *fl)
/*
* The file_lock is being reapd.
*
- * Called by locks_free_lock() with lock_kernel() held.
+ * Called by locks_free_lock() with lock_flocks() held.
*/
static
void nfsd_release_deleg_cb(struct file_lock *fl)
@@ -2310,7 +2310,7 @@ void nfsd_release_deleg_cb(struct file_lock *fl)
}

/*
- * Called from setlease() with lock_kernel() held
+ * Called from setlease() with lock_flocks() held
*/
static
int nfsd_same_client_deleg_cb(struct file_lock *onlist, struct file_lock *try)
--
1.7.1


2010-11-21 17:53:52

by Linus Torvalds

[permalink] [raw]
Subject: Re: [PATCH 0/7] BKL removal follow-up

On Sun, Nov 21, 2010 at 6:12 AM, Boaz Harrosh <[email protected]> wrote:
> On 11/19/2010 01:40 AM, Linus Torvalds wrote:
>>
>> I don't think I can reasonably do it in 37, we're late enough in the
>> -rc series. So UDF and really saying 'n' to BKL by default will have
>> to be for the next merge window.
>
> Could it not default to "n" but be SELECTed by the like of UDF. Or
> that too big of a Kconfig change for 37-rcX? I understand it does
> not really buy us anything for distro's with allmodconfig style,
> but it should help with defconfig on all the other ARCH's.

Yes, I'd be ok with UDF doing a "select BKL" along with a "default n"
for BKL itself.

I think UDF currently is the only sane reason to have BKL enabled any
more, and yes, it would probably make it easier to configure things.

Tested patch?

Linus

2010-11-18 23:34:44

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH 0/7] BKL removal follow-up

Hi,

On Wed 17-11-10 16:26:52, Arnd Bergmann wrote:
> It seems the v4l and udf code has been worked out now and patches
> to kill the BKL there are finally making it upstream.
>
> As promised, here are the patches I did since the kernel summit
> to turn off the BKL by default. Given that -rc2 is out now, I don't
> know how much of these you still want for 2.6.37, so just pick
> the ones you like and I'll send a pull request for the rest
> once the 2.6.38 merge window opens.
Just for info, UDF BKL removal patches seem to work fine but I want to
give them some final SMP testing on Monday before pushing them to -next.
I'm not sure how much people hurry with disabling the lock so if I should
push them ASAP or whether the next merge window is fine...

Honza
--
Jan Kara <[email protected]>
SUSE Labs, CR

2010-11-17 15:40:21

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH 4/7] BKL: remove references to lock_kernel from comments

On Wed, Nov 17, 2010 at 04:26:56PM +0100, Arnd Bergmann wrote:
> Lock_kernel is gone from the code, so the comments
> should be updated, too. nfsd now uses lock_flocks
> instead of lock_kernel to protect against posix
> file locks.
>
> Signed-off-by: Arnd Bergmann <[email protected]>
> Cc: "J. Bruce Fields" <[email protected]>

Acked-by: J. Bruce Fields <[email protected]>

I want to get rid of most of these callbacks, actually; but that can
wait for the next merge window.

--b.

> Cc: [email protected]
> ---
> fs/nfsd/nfs4state.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index f1e5ec6..36db9cc 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -2254,7 +2254,7 @@ nfs4_file_downgrade(struct nfs4_file *fp, unsigned int share_access)
> * Spawn a thread to perform a recall on the delegation represented
> * by the lease (file_lock)
> *
> - * Called from break_lease() with lock_kernel() held.
> + * Called from break_lease() with lock_flocks() held.
> * Note: we assume break_lease will only call this *once* for any given
> * lease.
> */
> @@ -2278,7 +2278,7 @@ void nfsd_break_deleg_cb(struct file_lock *fl)
> list_add_tail(&dp->dl_recall_lru, &del_recall_lru);
> spin_unlock(&recall_lock);
>
> - /* only place dl_time is set. protected by lock_kernel*/
> + /* only place dl_time is set. protected by lock_flocks*/
> dp->dl_time = get_seconds();
>
> /*
> @@ -2295,7 +2295,7 @@ void nfsd_break_deleg_cb(struct file_lock *fl)
> /*
> * The file_lock is being reapd.
> *
> - * Called by locks_free_lock() with lock_kernel() held.
> + * Called by locks_free_lock() with lock_flocks() held.
> */
> static
> void nfsd_release_deleg_cb(struct file_lock *fl)
> @@ -2310,7 +2310,7 @@ void nfsd_release_deleg_cb(struct file_lock *fl)
> }
>
> /*
> - * Called from setlease() with lock_kernel() held
> + * Called from setlease() with lock_flocks() held
> */
> static
> int nfsd_same_client_deleg_cb(struct file_lock *onlist, struct file_lock *try)
> --
> 1.7.1
>