extern BlueSkyFS *fs;
+#define NFS_BLOCKSIZE 32768
+#define NFS_MAXSIZE (1 << 20)
+
/* Check that a string is a valid file name. We require that it be valid
* UTF-8, that it not be empty, and that it not contain embedded forward
* slashes. Also checks that the length of the string is not more than the
{
read3res result;
memset(&result, 0, sizeof(result));
- char buf[32768];
+ char buf[NFS_MAXSIZE];
BlueSkyInode *inode = lookup_fh(req, &argp->file);
if (inode == NULL) {
count = 0;
result.read3res_u.resok.eof = TRUE;
} else {
+ count = MIN(count, NFS_MAXSIZE);
count = MIN(count, inode->size - argp->offset);
if (argp->offset + count == inode->size)
result.read3res_u.resok.eof = TRUE;
result.status = NFS3_OK;
result.fsinfo3res_u.resok.obj_attributes.present = TRUE;
encode_fattr3(&result.fsinfo3res_u.resok.obj_attributes.post_op_attr_u.attributes, inode);
- result.fsinfo3res_u.resok.rtmax = 32768;
- result.fsinfo3res_u.resok.rtpref = 32768;
- result.fsinfo3res_u.resok.rtmult = 4096;
- result.fsinfo3res_u.resok.wtmax = 32768;
- result.fsinfo3res_u.resok.wtpref = 32768;
- result.fsinfo3res_u.resok.wtmult = 4096;
- result.fsinfo3res_u.resok.dtpref = 4096;
+ result.fsinfo3res_u.resok.rtmax = NFS_MAXSIZE;
+ result.fsinfo3res_u.resok.rtpref = NFS_MAXSIZE;
+ result.fsinfo3res_u.resok.rtmult = NFS_BLOCKSIZE;
+ result.fsinfo3res_u.resok.wtmax = NFS_MAXSIZE;
+ result.fsinfo3res_u.resok.wtpref = NFS_MAXSIZE;
+ result.fsinfo3res_u.resok.wtmult = NFS_BLOCKSIZE;
+ result.fsinfo3res_u.resok.dtpref = NFS_BLOCKSIZE;
result.fsinfo3res_u.resok.maxfilesize = 0x7fffffffffffffffULL;
result.fsinfo3res_u.resok.time_delta.seconds = 0;
result.fsinfo3res_u.resok.time_delta.nseconds = 1000;