Project

General

Profile

Bug #23291

Updated by Jeff Layton about 6 years ago

Zheng pointed out that we could end up with a setattr request being cached in the libcephfs client after it has replied with success to the application. This is problematic for ganesha: 

 1/ NFS client does a NFS SETATTR 
 2/ ganesha issues setattrx to libcephfs, result is cached in client and not sent to MDS 
 3/ ganesha replies with success to client 
 4/ ganesha crashes 

 setattrx changes are then lost. 

 NFS expects setattr requests to be durable. The right fix is probably to allow the application ceph client to request that a setattrx be forced through to the MDS. In practice, ganesha and samba will almost never want the client to cache the results of a setattr. 

 In the libcephfs code the decision to cache the change is done in _do_setattr. We just need to provide some way to force the change to go to the MDS, even when it holds the appropriate caps. Alternately, we could just always have ceph_ll_setattr do that. AFAIK, ganesha is the only caller of that function user so far.

Back