Re: [RFC] After nfs restart, locks can't be recovered which record by lockd before

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Chuck Lever 写道:
> 
> On Jan 18, 2010, at 5:51 AM, Mi Jinlong wrote:
> 
>> Hi Chuck,
>>
>> Chuck Lever 写道:
>>> On Jan 15, 2010, at 4:35 AM, Mi Jinlong wrote:
>>
>> ...snip...
>>
>>>>>>
>>>>>> Maybe, the kernel should fix this.
>>>>>
>>>>> What did you have in mind?
>>>>
>>>> I think when lockd restart, statd should restart too and sent
>>>> sm-notify to other client.
>>>
>>> Sending notifications is likely the correct thing to do if lockd is
>>> restarted while there are active locks.  A statd restart isn't
>>> necessarily required to send reboot notifications, however.  You can do
>>> it with "sm-notify -f".
>>>
>>> The problem with "sm-notify -f" is that it deletes the on-disk monitor
>>> list while statd is still running.  This means the on-disk monitor list
>>> and statd's in-memory monitor list will be out of sync.  I seem to
>>> recall that sm-notify is run by itself by cluster scripts, and that
>>> could be a real problem.
>>>
>>> As implemented on RH, "service nfslock restart" will restart statd and
>>> force an sm-notify anyway, so no real harm done, but that's pretty
>>> heavyweight (and requires that admins do "service nfs stop; service
>>> nfslock restart; service nfs start" or something like that if they want
>>> to get proper lock recovery).
>>>
>>> A simple restart of statd (outside of the nfslock script) probably won't
>>> be adequate, though.  It will respect the sm-notify pidfile, and not
>>> send notifications when started up.  I don't see a flag on statd to
>>> force it to send notifications on restart (-N only sends notifications;
>>> it doesn't also start the statd daemon).
>>>
>>> In a perfect world, when lockd restarts, it would send up an
>>> SM_SIMU_CRASH, and statd would do the right thing:  if there are
>>> monitored peers, it would send reboot notifications, and adjust it's
>>> monitor list accordingly;  if there were no monitored peers, it would do
>>> nothing.  Thus no statd restart would be needed.
>>
>>  Did this part have implemented at kernel?
>>  I don't find the codes about SM_SIMU_CRASH.
> 
> There isn't such code in the current kernel.  I'm simply suggesting a
> possible solution.
> 
> I'm coding up a patch that does this so we can experiment with it.  I'm
> a little worried that the current statd code won't do the right thing,
> or even worse, it would crash.  That would make it difficult to
> introduce such a patch without triggering regressions.
> 

  That's why I don't find the codes! Thanks!
  The statd code does have some rough, but, we can modify it when we need.

  Do you have implemented those codes? If have, please give me a copy, 
  or a git commit.

thanks,
Mi Jinlong

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux