* Slow tape drive timeout
@ 2008-04-01 20:30 Carlo Nyto
2008-04-02 5:09 ` Kai Makisara
0 siblings, 1 reply; 7+ messages in thread
From: Carlo Nyto @ 2008-04-01 20:30 UTC (permalink / raw)
To: linux-kernel
I am experiencing a two minute timeout open()ing a tape device when
there is no tape in the drive.
open() with O_NONBLOCK succeeds immediately, however.
The problem is that I am trying to set up Legato on a system that has
multiple tape drives. For certain common operations, Legato tries to
open() each tape drive multiple times. On a system with multiple tape
drives, this adds up to a significant amount of time wasted due to
this timeout.
Solaris does not have this problem, and Legato support advises that
they are at the mercy of the operating system.
Changing the timeout with e.g. "mt -f /dev/nst0 sttimeout 15" does not
change the timeout to 15 seconds, it is still exactly 2 minutes.
This happens with kernel 2.6.24.4, as well as RedHat's 2.6.9-67.
Here is a snippet of strace -T -tt output:
15:56:18.688392 open("/dev/nst0", O_RDONLY) = -1 ENOMEDIUM (No medium
found) <120.480482>
In this case, the tape device is a Quantum DLT-S4 connected to with an
Emulex FC card, via a Fibre Channel SAN.
Any help would be appreciated. Thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: Slow tape drive timeout 2008-04-01 20:30 Slow tape drive timeout Carlo Nyto @ 2008-04-02 5:09 ` Kai Makisara 0 siblings, 0 replies; 7+ messages in thread From: Kai Makisara @ 2008-04-02 5:09 UTC (permalink / raw) To: Carlo Nyto; +Cc: linux-kernel On Tue, 1 Apr 2008, Carlo Nyto wrote: > I am experiencing a two minute timeout open()ing a tape device when > there is no tape in the drive. > > open() with O_NONBLOCK succeeds immediately, however. > This is how open() is supposed to work according to standards (e.g., SUS) if O_NONBLOCK is supported. (Well, actually open() should wait indefinitely but the non-linux systems I tested had a timeout.) The linux st driver was changed to comply with standards at 2.5.3. I.e., the 2.4 kernels did return immediately but the 2.6 kernels have always waited. > The problem is that I am trying to set up Legato on a system that has > multiple tape drives. For certain common operations, Legato tries to > open() each tape drive multiple times. On a system with multiple tape > drives, this adds up to a significant amount of time wasted due to > this timeout. > You are not the only person who has noticed this. At work we had to install a distribution using 2.4 kernel to our backup server in order to use Legato ;-( But this is a Legato problem, not a kernel problem. > Solaris does not have this problem, and Legato support advises that > they are at the mercy of the operating system. > Solaris does return EIO. Either it does not support O_NONBLOCK or it is not compliant with SUS. Legato would not be so much "at the mercy of the operating system" if they would write their software to work according to standards, not according to some operating system. -- Kai ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <fa.iY7vJs54MoScDgyQ4PUWZsO+3Jw@ifi.uio.no>]
[parent not found: <fa.of3hIrxfNefAS08Tzqfm1dI0BOo@ifi.uio.no>]
* Re: Slow tape drive timeout [not found] ` <fa.of3hIrxfNefAS08Tzqfm1dI0BOo@ifi.uio.no> @ 2008-04-03 4:21 ` Robert Hancock 2008-04-03 18:34 ` Kai Makisara 0 siblings, 1 reply; 7+ messages in thread From: Robert Hancock @ 2008-04-03 4:21 UTC (permalink / raw) To: Kai Makisara; +Cc: Carlo Nyto, linux-kernel Kai Makisara wrote: > On Tue, 1 Apr 2008, Carlo Nyto wrote: > >> I am experiencing a two minute timeout open()ing a tape device when >> there is no tape in the drive. >> >> open() with O_NONBLOCK succeeds immediately, however. >> > This is how open() is supposed to work according to standards (e.g., SUS) > if O_NONBLOCK is supported. (Well, actually open() should wait > indefinitely but the non-linux systems I tested had a timeout.) The linux > st driver was changed to comply with standards at 2.5.3. I.e., the 2.4 > kernels did return immediately but the 2.6 kernels have always waited. > >> The problem is that I am trying to set up Legato on a system that has >> multiple tape drives. For certain common operations, Legato tries to >> open() each tape drive multiple times. On a system with multiple tape >> drives, this adds up to a significant amount of time wasted due to >> this timeout. >> > You are not the only person who has noticed this. At work we had to > install a distribution using 2.4 kernel to our backup server in order to > use Legato ;-( > > But this is a Legato problem, not a kernel problem. > >> Solaris does not have this problem, and Legato support advises that >> they are at the mercy of the operating system. >> > Solaris does return EIO. Either it does not support O_NONBLOCK or it is > not compliant with SUS. > > Legato would not be so much "at the mercy of the operating system" if they > would write their software to work according to standards, not according > to some operating system. Why is accessing the tape drive with no tape in it causing a timeout in the first place? I should think that would fail immediately with some "medium not present" error from the drive. Unless the drive has no mechanism to detect it, but that seems really retarded.. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Slow tape drive timeout 2008-04-03 4:21 ` Robert Hancock @ 2008-04-03 18:34 ` Kai Makisara 2008-04-04 2:25 ` Robert Hancock 0 siblings, 1 reply; 7+ messages in thread From: Kai Makisara @ 2008-04-03 18:34 UTC (permalink / raw) To: Robert Hancock; +Cc: Carlo Nyto, linux-kernel On Wed, 2 Apr 2008, Robert Hancock wrote: > Kai Makisara wrote: > > On Tue, 1 Apr 2008, Carlo Nyto wrote: > > > > > I am experiencing a two minute timeout open()ing a tape device when > > > there is no tape in the drive. > > > > > > open() with O_NONBLOCK succeeds immediately, however. > > > > > This is how open() is supposed to work according to standards (e.g., SUS) if > > O_NONBLOCK is supported. (Well, actually open() should wait indefinitely but > > the non-linux systems I tested had a timeout.) The linux st driver was > > changed to comply with standards at 2.5.3. I.e., the 2.4 kernels did return > > immediately but the 2.6 kernels have always waited. > > ... > Why is accessing the tape drive with no tape in it causing a timeout in the > first place? I should think that would fail immediately with some "medium not > present" error from the drive. Unless the drive has no mechanism to detect it, > but that seems really retarded.. > It does not seem retarded to me. If a program wants to just wait until the tape drive becomes ready (e.g., loads the tape), it can use the blocking open. This is simple. If a program wants to test the status, it uses non-blocking open. The behavior mandated by the standards provides alternatives. If O_NONBLOCK is not supported, the user program must implement the waiting logic if the program just wants to wait until the drive is ready before starting i/o. -- Kai ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Slow tape drive timeout 2008-04-03 18:34 ` Kai Makisara @ 2008-04-04 2:25 ` Robert Hancock 2008-04-04 18:04 ` Kai Makisara 0 siblings, 1 reply; 7+ messages in thread From: Robert Hancock @ 2008-04-04 2:25 UTC (permalink / raw) To: Kai Makisara; +Cc: Carlo Nyto, linux-kernel Kai Makisara wrote: > On Wed, 2 Apr 2008, Robert Hancock wrote: > >> Kai Makisara wrote: >>> On Tue, 1 Apr 2008, Carlo Nyto wrote: >>> >>>> I am experiencing a two minute timeout open()ing a tape device when >>>> there is no tape in the drive. >>>> >>>> open() with O_NONBLOCK succeeds immediately, however. >>>> >>> This is how open() is supposed to work according to standards (e.g., SUS) if >>> O_NONBLOCK is supported. (Well, actually open() should wait indefinitely but >>> the non-linux systems I tested had a timeout.) The linux st driver was >>> changed to comply with standards at 2.5.3. I.e., the 2.4 kernels did return >>> immediately but the 2.6 kernels have always waited. >>> > ... >> Why is accessing the tape drive with no tape in it causing a timeout in the >> first place? I should think that would fail immediately with some "medium not >> present" error from the drive. Unless the drive has no mechanism to detect it, >> but that seems really retarded.. >> > It does not seem retarded to me. If a program wants to just wait until the > tape drive becomes ready (e.g., loads the tape), it can use the blocking > open. This is simple. If a program wants to test the status, it uses > non-blocking open. The behavior mandated by the standards provides > alternatives. If O_NONBLOCK is not supported, the user program must > implement the waiting logic if the program just wants to wait until the > drive is ready before starting i/o. This behavior is not consistent with any other removable storage device provided by Linux, however. If you try to open a CD-ROM device node when no disc is inserted, it doesn't block, it just gives you an error right away. Why should the tape drive behavior be different? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Slow tape drive timeout 2008-04-04 2:25 ` Robert Hancock @ 2008-04-04 18:04 ` Kai Makisara 0 siblings, 0 replies; 7+ messages in thread From: Kai Makisara @ 2008-04-04 18:04 UTC (permalink / raw) To: Robert Hancock; +Cc: Carlo Nyto, linux-kernel On Thu, 3 Apr 2008, Robert Hancock wrote: > Kai Makisara wrote: > > On Wed, 2 Apr 2008, Robert Hancock wrote: > > > > > Kai Makisara wrote: > > > > On Tue, 1 Apr 2008, Carlo Nyto wrote: > > > > > > > > > I am experiencing a two minute timeout open()ing a tape device when > > > > > there is no tape in the drive. > > > > > > > > > > open() with O_NONBLOCK succeeds immediately, however. > > > > > > > > > This is how open() is supposed to work according to standards (e.g., > > > > SUS) if > > > > O_NONBLOCK is supported. (Well, actually open() should wait indefinitely > > > > but > > > > the non-linux systems I tested had a timeout.) The linux st driver was > > > > changed to comply with standards at 2.5.3. I.e., the 2.4 kernels did > > > > return > > > > immediately but the 2.6 kernels have always waited. > > > > > > ... > > > Why is accessing the tape drive with no tape in it causing a timeout in > > > the > > > first place? I should think that would fail immediately with some "medium > > > not > > > present" error from the drive. Unless the drive has no mechanism to detect > > > it, > > > but that seems really retarded.. > > > > > It does not seem retarded to me. If a program wants to just wait until the > > tape drive becomes ready (e.g., loads the tape), it can use the blocking > > open. This is simple. If a program wants to test the status, it uses > > non-blocking open. The behavior mandated by the standards provides > > alternatives. If O_NONBLOCK is not supported, the user program must > > implement the waiting logic if the program just wants to wait until the > > drive is ready before starting i/o. > > This behavior is not consistent with any other removable storage device > provided by Linux, however. If you try to open a CD-ROM device node when no > disc is inserted, it doesn't block, it just gives you an error right away. Why > should the tape drive behavior be different? The tape driver supports O_NONBLOCK, the cdrom and disk drivers don't. The tape and disk drivers are otherwise so different (tape is character device, disks block devices) that I don't think it is a problem if the tape drive supports more features than the disk drivers. I looked at my emails from 2001 when support for O_NONBLOCK was introduced. The reasons for this where standards (as mentioned already) and that some applications required this feature. So, it was not added just for fun. -- Kai ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <aepft-NF-5@gated-at.bofh.it>]
[parent not found: <aepft-NF-7@gated-at.bofh.it>]
[parent not found: <aepfs-NF-3@gated-at.bofh.it>]
[parent not found: <aeCw6-5Yu-35@gated-at.bofh.it>]
* Re: Slow tape drive timeout [not found] ` <aeCw6-5Yu-35@gated-at.bofh.it> @ 2008-04-04 9:37 ` Bodo Eggert 0 siblings, 0 replies; 7+ messages in thread From: Bodo Eggert @ 2008-04-04 9:37 UTC (permalink / raw) To: Kai Makisara, Robert Hancock, Carlo Nyto, linux-kernel Kai Makisara <Kai.Makisara@kolumbus.fi> wrote: > On Wed, 2 Apr 2008, Robert Hancock wrote: >> Why is accessing the tape drive with no tape in it causing a timeout in the >> first place? I should think that would fail immediately with some "medium not >> present" error from the drive. Unless the drive has no mechanism to detect >> it, but that seems really retarded.. >> > It does not seem retarded to me. If a program wants to just wait until the > tape drive becomes ready (e.g., loads the tape), it can use the blocking > open. This is simple. This would be simple, if there were no timeout. Having the timeout, the program must loop anyway. > If a program wants to test the status, it uses > non-blocking open. The behavior mandated by the standards provides > alternatives. If O_NONBLOCK is not supported, the user program must > implement the waiting logic if the program just wants to wait until the > drive is ready before starting i/o. Therfore a portable program SHOULD implement a waiting logic that won't burn the CPU if there is no tape in the drive. It's still sane to allow waiting for media change, but this applies to any removable media. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2008-04-04 18:04 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-01 20:30 Slow tape drive timeout Carlo Nyto
2008-04-02 5:09 ` Kai Makisara
[not found] <fa.iY7vJs54MoScDgyQ4PUWZsO+3Jw@ifi.uio.no>
[not found] ` <fa.of3hIrxfNefAS08Tzqfm1dI0BOo@ifi.uio.no>
2008-04-03 4:21 ` Robert Hancock
2008-04-03 18:34 ` Kai Makisara
2008-04-04 2:25 ` Robert Hancock
2008-04-04 18:04 ` Kai Makisara
[not found] <aepft-NF-5@gated-at.bofh.it>
[not found] ` <aepft-NF-7@gated-at.bofh.it>
[not found] ` <aepfs-NF-3@gated-at.bofh.it>
[not found] ` <aeCw6-5Yu-35@gated-at.bofh.it>
2008-04-04 9:37 ` Bodo Eggert
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®