[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Interface for SCSI transactions ?
From: |
olafBuddenhagen |
Subject: |
Re: Interface for SCSI transactions ? |
Date: |
Tue, 6 Sep 2011 18:16:42 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Hi,
On Tue, Sep 06, 2011 at 03:56:30PM +0200, Thomas Schmitt wrote:
> Samuel Thibault wrote:
> But i was uncertain to which side of the RPC gap this belongs, because
> i could not spot a function device_get_status() outside toplevel
> directory gnumach. (Where is the RPC stub of the function ? Where does
> dev_status_t get transmitted ? ...)
The server side is generated during Mach build; the client side is
generated during libc build... Not sure which one you mean.
> I now assume linux/dev/glue/block.c is executed in a translator.
What makes you think so? I'm pretty sure we already said that currently
the drivers are in Mach itself -- although we want this to change in the
future...
> (What is the model relation of server and translator ?)
A translator is any (server) process accessible through a node in the
filesystem tree. Almost all Hurd servers are translators.
Mach also offers a number of in-kernel servers for handling various RPCs
-- for example the device server (ds_) for handling device RPCs such as
device_get_status(). These are obviously not translators, as Mach
doesn't even know what a filesystem is :-)
> This reply buffering would have to happen individually for each struct
> block_data that may be handed to scsi_ioctl_send_command() as
> parameter "void *d".i Is there a suitably persistent relation between
> instances of struct block_data and the instance of device_t device in
> userspace ?
Not sure what you mean here... Are you asking about a possible situation
where several requests are in flight simultaneously, i.e. set_status()
is invoked again (possibly by another processes) before the
corresponding get_status() call is done for the previous one?
IIRC the current implementation of the device handling can't handle
separate client sessions... So I fear the only way to associate possibly
overlappnig set_status()/get_status() pairs would be by explicitly
passing some handle... [shudder]
Sounds like one more reason for adding a specialised atomic RPC instead
:-)
> Currently it seems appealing to have one that calls quite directly
> scsi_ioctl_send_command() . (I hope that would fulfill my wishes.
> Assuming that the appropriate translators use this call for their SCSI
> transactions, too.)
Not sure what translators you mean here...
> > Simply rebuild gnumach and reboot with it.
>
> What files in the Hurd image should i backup and be ready to
> re-install after i made it unbootable ?
None... If you just copy the freshly built "gnumach" binary to /boot, it
won't overwrite the default kernel (which uses a different file name),
so you can choose which one to boot in GRUB :-)
(You can even leave out the copying, and instead boot the kernel
directly from the build tree... Though this might be a bit more
cumbersome to request in GRUB.)
-antrik-
Re: Interface for SCSI transactions ?, olafBuddenhagen, 2011/09/06
Re: Interface for SCSI transactions ?, Samuel Thibault, 2011/09/08
Re: Interface for SCSI transactions ?, Thomas Schmitt, 2011/09/09
Re: Interface for SCSI transactions ?, Thomas Schmitt, 2011/09/10