Re: Concurrent `ls` takes out the thrash

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

 



> On Dec 7, 2016, at 17:55, Benjamin Coddington <bcodding@xxxxxxxxxx> wrote:
> 
> On 7 Dec 2016, at 17:41, Trond Myklebust wrote:
> 
>>> On Dec 7, 2016, at 17:34, Benjamin Coddington <bcodding@xxxxxxxxxx> wrote:
>>> static
>>> @@ -921,7 +930,7 @@ static int nfs_readdir(struct file *file, struct dir_context *ctx)
>>> 	desc->ctx = ctx;
>>> 	desc->dir_cookie = &dir_ctx->dir_cookie;
>>> 	desc->decode = NFS_PROTO(inode)->decode_dirent;
>>> -	desc->plus = nfs_use_readdirplus(inode, ctx) ? 1 : 0;
>>> +	desc->plus = nfs_use_readdirplus(inode, ctx, dir_ctx) ? 1 : 0;
>> 
>> This fixes desc->plus at the beginning of the readdir() call. Perhaps we
>> should instead check the value of ctx->use_readdir_plus in the call to
>> nfs_readdir_xdr_filler(), and just resetting cts->use_readdir_plus at the
>> very end of nfs_readdir()?
> 
> I don't understand the functional difference.  Is this just a preference?

No. The functional difference is that we take into account the fact that a process may be in the readdir() code while a GETATTR or LOOKUP from a second process is triggering “use readdirplus” feedback.

> 
> There must be something else happening.. dcache is getting under pressure
> pruned maybe, that causes a miss and then the process starts over?
> 
> Ben
> 

��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥




[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