From: Ingo Molnar <mingo@elte.hu>
To: Paul Davis <paul@linuxaudiosystems.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>,
Lee Revell <rlrevell@joe-job.com>,
mark_h_johnson@raytheon.com, Bill Huey <bhuey@lnxw.com>,
Adam Heath <doogie@debian.org>,
Florian Schmidt <mista.tapas@gmx.net>,
Michal Schmidt <xschmi00@stud.feec.vutbr.cz>,
Fernando Pablo Lopez-Lezcano <nando@ccrma.stanford.edu>,
Karsten Wiese <annabellesgarden@yahoo.de>,
jackit-devel <jackit-devel@lists.sourceforge.net>,
Rui Nuno Capela <rncbc@rncbc.org>
Subject: Re: [Fwd: Re: [patch] Real-Time Preemption, -RT-2.6.9-mm1-V0.4]
Date: Fri, 29 Oct 2004 18:14:33 +0200 [thread overview]
Message-ID: <20041029161433.GA6717@elte.hu> (raw)
In-Reply-To: <20041029111408.GA28259@elte.hu>
* Ingo Molnar <mingo@elte.hu> wrote:
> ahh ... the ioctls. All ioctls in Linux take the 'big kernel lock'. So
> if jackd calls an ioctl() in the fastpath then that could easily get
> delayed. Also, there are a couple of other syscalls too that touch the
> BKL, so an strace of the 'jackd latency path' would be quite useful.
i straced jackd and it seems to do ioctls:
5971 ioctl(7, 0x4143, 0x446b7d3c) = 0
5971 ioctl(7, 0x4140, 0x446b7d3c) = 0
5971 ioctl(7, 0x4142, 0x446b7d3c) = 0
5971 poll([{fd=7, events=POLLOUT|POLLERR|POLLNVAL, revents=POLLOUT}], 1, 4353) = 1
5971 poll([{fd=7, events=POLLOUT|POLLERR|POLLNVAL, revents=POLLOUT}], 1, 4353)= 1
5971 poll([{fd=7, events=POLLOUT|POLLERR|POLLNVAL, revents=POLLOUT|POLLERR}], 1, 4353) = 1
5971 ioctl(7, 0x806c4120, 0xb77bb960) = 0
5971 gettimeofday({1099064915, 776665}, NULL) = 0
the BKL can generate arbitrary latencies. Anything up to 100-200
milliseconds. Rui, Florian, could you try the quick hack below?
Ingo
--- linux/fs/ioctl.c.orig2
+++ linux/fs/ioctl.c
@@ -68,19 +68,26 @@ asmlinkage long sys_ioctl(unsigned int f
goto out;
}
- lock_kernel();
switch (cmd) {
case FIOCLEX:
+ lock_kernel();
set_close_on_exec(fd, 1);
+ unlock_kernel();
break;
case FIONCLEX:
+ lock_kernel();
set_close_on_exec(fd, 0);
+ unlock_kernel();
break;
case FIONBIO:
- if ((error = get_user(on, (int __user *)arg)) != 0)
+ lock_kernel();
+ unlock_kernel();
+ if ((error = get_user(on, (int __user *)arg)) != 0) {
+ unlock_kernel();
break;
+ }
flag = O_NONBLOCK;
#ifdef __sparc__
/* SunOS compatibility item. */
@@ -91,11 +98,15 @@ asmlinkage long sys_ioctl(unsigned int f
filp->f_flags |= flag;
else
filp->f_flags &= ~flag;
+ unlock_kernel();
break;
case FIOASYNC:
- if ((error = get_user(on, (int __user *)arg)) != 0)
+ lock_kernel();
+ if ((error = get_user(on, (int __user *)arg)) != 0) {
+ unlock_kernel();
break;
+ }
flag = on ? FASYNC : 0;
/* Did FASYNC state change ? */
@@ -104,16 +115,20 @@ asmlinkage long sys_ioctl(unsigned int f
error = filp->f_op->fasync(fd, filp, on);
else error = -ENOTTY;
}
- if (error != 0)
+ if (error != 0) {
+ unlock_kernel();
break;
+ }
if (on)
filp->f_flags |= FASYNC;
else
filp->f_flags &= ~FASYNC;
+ unlock_kernel();
break;
case FIOQSIZE:
+ lock_kernel();
if (S_ISDIR(filp->f_dentry->d_inode->i_mode) ||
S_ISREG(filp->f_dentry->d_inode->i_mode) ||
S_ISLNK(filp->f_dentry->d_inode->i_mode)) {
@@ -122,6 +137,7 @@ asmlinkage long sys_ioctl(unsigned int f
}
else
error = -ENOTTY;
+ unlock_kernel();
break;
default:
error = -ENOTTY;
@@ -130,7 +146,6 @@ asmlinkage long sys_ioctl(unsigned int f
else if (filp->f_op && filp->f_op->ioctl)
error = filp->f_op->ioctl(filp->f_dentry->d_inode, filp, cmd, arg);
}
- unlock_kernel();
fput(filp);
out:
next prev parent reply other threads:[~2004-10-29 16:17 UTC|newest]
Thread overview: 152+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1099008264.4199.4.camel@krustophenia.net>
2004-10-29 0:57 ` [Fwd: Re: [patch] Real-Time Preemption, -RT-2.6.9-mm1-V0.4] Paul Davis
2004-10-29 2:10 ` Lee Revell
2004-10-29 8:02 ` Ingo Molnar
2004-10-29 8:21 ` Thomas Gleixner
2004-10-29 9:09 ` Ingo Molnar
2004-10-29 11:01 ` Paul Davis
2004-10-29 11:14 ` Ingo Molnar
2004-10-29 11:26 ` Paul Davis
2004-10-29 11:36 ` Ingo Molnar
2004-10-29 13:35 ` Paul Davis
2004-10-29 13:55 ` Ingo Molnar
2004-10-29 14:03 ` Paul Davis
2004-10-29 14:15 ` Ingo Molnar
2004-10-29 16:14 ` Ingo Molnar [this message]
2004-10-29 16:21 ` Ingo Molnar
2004-10-29 16:32 ` Florian Schmidt
2004-10-29 16:23 ` Ingo Molnar
2004-10-29 16:31 ` Ingo Molnar
2004-10-29 16:37 ` Ingo Molnar
2004-10-29 16:53 ` Ingo Molnar
2004-10-29 17:16 ` Florian Schmidt
2004-10-29 17:02 ` Ingo Molnar
2004-10-29 17:09 ` Ingo Molnar
2004-10-29 17:16 ` Ingo Molnar
2004-10-29 17:33 ` Florian Schmidt
2004-10-29 17:21 ` Ingo Molnar
2004-10-29 17:22 ` Ingo Molnar
2004-10-29 18:36 ` Florian Schmidt
2004-10-29 20:33 ` Ingo Molnar
2004-10-29 20:51 ` Paul Davis
2004-10-29 21:11 ` Ingo Molnar
2004-10-30 1:06 ` Paul Davis
2004-10-30 11:34 ` Ingo Molnar
2004-11-26 17:16 ` [Jackit-devel] " Jack O'Quin
2004-10-29 20:42 ` Ingo Molnar
2004-10-29 21:31 ` Florian Schmidt
2004-10-29 21:25 ` Ingo Molnar
2004-10-29 21:42 ` Lee Revell
2004-10-29 21:46 ` Ingo Molnar
2004-10-29 21:53 ` Lee Revell
2004-10-29 23:12 ` Lee Revell
2004-10-30 11:58 ` Ingo Molnar
2004-10-30 17:49 ` Lee Revell
2004-10-30 19:17 ` Ingo Molnar
2004-10-30 19:43 ` Lee Revell
2004-10-30 19:47 ` Florian Schmidt
2004-10-30 19:37 ` Ingo Molnar
2004-10-30 19:57 ` Florian Schmidt
2004-10-30 19:52 ` Lee Revell
2004-10-30 20:15 ` Florian Schmidt
2004-10-30 20:26 ` Lee Revell
2004-10-30 21:13 ` Florian Schmidt
2004-10-30 21:26 ` Lee Revell
2004-10-30 21:38 ` Florian Schmidt
2004-10-30 23:12 ` Lee Revell
2004-10-31 12:07 ` Ingo Molnar
2004-10-31 12:48 ` Ingo Molnar
2004-10-31 12:54 ` Lee Revell
2004-10-31 13:13 ` Ingo Molnar
2004-10-31 13:40 ` Ingo Molnar
2004-10-31 15:20 ` Florian Schmidt
2004-10-31 15:59 ` Florian Schmidt
2004-10-31 19:06 ` Florian Schmidt
2004-11-01 13:42 ` Ingo Molnar
2004-11-01 13:53 ` Ingo Molnar
2004-11-01 14:06 ` Ingo Molnar
2004-11-01 15:47 ` Thomas Gleixner
2004-11-01 17:55 ` Lee Revell
2004-11-01 17:58 ` Thomas Gleixner
2004-11-01 18:43 ` Ingo Molnar
2004-11-01 18:46 ` Ingo Molnar
2004-11-01 22:30 ` Florian Schmidt
2004-11-01 22:40 ` Bill Huey
2004-11-01 22:51 ` Florian Schmidt
2004-11-01 22:59 ` Bill Huey
2004-11-02 8:02 ` Ingo Molnar
2004-11-02 8:07 ` Ingo Molnar
2004-11-02 15:06 ` [patch] Real-Time Preemption, -RT-2.6.9-mm1-V0.6.8 Ingo Molnar
2004-11-02 17:52 ` K.R. Foley
2004-11-02 19:37 ` Ingo Molnar
2004-11-02 19:40 ` K.R. Foley
2004-11-02 19:24 ` Norberto Bensa
2004-11-02 19:35 ` Ingo Molnar
2004-11-02 23:09 ` Karsten Wiese
2004-11-03 1:12 ` Ingo Molnar
2004-11-03 10:15 ` Karsten Wiese
2004-11-01 17:04 ` [Fwd: Re: [patch] Real-Time Preemption, -RT-2.6.9-mm1-V0.4] Rui Nuno Capela
2004-11-01 17:08 ` Thomas Gleixner
2004-11-01 20:00 ` Rui Nuno Capela
2004-11-01 17:24 ` K.R. Foley
2004-11-02 0:22 ` Michal Schmidt
2004-11-01 13:54 ` Paul Davis
2004-11-01 14:30 ` Ingo Molnar
2004-11-01 19:30 ` Paul Davis
2004-11-02 8:17 ` Ingo Molnar
2004-11-01 14:03 ` Florian Schmidt
2004-11-01 14:12 ` Ingo Molnar
2004-11-01 15:29 ` K.R. Foley
2004-11-02 23:41 ` [Fwd: Re: [patch] Real-Time Preemption, -RT-2.6.9-mm1-V0.6] Remi Colinet
2004-11-03 1:04 ` Remi Colinet
2004-11-01 11:55 ` [Fwd: Re: [patch] Real-Time Preemption, -RT-2.6.9-mm1-V0.4] Ingo Molnar
2004-11-01 12:37 ` Ingo Molnar
2004-11-01 12:35 ` Thomas Gleixner
2004-11-01 12:51 ` Ingo Molnar
2004-11-01 13:15 ` Ingo Molnar
2004-11-01 13:40 ` Florian Schmidt
2004-11-01 13:48 ` Ingo Molnar
2004-11-01 16:47 ` Rui Nuno Capela
2004-10-31 23:16 ` Michal Schmidt
2004-11-01 0:05 ` Magnus Määttä
2004-10-31 13:11 ` Ingo Molnar
2004-10-31 14:11 ` Florian Schmidt
2004-10-31 13:22 ` Ingo Molnar
2004-10-31 14:28 ` Florian Schmidt
2004-10-31 13:30 ` Ingo Molnar
2004-10-31 21:58 ` Rui Nuno Capela
2004-10-31 22:11 ` K.R. Foley
2004-10-31 2:20 ` Lee Revell
2004-10-31 10:00 ` Florian Schmidt
2004-10-31 12:09 ` Lee Revell
2004-10-31 12:19 ` Ingo Molnar
2004-10-31 12:35 ` Lee Revell
2004-10-31 12:39 ` Ingo Molnar
2004-10-30 20:05 ` Lee Revell
2004-10-30 20:29 ` Florian Schmidt
2004-10-30 0:15 ` Lee Revell
2004-10-29 22:31 ` Florian Schmidt
2004-10-29 22:50 ` Florian Schmidt
2004-10-30 13:15 ` Ingo Molnar
2004-10-30 17:53 ` Florian Schmidt
2004-10-30 3:36 ` Lee Revell
2004-10-30 3:48 ` Lee Revell
2004-10-30 11:16 ` Ingo Molnar
2004-10-30 17:44 ` Lee Revell
2004-10-30 11:28 ` Ingo Molnar
2004-10-30 11:33 ` Ingo Molnar
2004-10-30 13:16 ` Florian Schmidt
2004-10-30 1:10 ` Lee Revell
2004-10-30 1:15 ` Lee Revell
2004-10-29 8:59 ` Ingo Molnar
2004-10-29 9:29 ` Ingo Molnar
2004-10-29 13:48 ` Ingo Molnar
2004-10-29 14:19 ` Paul Davis
2004-10-29 14:27 ` Ingo Molnar
2004-10-29 14:31 ` Ingo Molnar
2004-10-29 14:38 ` Paul Davis
2004-10-29 19:33 ` Lee Revell
2004-10-29 19:35 ` Thomas Gleixner
2004-11-01 14:32 Mark_H_Johnson
2004-11-01 14:36 ` Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2004-11-01 16:34 Mark_H_Johnson
2004-11-01 18:48 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20041029161433.GA6717@elte.hu \
--to=mingo@elte.hu \
--cc=annabellesgarden@yahoo.de \
--cc=bhuey@lnxw.com \
--cc=doogie@debian.org \
--cc=jackit-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mark_h_johnson@raytheon.com \
--cc=mista.tapas@gmx.net \
--cc=nando@ccrma.stanford.edu \
--cc=paul@linuxaudiosystems.com \
--cc=rlrevell@joe-job.com \
--cc=rncbc@rncbc.org \
--cc=tglx@linutronix.de \
--cc=xschmi00@stud.feec.vutbr.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox