[readdir] using last_error to convey lack of space

This commit is contained in:
Olga Kornievskaia 2012-03-12 13:48:43 -04:00
parent 3d57b26922
commit 2e1df56572

View file

@ -381,7 +381,9 @@ static int readdir_add_dots(
case 0: case 0:
if (entry_buf_len < entry_len + 2) { if (entry_buf_len < entry_len + 2) {
status = ERROR_BUFFER_OVERFLOW; status = ERROR_BUFFER_OVERFLOW;
dprintf(1, "not enough room for '.' entry.\n"); dprintf(1, "not enough room for '.' entry. received %d need %d\n",
entry_buf_len, entry_len + 2);
args->query_reply_len = entry_len + 2;
goto out; goto out;
} }
@ -409,7 +411,9 @@ static int readdir_add_dots(
case COOKIE_DOT: case COOKIE_DOT:
if (entry_buf_len < entry_len + 3) { if (entry_buf_len < entry_len + 3) {
status = ERROR_BUFFER_OVERFLOW; status = ERROR_BUFFER_OVERFLOW;
dprintf(1, "not enough room for '..' entry.\n"); dprintf(1, "not enough room for '..' entry. received %d need %d\n",
entry_buf_len, entry_len);
args->query_reply_len = entry_len + 2;
goto out; goto out;
} }
/* XXX: this skips '..' when listing root fh */ /* XXX: this skips '..' when listing root fh */
@ -608,6 +612,10 @@ out:
case ERROR_NO_MORE_FILES: case ERROR_NO_MORE_FILES:
dprintf(1, "ERROR_NO_MORE_FILES.\n"); dprintf(1, "ERROR_NO_MORE_FILES.\n");
break; break;
case ERROR_BUFFER_OVERFLOW:
upcall->last_error = status;
status = ERROR_SUCCESS;
break;
default: default:
dprintf(1, "error code %d.\n", status); dprintf(1, "error code %d.\n", status);
break; break;