On Thu, 2012-08-09 at 22:30 +0800, Peng Tao wrote: > On Thu, Aug 9, 2012 at 4:21 AM, Trond Myklebust > <Trond.Myklebust@xxxxxxxxxx> wrote: > > Ever since commit 0a57cdac3f (NFSv4.1 send layoutreturn to fence > > disconnected data server) we've been sending layoutreturn calls > > while there is potentially still outstanding I/O to the data > > servers. The reason we do this is to avoid races between replayed > > writes to the MDS and the original writes to the DS. > > > > When this happens, the BUG_ON() in nfs4_layoutreturn_done can > > be triggered because it assumes that we would never call > > layoutreturn without knowing that all I/O to the DS is > > finished. The fix is to remove the BUG_ON() now that the > > assumptions behind the test are obsolete. > > > Isn't MDS supposed to recall the layout if races are possible between > outstanding write-to-DS and write-through-MDS? Where do you read that in RFC5661? > And it causes data corruption for blocklayout if client returns layout > while there is in-flight disk IO... Then it needs to turn off fast failover to write-through-MDS. -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥