public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Douglas Gilbert <dougg@torque.net>
To: Kai Makisara <Kai.Makisara@kolumbus.fi>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Kern Sibbald <kern@sibbald.com>,
	linux-scsi@vger.kernel.org, Willem Riede <wrlk@riede.org>
Subject: Re: Linux tape drivers
Date: Wed, 04 Apr 2007 15:50:46 -0400	[thread overview]
Message-ID: <46140196.4020702@torque.net> (raw)
In-Reply-To: <Pine.LNX.4.64.0704042029430.8139@kai.makisara.local>

Kai Makisara wrote:
> On Tue, 3 Apr 2007, Andrew Morton wrote:
> 
>> (cc's added, with permission)
>>
>> On Tue, 3 Apr 2007 15:08:37 +0200
>> Kern Sibbald <kern@sibbald.com> wrote:
>>
>>> Hello,
>>>
>>> I am the project manager for Bacula, an Open Source network backup program 
>>> that runs on all popular OSes.  After your presentation at FOSDEM in Febrary, 
>>> we briefly talked about Linux tape driver problems I am encountering, and you 
>>> offered to put me in touch with the appropriate kernel developers.
>>>
>>> I would much appreciate any help in this.  Since the problems concern all tape 
>>> drivers, I provide a very brief outline of what my would like to discuss.  
>>> First, I must mention that the Linux SCSI driver works perfectly fine with 
>>> Bacula, it is simply a question of possible improvements, under item 2 below.
>>>
>>> Issues for discussion:
>>>
>>> 1. Bugs:
>>>    a. Other than the OSST driver, apparently no IDE/SATA tape driver works
>>>        with Bacula. I don't have such a drive (working on it), but from user
>>>        reports, it appears to me that there are problems of permitting 
>>>        variable length blocks, and more serious, when writing to the end of
>>>        the tape, either the logical end of tape indicator is ignored, or when
>>>        it is encountered, all further I/O is prohibited -- including a WEOF. 
>>>        This makes reliable writing of multiple reel tapes impossible.
>>>
>>>        By the way, these IDE/SATA drives work with Bacula using the same
>>>        source code cross-compiled with GNU C++ on Linux, then run on Windows
>>>        machines, so it is most likely a driver issue rather than anything in
>>>        Bacula or the hardware.
>>>
> 
> Others have already answered this and I agree with their view. All of the 
> tape drives seem to use the SSC command set or something close to that. 
> One high-level driver should be enough to implement the user semantics.
>  
> Libata should be able to drive the SATA/IDE drives using and the drives 
> are visible as SCSI devices in Linux. In future there should be no real 
> need for ide-scsi. Probably very few people have tried libata with tapes 
> and there may be some problems to fix. Someone should test this with 
> real devices and report the problems back to libata maintainers.
> 
>>> 2. Usability of the current tape driver API (not bugs)
>>>   a. With the new O_NONBLOCK flag introduced in kernel 2.5.x, opening
>>>       a tape drive and finding out if a volume is mounted is much more 
>>>       complicated.  It is really inconvenient and required a lot more code
>>>       in prior kernels.  This should be an item for discussion.
> 
> The reasons for the change were:
> 1. To be compatible with the Unix standards, and
> 2. To be compatible with other Unix tape driver semantics.
> 
> Because of these reasons the changes should probably not be reversed but 
> there may be something to improve in the implementation. Suggestions?

Kai,
Perhaps an ignore_nonblock sysfs attribute or driver option
could be added for the old semantics.
As I have found in the past, programs the scan for devices
by opening device nodes don't play well with drivers
that hang on open.

>>>   b. There is no simple way to determine if a tape is in a drive -- it is 
>>>       at least 20 or 30 lines of C code to do it right.
> 
> Why not use GMT_ONLINE() with MTIOCGET? The definition from the st man 
> page is:
> 
> GMT_ONLINE(x): The last open() found the drive with a tape in place and 
> ready for operation.
> 
> If it does not work correctly, it can be fixed. (Of course, if you want to 
> see if a tape is in a drive but not loaded, it is more difficult.)

Sound like a TEST UNIT READY is all that is needed.
They could call out to a utility like sg_turs or
sdparm and check the exit status. They could also
build with sg3_utils-libs and call
sg_ll_test_unit_ready(). [All sg3_utils code is C++
friendly.]

Doug Gilbert

  reply	other threads:[~2007-04-04 19:53 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200704031508.37222.kern@sibbald.com>
2007-04-03 20:39 ` Linux tape drivers Andrew Morton
2007-04-03 21:30   ` Kern Sibbald
2007-04-03 21:57     ` Andrew Morton
2007-04-03 22:15       ` James Bottomley
2007-04-04  3:00       ` Willem Riede
2007-04-04 14:26         ` Kern Sibbald
2007-04-04 18:55           ` Andrew Morton
2007-04-04 19:21             ` Kern Sibbald
2007-04-04 20:37               ` Andrew Morton
2007-04-04 19:22             ` Willem Riede
2007-04-04 20:39               ` Andrew Morton
2007-04-04 21:31                 ` Bartlomiej Zolnierkiewicz
2007-04-04 21:43                   ` Andrew Morton
2007-04-04 18:46   ` Kai Makisara
2007-04-04 19:50     ` Douglas Gilbert [this message]
2007-04-04 20:58     ` Kern Sibbald
2007-04-04 21:54       ` Kai Makisara
2007-04-05  8:32         ` Kern Sibbald

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=46140196.4020702@torque.net \
    --to=dougg@torque.net \
    --cc=Kai.Makisara@kolumbus.fi \
    --cc=akpm@linux-foundation.org \
    --cc=kern@sibbald.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=wrlk@riede.org \
    /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