Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'nfs-for-3.19-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs

Pull NFS client bugfixes from Trond Myklebust:
"Highlights include:

- Stable fix for a NFSv4.1 Oops on mount
- Stable fix for an O_DIRECT deadlock condition
- Fix an issue with submounted volumes and fake duplicate inode
numbers"

* tag 'nfs-for-3.19-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
NFS: Fix use of nfs_attr_use_mounted_on_fileid()
NFSv4.1: Fix an Oops in nfs41_walk_client_list
nfs: fix dio deadlock when O_DIRECT flag is flipped

+10 -5
+6
fs/nfs/direct.c
··· 212 212 */ 213 213 ssize_t nfs_direct_IO(int rw, struct kiocb *iocb, struct iov_iter *iter, loff_t pos) 214 214 { 215 + struct inode *inode = iocb->ki_filp->f_mapping->host; 216 + 217 + /* we only support swap file calling nfs_direct_IO */ 218 + if (!IS_SWAPFILE(inode)) 219 + return 0; 220 + 215 221 #ifndef CONFIG_NFS_SWAP 216 222 dprintk("NFS: nfs_direct_IO (%pD) off/no(%Ld/%lu) EINVAL\n", 217 223 iocb->ki_filp, (long long) pos, iter->nr_segs);
+3 -2
fs/nfs/inode.c
··· 352 352 353 353 nfs_attr_check_mountpoint(sb, fattr); 354 354 355 - if (((fattr->valid & NFS_ATTR_FATTR_FILEID) == 0) && 356 - !nfs_attr_use_mounted_on_fileid(fattr)) 355 + if (nfs_attr_use_mounted_on_fileid(fattr)) 356 + fattr->fileid = fattr->mounted_on_fileid; 357 + else if ((fattr->valid & NFS_ATTR_FATTR_FILEID) == 0) 357 358 goto out_no_inode; 358 359 if ((fattr->valid & NFS_ATTR_FATTR_TYPE) == 0) 359 360 goto out_no_inode;
-2
fs/nfs/internal.h
··· 31 31 (((fattr->valid & NFS_ATTR_FATTR_MOUNTPOINT) == 0) && 32 32 ((fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL) == 0))) 33 33 return 0; 34 - 35 - fattr->fileid = fattr->mounted_on_fileid; 36 34 return 1; 37 35 } 38 36
+1 -1
fs/nfs/nfs4client.c
··· 639 639 prev = pos; 640 640 641 641 status = nfs_wait_client_init_complete(pos); 642 - if (status == 0) { 642 + if (pos->cl_cons_state == NFS_CS_SESSION_INITING) { 643 643 nfs4_schedule_lease_recovery(pos); 644 644 status = nfs4_wait_clnt_recover(pos); 645 645 }