Re: [PATCH v3] libfs: getdents() should return 0 after reaching EOD

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

 



On Sun, Nov 19, 2023 at 08:22:30PM +0000, Chuck Lever III wrote:

> lockdep assertion failure
> 
> Call Trace:
>  <TASK>
>  ? show_regs+0x5d/0x64
>  ? offset_dir_llseek+0x39/0xa3
>  ? __warn+0xab/0x158
>  ? report_bug+0xd0/0x144
>  ? offset_dir_llseek+0x39/0xa3
>  ? handle_bug+0x45/0x74
>  ? exc_invalid_op+0x18/0x68
>  ? asm_exc_invalid_op+0x1b/0x20
>  ? offset_dir_llseek+0x39/0xa3
>  ? __pfx_nfs3svc_encode_entryplus3+0x10/0x10 [nfsd]
>  vfs_llseek+0x1f/0x31
>  nfsd_readdir+0x64/0xb7 [nfsd]

Lovely...  Said that, file here is thread-local, so all accesses
to it are serialized.  The same file has ->iterate_shared() called
without ->f_pos_lock a well...

So that's whatever serialization between ->iterate_shared and ->llseek,
really; for normally opened files that's going to be on fdget_pos()
in relevant syscalls, for something private it's up to whatever's
opened them.




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux