afs: fix for return an error from afs_readdir when out of buffers
authorMichael Meffie <mmeffie@sinenomine.net>
Tue, 13 Oct 2015 02:16:54 +0000 (22:16 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Wed, 11 Nov 2015 15:26:59 +0000 (10:26 -0500)
commiteca86749d8f158d27d131ecaafe6be282703535e
treea14d1e9123936d3e9a7d99032a7d022fad48013e
parent69d11fd5ee556bb375967d7c41dab39b9c1befbe
afs: fix for return an error from afs_readdir when out of buffers

Commit 9b0d5f274fe79ccc5dd0e4bba86b3f52b27d3586 added a return code to
BlobScan to allow afs_readdir to return an error when afs_newslot failed
to allocate a buffer.  Unfortunately, that change introduced a false
EIO error.

Originally, BlobScan would return a blob number of 0 to indicate the end
of the file has been reached while traversing the directory blobs.
Restore that behavior by changing the cache manager's DRead function to
return ENOENT instead of the generic EIO error to indicate the page to
be read is out of bounds, and change BlobScan to return a blob of zero
to indicate to callers the last blob has been reached.  All callers
already check for a blob number of zero, which is out of range.

Change-Id: I5baae8e5377dd49dcca6765b7a4ddc89cca70738
Reviewed-on: http://gerrit.openafs.org/12058
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Tested-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/afs/VNOPS/afs_vnop_readdir.c
src/afs/afs_buffer.c