Draft: vfs_ceph_rgw: Return ENOATTR for non-existing files/folders
If objects with names such as "d1/d2/d3/object" via s3cmd on bucket. s3cmd ends up creating a single object with key as "d1/d2/d3/object",
that been said it does not create individual components of path as object like d1, d1/d2, d1/d2/d3.
When client performs listing operation, smbd fetches extended attributes for d1, d1/d2, d1/d2/d3 via librgw.
However since these objects does not exists, underlying object store returns -ENOENT to librgw.
librgw internally translates any error returned to it as -EIO and sends back to smbd.
This results into cifs client displaying error like "ls: /mnt/rshare1/d1/d2/d3/: Input/output error".
This MR shall handle this situation by explicitly translate ENOENT to ENOATTR, thereby to get correctly handled by upper layers,
effectively providing correct result to cifs client.
Checklist
- Commits have
Signed-off-by:with name/author being identical to the commit author - (optional) This MR is just one part towards a larger feature.
- (optional, if backport required) Bugzilla bug filed and
BUG:tag added - Test suite updated with functionality tests
- Test suite updated with negative tests
- Documentation updated
- CI timeout is 3h or higher (see Settings/CICD/General pipelines/ Timeout)
Reviewer's checklist:
- There is a test suite reasonably covering new functionality or modifications
- Function naming, parameters, return values, types, etc., are consistent and according to
README.Coding.md - This feature/change has adequate documentation added
- No obvious mistakes in the code