On Wed, 9 Nov 2011, Noah Watkins wrote: > On Wed, Nov 9, 2011 at 12:56, Sage Weil <sage@xxxxxxxxxxxx> wrote: > > On Tue, 8 Nov 2011, Noah Watkins wrote: > > > > The only issue with this is that, in the event that you don't guess a > > sufficiently large array on the first call, you may need to call again, > > and in some cases that may mean multiple MDS requests. Normally that's > > not the case. And a smart caller should guess 4 and only pass 0 and then > > N if 4 failed. But a naive caller will always make two calls, first with > > 0 and then with N, and in some cases that's actually slower. > > The code I'm using makes a large guess, and an alternative is for the > user to cache the replication factor for a file? A similar approach using > ERANGE is used by listxattr (well, it communicates ERANGE via errno). > In any case, even with Tommi's *naddr_out approach, a certain amount > of precise documentation on it's semantics is needed. Actually, I take it back, the 0 query will never need an additional MDS request because the file_layout is immutable for the lifetime of the file (currently at least; and even if it weren't it should very rarely change). And yeah, I like the consistency wrt listxattr. Ok! sage