diff -urN lfs-ref/fs/nfs/dir.c lfs-1/fs/nfs/dir.c --- lfs-ref/fs/nfs/dir.c Sun Sep 17 01:20:43 2000 +++ lfs-1/fs/nfs/dir.c Sun Sep 17 17:50:23 2000 @@ -136,7 +136,7 @@ int plus = NFS_USE_READDIRPLUS(inode); int error; - dfprintk(VFS, "NFS: nfs_readdir_filler() reading cookie %Lu into page %lu.\n", (long long)desc->entry->cookie, page->offset); + dfprintk(VFS, "NFS: nfs_readdir_filler() reading cookie %Lu into page %Lu.\n", (long long)desc->entry->cookie, (long long) nfs_page_offset(page)); again: error = NFS_CALL(readdir, inode, (dir, &dir_attr, @@ -159,7 +159,7 @@ * Note: assumes we have exclusive access to this inode either * throught inode->i_sem or some other mechanism. */ - if (page->offset == 0) + if (page->index == 0) invalidate_inode_pages(inode); nfs_unlock_page(page); return 0; @@ -295,7 +295,7 @@ * retrieving the current dirent on the server */ fileid = nfs_fileid_to_ino_t(entry->ino); res = filldir(dirent, entry->name, entry->len, - entry->prev_cookie, fileid); + entry->prev_cookie, fileid, DT_UNKNOWN); if (res < 0) break; file->f_pos = desc->target = entry->cookie; diff -urN lfs-ref/fs/nfs/file.c lfs-1/fs/nfs/file.c --- lfs-ref/fs/nfs/file.c Sun Sep 17 01:20:43 2000 +++ lfs-1/fs/nfs/file.c Sun Sep 17 13:12:47 2000 @@ -232,10 +232,10 @@ struct inode * inode = dentry->d_inode; int status = 0; - dprintk("NFS: nfs_lock(f=%4x/%ld, t=%x, fl=%x, r=%ld:%ld)\n", + dprintk("NFS: nfs_lock(f=%4x/%ld, t=%x, fl=%x, r=%Ld:%Ld)\n", inode->i_dev, inode->i_ino, fl->fl_type, fl->fl_flags, - fl->fl_start, fl->fl_end); + (long long)fl->fl_start, (long long)fl->fl_end); if (!inode) return -EINVAL; diff -urN lfs-ref/fs/nfs/inode.c lfs-1/fs/nfs/inode.c --- lfs-ref/fs/nfs/inode.c Sun Sep 17 01:20:43 2000 +++ lfs-1/fs/nfs/inode.c Sun Sep 17 16:31:18 2000 @@ -689,7 +689,7 @@ * Preset the size and mtime, as there's no need * to invalidate the caches. */ - inode->i_size = nfs_size_to_off_t(fattr->size); + inode->i_size = nfs_size_to_loff_t(fattr->size); inode->i_mtime = nfs_time_to_secs(fattr->mtime); inode->i_atime = nfs_time_to_secs(fattr->atime); inode->i_ctime = nfs_time_to_secs(fattr->ctime); @@ -1102,8 +1102,8 @@ int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) { - off_t new_size, new_isize; - __u64 new_mtime; + __u64 new_size, new_mtime; + loff_t new_isize; int invalid = 0; int error = -EIO; @@ -1150,7 +1150,7 @@ new_mtime = fattr->mtime; new_size = fattr->size; - new_isize = nfs_size_to_off_t(fattr->size); + new_isize = nfs_size_to_loff_t(fattr->size); error = 0; diff -urN lfs-ref/fs/nfs/nfs3proc.c lfs-1/fs/nfs/nfs3proc.c --- lfs-ref/fs/nfs/nfs3proc.c Sun Sep 17 01:20:43 2000 +++ lfs-1/fs/nfs/nfs3proc.c Sun Sep 17 17:51:56 2000 @@ -143,7 +143,7 @@ static int nfs3_proc_read(struct dentry *dentry, struct nfs_fattr *fattr, struct rpc_cred *cred, int flags, - unsigned long offset, unsigned int count, + loff_t offset, unsigned int count, void *buffer, int *eofp) { struct nfs_readargs arg = { NFS_FH(dentry), offset, count, 1, @@ -153,7 +153,7 @@ struct rpc_message msg = { NFS3PROC_READ, &arg, &res, cred }; int status; - dprintk("NFS call read %d @ %ld\n", count, offset); + dprintk("NFS call read %d @ %Ld\n", count, (long long) offset); fattr->valid = 0; status = rpc_call_sync(NFS_CLIENT(dentry->d_inode), &msg, flags); dprintk("NFS reply read: %d\n", status); @@ -164,7 +164,7 @@ static int nfs3_proc_write(struct dentry *dentry, struct nfs_fattr *fattr, struct rpc_cred *cred, int flags, - unsigned long offset, unsigned int count, + loff_t offset, unsigned int count, void *buffer, struct nfs_writeverf *verf) { struct nfs_writeargs arg = { NFS_FH(dentry), offset, count, @@ -175,7 +175,7 @@ struct rpc_message msg = { NFS3PROC_WRITE, &arg, &res, cred }; int status, rpcflags = 0; - dprintk("NFS call write %d @ %ld\n", count, offset); + dprintk("NFS call write %d @ %Ld\n", count, (long long) offset); fattr->valid = 0; if (flags & NFS_RW_SWAP) rpcflags |= NFS_RPC_SWAPFLAGS; diff -urN lfs-ref/fs/nfs/proc.c lfs-1/fs/nfs/proc.c --- lfs-ref/fs/nfs/proc.c Sun Sep 17 01:20:43 2000 +++ lfs-1/fs/nfs/proc.c Sun Sep 17 16:35:08 2000 @@ -138,7 +138,7 @@ static int nfs_proc_read(struct dentry *dentry, fattr *fattr, struct rpc_cred *cred, int flags, - unsigned long offset, unsigned int count, + loff_t offset, unsigned int count, void *buffer, int *eofp) { struct nfs_readargs arg = { NFS_FH(dentry), offset, count, 1, @@ -148,7 +148,7 @@ struct rpc_message msg = { NFSPROC_READ, &arg, &res, cred }; int status; - dprintk("NFS call read %d @ %ld\n", count, offset); + dprintk("NFS call read %d @ %Ld\n", count, (long long) offset); fattr->valid = 0; status = rpc_call_sync(NFS_CLIENT(dentry->d_inode), &msg, flags); @@ -160,7 +160,7 @@ static int nfs_proc_write(struct dentry *dentry, fattr *fattr, struct rpc_cred *cred, int how, - unsigned long offset, unsigned int count, + loff_t offset, unsigned int count, void *buffer, struct nfs_writeverf *verf) { struct nfs_writeargs arg = {NFS_FH(dentry), offset, count, @@ -171,7 +171,7 @@ struct rpc_message msg = { NFSPROC_WRITE, &arg, &res, cred }; int status, flags = 0; - dprintk("NFS call write %d @ %ld\n", count, offset); + dprintk("NFS call write %d @ %Ld\n", count, (long long) offset); fattr->valid = 0; if (how & NFS_RW_SWAP) flags |= NFS_RPC_SWAPFLAGS; diff -urN lfs-ref/fs/nfs/read.c lfs-1/fs/nfs/read.c --- lfs-ref/fs/nfs/read.c Sun Sep 17 01:20:43 2000 +++ lfs-1/fs/nfs/read.c Sun Sep 17 17:49:40 2000 @@ -93,7 +93,7 @@ struct inode *inode = dentry->d_inode; struct rpc_cred *cred = nfs_file_cred(file); struct nfs_fattr fattr; - unsigned long offset = nfs_page_offset(page); + loff_t offset = nfs_page_offset(page); char *buffer = (char *) page_address(page); int rsize = NFS_SERVER(inode)->rsize; int result, refresh = 0; @@ -110,10 +110,10 @@ if ((chunk = rsize) > count) chunk = count; - dprintk("NFS: nfs_proc_read(%s, (%s/%s), %ld, %d, %p)\n", + dprintk("NFS: nfs_proc_read(%s, (%s/%s), %Ld, %d, %p)\n", NFS_SERVER(inode)->hostname, dentry->d_parent->d_name.name, dentry->d_name.name, - offset, chunk, buffer); + (long long) offset, chunk, buffer); result = NFS_CALL(read, inode, (dentry, &fattr, cred, flags, offset, chunk, buffer, &eof)); @@ -440,11 +440,11 @@ set_bit(PG_error, &page->flags); nfs_unlock_page(page); - dprintk("NFS: read (%s/%s %d@%ld)\n", + dprintk("NFS: read (%s/%s %d@%Ld)\n", req->wb_dentry->d_parent->d_name.name, req->wb_dentry->d_name.name, req->wb_bytes, - (nfs_page_offset(page) + req->wb_offset)); + (long long)(nfs_page_offset(page) + req->wb_offset)); nfs_unlock_request(req); nfs_release_request(req); } @@ -473,8 +473,8 @@ while (!nfs_lock_page(page)) wait_on_page(page); - dprintk("NFS: nfs_readpage (%p %d@%ld)\n", - page, rsize, page->offset); + dprintk("NFS: nfs_readpage (%p %d@%Ld)\n", + page, rsize, (long long) nfs_page_offset(page)); /* * Try to flush any pending writes to the file diff -urN lfs-ref/fs/nfs/write.c lfs-1/fs/nfs/write.c --- lfs-ref/fs/nfs/write.c Sun Sep 17 01:20:44 2000 +++ lfs-1/fs/nfs/write.c Sun Sep 17 17:17:31 2000 @@ -144,7 +144,7 @@ */ static int nfs_writepage_sync(struct file *file, struct page *page, - unsigned long offset, unsigned int count) + unsigned int offset, unsigned int count) { struct dentry *dentry = file->f_dentry; struct inode *inode = dentry->d_inode; @@ -154,13 +154,14 @@ u8 *buffer; struct nfs_fattr fattr; struct nfs_writeverf verifier; + loff_t base; - dprintk("NFS: nfs_writepage_sync(%s/%s %d@%ld)\n", + dprintk("NFS: nfs_writepage_sync(%s/%s %d@%Ld)\n", dentry->d_parent->d_name.name, dentry->d_name.name, - count, nfs_page_offset(page) + offset); + count, (long long) (nfs_page_offset(page) + offset)); buffer = (u8 *) page_address(page) + offset; - offset += nfs_page_offset(page); + base = nfs_page_offset(page) + offset; flags = ((IS_SWAPFILE(inode)) ? NFS_RW_SWAP : 0) | NFS_RW_SYNC; @@ -169,7 +170,7 @@ wsize = count; result = NFS_PROTO(inode)->write(dentry, &fattr, cred, flags, - offset, wsize, buffer, + base, wsize, buffer, &verifier); nfs_write_attributes(inode, &fattr); @@ -183,15 +184,15 @@ wsize, result); refresh = 1; buffer += wsize; - offset += wsize; + base += wsize; written += wsize; count -= wsize; /* * If we've extended the file, update the inode * now so we don't invalidate the cache. */ - if (offset > inode->i_size) - inode->i_size = offset; + if (base > inode->i_size) + inode->i_size = base; } while (count); io_error: @@ -208,9 +209,9 @@ struct inode *inode = file->f_dentry->d_inode; unsigned offset = PAGE_CACHE_SIZE; - if (page->offset >= inode->i_size) + if (nfs_page_offset(page) >= inode->i_size) return -EIO; - if (page->offset + offset > inode->i_size) + if (nfs_page_offset(page) + offset > inode->i_size) offset = inode->i_size & (PAGE_CACHE_SIZE-1); return nfs_writepage_sync(file, page, 0, offset); } @@ -223,7 +224,7 @@ region_locked(struct inode *inode, struct nfs_page *req) { struct file_lock *fl; - unsigned long rqstart, rqend; + loff_t rqstart, rqend; /* Don't optimize writes if we don't use NLM */ if (NFS_SERVER(inode)->flags & NFS_MOUNT_NONLM) @@ -882,9 +883,9 @@ struct nfs_page *req; int status = 0; - dprintk("NFS: nfs_updatepage(%s/%s %d@%ld, sync=%d)\n", + dprintk("NFS: nfs_updatepage(%s/%s %d@%Ld, sync=%d)\n", dentry->d_parent->d_name.name, dentry->d_name.name, - count, nfs_page_offset(page)+offset, sync); + count, (long long) (nfs_page_offset(page)+offset), sync); /* * If wsize is smaller than page size, update and write @@ -934,8 +935,8 @@ } nfs_release_request(req); done: - dprintk("NFS: nfs_updatepage returns %d (isize %ld)\n", - status, inode->i_size); + dprintk("NFS: nfs_updatepage returns %d (isize %Ld)\n", + status, (long long) inode->i_size); if (status < 0) clear_bit(PG_uptodate, &page->flags); return status; @@ -1183,13 +1184,13 @@ struct nfs_page *req; struct dentry *dentry; struct inode *inode; - unsigned long start, end, len; + loff_t start, end, len; /* Set up the RPC argument and reply structs * NB: take care not to mess about with data->commit et al. */ end = 0; - start = ~0; + start = ~0ULL; req = nfs_list_entry(head->next); dentry = req->wb_dentry; data->dentry = dentry; @@ -1197,7 +1198,7 @@ inode = dentry->d_inode; while (!list_empty(head)) { struct nfs_page *req; - unsigned long rqstart, rqend; + loff_t rqstart, rqend; req = nfs_list_entry(head->next); nfs_list_remove_request(req); nfs_list_add_request(req, &data->pages); @@ -1211,7 +1212,7 @@ data->args.fh = NFS_FH(dentry); data->args.offset = start; len = end - start; - if (end >= inode->i_size || len > (~((u32)0) >> 1)) + if (end >= inode->i_size || len < 0 || len > (~((u32)0) >> 1)) len = 0; data->res.count = data->args.count = (u32)len; data->res.fattr = &data->fattr; @@ -1290,11 +1291,11 @@ req = nfs_list_entry(data->pages.next); nfs_list_remove_request(req); - dprintk("NFS: commit (%s/%s %d@%ld)", + dprintk("NFS: commit (%s/%s %d@%Ld)", req->wb_dentry->d_parent->d_name.name, req->wb_dentry->d_name.name, req->wb_bytes, - nfs_page_offset(req->wb_page) + req->wb_offset); + (long long) (nfs_page_offset(req->wb_page) + req->wb_offset)); if (task->tk_status < 0) { if (req->wb_file) req->wb_file->f_error = task->tk_status; diff -urN lfs-ref/fs/nfsd/nfs3xdr.c lfs-1/fs/nfsd/nfs3xdr.c --- lfs-ref/fs/nfsd/nfs3xdr.c Mon Jan 17 16:44:42 2000 +++ lfs-1/fs/nfsd/nfs3xdr.c Sun Sep 17 04:00:47 2000 @@ -636,7 +636,7 @@ #define NFS3_ENTRYPLUS_BAGGAGE ((1 + 20 + 1 + NFS3_FHSIZE) << 2) int nfs3svc_encode_entry(struct readdir_cd *cd, const char *name, - int namlen, unsigned long offset, ino_t ino) + int namlen, unsigned long offset, ino_t ino, unsigned int d_type) { u32 *p = cd->buffer; int buflen, slen, elen; diff -urN lfs-ref/fs/nfsd/nfsfh.c lfs-1/fs/nfsd/nfsfh.c --- lfs-ref/fs/nfsd/nfsfh.c Thu May 4 13:00:40 2000 +++ lfs-1/fs/nfsd/nfsfh.c Sun Sep 17 04:00:47 2000 @@ -319,7 +319,7 @@ * the specified inode number. */ static int filldir_one(void * __buf, const char * name, int len, - off_t pos, ino_t ino) + off_t pos, ino_t ino, unsigned int d_type) { struct nfsd_getdents_callback *buf = __buf; struct nfsd_dirent *dirent = buf->dirent; diff -urN lfs-ref/fs/nfsd/nfsxdr.c lfs-1/fs/nfsd/nfsxdr.c --- lfs-ref/fs/nfsd/nfsxdr.c Mon Jan 17 16:44:42 2000 +++ lfs-1/fs/nfsd/nfsxdr.c Sun Sep 17 04:00:47 2000 @@ -424,7 +424,7 @@ int nfssvc_encode_entry(struct readdir_cd *cd, const char *name, - int namlen, off_t offset, ino_t ino) + int namlen, off_t offset, ino_t ino, unsigned int d_type) { u32 *p = cd->buffer; int buflen, slen; diff -urN lfs-ref/fs/nfsd/vfs.c lfs-1/fs/nfsd/vfs.c --- lfs-ref/fs/nfsd/vfs.c Sun Apr 2 21:07:49 2000 +++ lfs-1/fs/nfsd/vfs.c Sun Sep 17 04:00:47 2000 @@ -503,8 +503,9 @@ /* Write back readahead params */ if (ra != NULL) { dprintk("nfsd: raparms %ld %ld %ld %ld %ld\n", - file.f_reada, file.f_ramax, file.f_raend, - file.f_ralen, file.f_rawin); + (u_long)file.f_reada, (u_long)file.f_ramax, + (u_long)file.f_raend, (u_long)file.f_ralen, + (u_long)file.f_rawin); ra->p_reada = file.f_reada; ra->p_ramax = file.f_ramax; ra->p_raend = file.f_raend; diff -urN lfs-ref/fs/lockd/svclock.c lfs-1/fs/lockd/svclock.c --- lfs-ref/fs/lockd/svclock.c Sun Sep 17 01:20:43 2000 +++ lfs-1/fs/lockd/svclock.c Sun Sep 17 04:00:46 2000 @@ -94,13 +94,15 @@ struct file_lock *fl; dprintk("lockd: nlmsvc_lookup_block f=%p pd=%d %ld-%ld ty=%d\n", - file, lock->fl.fl_pid, lock->fl.fl_start, - lock->fl.fl_end, lock->fl.fl_type); + file, lock->fl.fl_pid, + (u_long)lock->fl.fl_start, (u_long)lock->fl.fl_end, + lock->fl.fl_type); for (head = &nlm_blocked; (block = *head); head = &block->b_next) { fl = &block->b_call.a_args.lock.fl; dprintk(" check f=%p pd=%d %ld-%ld ty=%d\n", - block->b_file, fl->fl_pid, fl->fl_start, - fl->fl_end, fl->fl_type); + block->b_file, fl->fl_pid, + (u_long)fl->fl_start, (u_long)fl->fl_end, + fl->fl_type); if (block->b_file == file && nlm_compare_locks(fl, &lock->fl)) { if (remove) *head = block->b_next; @@ -286,8 +288,8 @@ file->f_file.f_dentry->d_inode->i_dev, file->f_file.f_dentry->d_inode->i_ino, lock->fl.fl_type, lock->fl.fl_pid, - lock->fl.fl_start, - lock->fl.fl_end, + (u_long)lock->fl.fl_start, + (u_long)lock->fl.fl_end, wait); /* Lock file against concurrent access */ @@ -359,12 +361,13 @@ file->f_file.f_dentry->d_inode->i_dev, file->f_file.f_dentry->d_inode->i_ino, lock->fl.fl_type, - lock->fl.fl_start, - lock->fl.fl_end); + (u_long)lock->fl.fl_start, + (u_long)lock->fl.fl_end); if ((fl = posix_test_lock(&file->f_file, &lock->fl)) != NULL) { dprintk("lockd: conflicting lock(ty=%d, %ld-%ld)\n", - fl->fl_type, fl->fl_start, fl->fl_end); + fl->fl_type, + (u_long)fl->fl_start, (u_long)fl->fl_end); conflock->caller = "somehost"; /* FIXME */ conflock->oh.len = 0; /* don't return OH info */ conflock->fl = *fl; @@ -390,8 +393,8 @@ file->f_file.f_dentry->d_inode->i_dev, file->f_file.f_dentry->d_inode->i_ino, lock->fl.fl_pid, - lock->fl.fl_start, - lock->fl.fl_end); + (u_long)lock->fl.fl_start, + (u_long)lock->fl.fl_end); /* First, cancel any lock that might be there */ nlmsvc_cancel_blocked(file, lock); @@ -418,8 +421,8 @@ file->f_file.f_dentry->d_inode->i_dev, file->f_file.f_dentry->d_inode->i_ino, lock->fl.fl_pid, - lock->fl.fl_start, - lock->fl.fl_end); + (u_long)lock->fl.fl_start, + (u_long)lock->fl.fl_end); down(&file->f_sema); if ((block = nlmsvc_lookup_block(file, lock, 1)) != NULL) diff -urN lfs-ref/fs/lockd/xdr.c lfs-1/fs/lockd/xdr.c --- lfs-ref/fs/lockd/xdr.c Sun Sep 17 01:20:43 2000 +++ lfs-1/fs/lockd/xdr.c Sun Sep 17 04:54:25 2000 @@ -155,7 +155,7 @@ fl->fl_pid = ntohl(*p++); fl->fl_flags = FL_POSIX; fl->fl_type = F_RDLCK; /* as good as anything else */ - fl->fl_start = ntohl(*p++); + fl->fl_start = (u_long)ntohl(*p++); len = ntohl(*p++); if (len == 0 || (fl->fl_end = fl->fl_start + len - 1) < 0) fl->fl_end = OFFSET_MAX; @@ -180,11 +180,11 @@ return NULL; *p++ = htonl(fl->fl_pid); - *p++ = htonl(fl->fl_start); + *p++ = htonl((u_long)fl->fl_start); if (fl->fl_end == OFFSET_MAX) *p++ = xdr_zero; else - *p++ = htonl(fl->fl_end - fl->fl_start + 1); + *p++ = htonl((u_long)(fl->fl_end - fl->fl_start + 1)); return p; } @@ -209,11 +209,11 @@ if (!(p = xdr_encode_netobj(p, &resp->lock.oh))) return 0; - *p++ = htonl(fl->fl_start); + *p++ = htonl((u_long)fl->fl_start); if (fl->fl_end == OFFSET_MAX) *p++ = xdr_zero; else - *p++ = htonl(fl->fl_end - fl->fl_start + 1); + *p++ = htonl((u_long)(fl->fl_end - fl->fl_start + 1)); } return p; @@ -442,7 +442,7 @@ fl->fl_flags = FL_POSIX; fl->fl_type = excl? F_WRLCK : F_RDLCK; - fl->fl_start = ntohl(*p++); + fl->fl_start = (u_long)ntohl(*p++); len = ntohl(*p++); if (len == 0 || (fl->fl_end = fl->fl_start + len - 1) < 0) fl->fl_end = OFFSET_MAX; diff -urN lfs-ref/include/linux/nfs.h lfs-1/include/linux/nfs.h --- lfs-ref/include/linux/nfs.h Sun Sep 17 01:20:44 2000 +++ lfs-1/include/linux/nfs.h Sun Sep 17 17:20:16 2000 @@ -78,11 +78,7 @@ #define NFS_MNTPROC_MNT 1 #define NFS_MNTPROC_UMNT 3 -/* - * This is really a general kernel constant, but since nothing like - * this is defined in the kernel headers, I have to do it here. - */ -#define NFS_OFFSET_MAX LONG_MAX +#define NFS_OFFSET_MAX OFFSET_MAX /* * These data types are used exlusively by the NFS client implementation. diff -urN lfs-ref/include/linux/nfs_fs.h lfs-1/include/linux/nfs_fs.h --- lfs-ref/include/linux/nfs_fs.h Sun Sep 17 01:20:44 2000 +++ lfs-1/include/linux/nfs_fs.h Sun Sep 17 17:56:40 2000 @@ -133,15 +133,15 @@ } static inline -unsigned long nfs_page_offset(struct page *page) +loff_t nfs_page_offset(struct page *page) { - return page->offset; + return ((loff_t)page->index) << PAGE_CACHE_SHIFT; } static inline unsigned long page_index(struct page *page) { - return page->offset >> PAGE_CACHE_SHIFT; + return page->index; } /* @@ -305,6 +305,15 @@ nfs_size_to_off_t(__u64 size) { return (size > (__u64)LONG_MAX) ? (off_t)LONG_MAX : (off_t) size; +} + +static inline loff_t +nfs_size_to_loff_t(__u64 size) +{ + loff_t maxsz = (((loff_t) ULONG_MAX) << PAGE_CACHE_SHIFT) + PAGE_CACHE_SIZE - 1; + if (size > maxsz) + return maxsz; + return (loff_t) size; } static inline ino_t diff -urN lfs-ref/include/linux/nfs_xdr.h lfs-1/include/linux/nfs_xdr.h --- lfs-ref/include/linux/nfs_xdr.h Sun Sep 17 01:20:44 2000 +++ lfs-1/include/linux/nfs_xdr.h Sun Sep 17 17:38:56 2000 @@ -89,7 +89,7 @@ #define NFS_WRITE_MAXIOV 8 struct nfs_writeargs { struct nfs_fh * fh; - __u32 offset; + __u64 offset; __u32 count; enum nfs3_stable_how stable; unsigned int nriov; @@ -330,11 +330,11 @@ void *buffer, unsigned int buflen); int (*read)(struct dentry *, struct nfs_fattr *, struct rpc_cred *, - int flags, unsigned long offset, + int flags, loff_t offset, unsigned int count, void *buffer, int *eofp); int (*write)(struct dentry *, struct nfs_fattr *, struct rpc_cred *, - int flags, unsigned long offset, + int flags, loff_t offset, unsigned int count, void *buffer, struct nfs_writeverf *verfp); int (*commit)(struct dentry *, struct nfs_fattr *, diff -urN lfs-ref/include/linux/nfsd/nfsd.h lfs-1/include/linux/nfsd/nfsd.h --- lfs-ref/include/linux/nfsd/nfsd.h Wed Aug 23 16:41:12 2000 +++ lfs-1/include/linux/nfsd/nfsd.h Sun Sep 17 17:57:51 2000 @@ -54,7 +54,7 @@ char dotonly; }; typedef int (*encode_dent_fn)(struct readdir_cd *, const char *, - int, off_t, ino_t); + int, off_t, ino_t, unsigned int); typedef int (*nfsd_dirop_t)(struct inode *, struct dentry *, int, int); /* diff -urN lfs-ref/include/linux/nfsd/xdr.h lfs-1/include/linux/nfsd/xdr.h --- lfs-ref/include/linux/nfsd/xdr.h Wed Aug 23 16:41:12 2000 +++ lfs-1/include/linux/nfsd/xdr.h Sun Sep 17 17:57:51 2000 @@ -152,7 +152,7 @@ int nfssvc_encode_readdirres(struct svc_rqst *, u32 *, struct nfsd_readdirres *); int nfssvc_encode_entry(struct readdir_cd *, const char *name, - int namlen, off_t offset, ino_t ino); + int namlen, off_t offset, ino_t ino, unsigned int d_type); int nfssvc_release_fhandle(struct svc_rqst *, u32 *, struct nfsd_fhandle *); diff -urN lfs-ref/include/linux/nfsd/xdr3.h lfs-1/include/linux/nfsd/xdr3.h --- lfs-ref/include/linux/nfsd/xdr3.h Mon Jan 17 16:44:48 2000 +++ lfs-1/include/linux/nfsd/xdr3.h Sun Sep 17 04:00:47 2000 @@ -263,6 +263,6 @@ int nfs3svc_release_fhandle2(struct svc_rqst *, u32 *, struct nfsd3_fhandle2 *); int nfs3svc_encode_entry(struct readdir_cd *, const char *name, - int namlen, unsigned long offset, ino_t ino); + int namlen, unsigned long offset, ino_t ino, unsigned int d_type); #endif /* LINUX_NFSD_XDR3_H */