1 Aug 2007 11:29
Re: Device stateids
Robert Gordon <rbg <at> openrbg.com>
2007-08-01 09:29:22 GMT
2007-08-01 09:29:22 GMT
Okay, well I'm willing to take a stab at tweaking
the proposal.
----
The NFS client maintains a mapping of device ids contained
in a layout, to the corresponding data server address.
The state of the mapping is represented by a single
recallable device stateid (devstateid). There is at most
one devstateid per { client ID, layout type } pair.
GETDEVICEINFO and GETDEVICELIST each return the devstateid.
The mappings stay in force until the devstateid is
recalled (via CB_RECALL) or lease expiration.
All layouts using the device IDs remain in force, but the
server MUST fence the client from accessing the affected
data servers until the client has obtained the re-mapped
device IDs via GETDEVICEINFO or GETDEVICELIST.
If the server supports CB_NOTIFY and the Client has
requested device id notifications via GETDEVICEINFO
or GETDEVICELIST; The server can inform the client
of an add, modify, or delete mapping.
The CB_NOTIFY notifications are:
NOTIFY4_DELETE_DEVICE_ID
(Continue reading)
, and before
> the reply is received?
The problem is not that the client needs to know if/when the
server thinks the lease expired. The problem is the server
needs to know how long it has to wait to be assured that an
uncommunicative client has stopped using its layouts, making
unilateral reclaim of layout resources safe. That's a different
problem, and it can be solved in the following fashion:
- After some period of time <X> of inability to talk to the
server, the client stops using layouts. The client uses
a heartbeat operation as needed (e.g., every <X>/2) to
stay inside of this. The client side rule is simple:
if <X> has elapsed since sending of an operation for which
a server reply was received, then layouts cannot be used
(if <X> is large enough that possible communication delays
are noise with respect to it, it's sufficient to track
when replies arrive from the server). <X> should be set
reasonably large - 5 seconds strikes me as too short, but
I don't know what we use in practice off the top of my head.
RSS Feed