Re: Questions about GETATTRs

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

 



Hi Olga,

On Tue, 2020-08-11 at 13:27 -0400, Olga Kornievskaia wrote:
> Hi Trond,
> 
> I'd like to discuss a couple of commits that are dealing with
> GETATTRs.
> 
> First is the recent fix in: commit
> 3a39e778690500066b31fe982d18e2e394d3bce2 "nfs: set invalid blocks
> after NFSv4 writes". The fact that CLOSE's GETATTR doesn't query for
> available space leads to stale attribute data but marking attributes
> invalid instead leads to an additional standalone GETATTR if
> attributes are after writing to the file. Question: why not change
> CLOSE's GETATTR to query for additional attributes instead?
> 

So, the point of the CLOSE getattr is to ensure that we manage cache
consistency. While we could ask for further attributes, there are
servers out there for which this might cause slowdowns (in particular
some servers that operate in a clustered mode and that have a sublist
of attributes that they prefetch). I'm therefore open to discussions
around this, but I want to make sure that we give folks a chance to
test against their favourite servers first.

> Another commit I would like to inquire about is: commit
> 3ecefc9295991eaaad4c67915c6384e5d18cc632 "NFSv4: Don't request
> close-to-open attribute when holding a delegation". After this commit
> if the client application queries for attributes after writing it
> triggers a gettattr (because we didn't get them in the close
> compound). I understand that it was an optimization but it leads to
> an
> extra RPC in some workloads so how can we claim that one saving is
> better than another?
> 
> Thank you for the feedback.

When we hold a delegation, the call to CLOSE is usually not considered
a data/metadata synchronisation point. That means we're not guaranteed
to synchronously flush writes (see nfs4_delegation_flush_on_close() in
nfs4_file_flush()), and we usually don't return pNFS layouts.

When we're not flushing writes, then the obvious consequence is that
the GETATTR might just end up getting discarded by the client, while
holding onto the layout can cause the GETATTR to be inefficient on some
servers. Those are the real reasons for the optimisation.

Cheers
  Trond

-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@xxxxxxxxxxxxxxx






[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