On Fri, Jan 09, 2015 at 12:41:59PM +0100, Christoph Hellwig wrote:
> On Fri, Jan 09, 2015 at 08:04:05AM +1100, Dave Chinner wrote:
> > > If the client sends the opaqueue device ID that contains the generation
> > > after the grow to a server that had crashed / restarted the server
> > > will reject it as the server starts at zero. The causes the client
> > > to get a new, valid device ID from the server.
> > But if the server fs has a generation number of zero when it
> > crashes, how does the client tell that it needs a new device ID from
> > the server?
> > > Unlike the NFS file hadles which are persistent the device IDs are
> > > volatile
> > > handles that can go away (and have really horrible life time rules..).
> > Right. How the clients detect that "going away" when the device
> > generation is zero both before and after a server crash is the
> > question I'm asking....
> The server tells the client by rejecting the operation using the
> device ID.
dev id == 0
gen = 0 (initialised after boot)
dev id == 0
server executes op, even though
device has changed....
What prevents this? Shouldn't the server be rejecting the commit
layout operation as there was a grow operation between the client