Loading fs/xfs/linux-2.6/xfs_file.c +22 −12 Original line number Diff line number Diff line Loading @@ -145,17 +145,22 @@ __linvfs_readv( { struct inode *inode = file->f_mapping->host; vnode_t *vp = LINVFS_GET_VP(inode); struct kiocb kiocb; struct kiocb *kiocb; ssize_t rval; init_sync_kiocb(&kiocb, file); kiocb.ki_pos = *ppos; kiocb = kmalloc(sizeof(*kiocb), GFP_KERNEL); if (unlikely(!kiocb)) return -ENOMEM; init_sync_kiocb(kiocb, file); kiocb->ki_pos = *ppos; if (unlikely(file->f_flags & O_DIRECT)) ioflags |= IO_ISDIRECT; VOP_READ(vp, &kiocb, iov, nr_segs, &kiocb.ki_pos, ioflags, NULL, rval); VOP_READ(vp, kiocb, iov, nr_segs, &kiocb->ki_pos, ioflags, NULL, rval); *ppos = kiocb.ki_pos; *ppos = kiocb->ki_pos; kfree(kiocb); return rval; } Loading Loading @@ -190,17 +195,22 @@ __linvfs_writev( { struct inode *inode = file->f_mapping->host; vnode_t *vp = LINVFS_GET_VP(inode); struct kiocb kiocb; struct kiocb *kiocb; ssize_t rval; init_sync_kiocb(&kiocb, file); kiocb.ki_pos = *ppos; kiocb = kmalloc(sizeof(*kiocb), GFP_KERNEL); if (unlikely(!kiocb)) return -ENOMEM; init_sync_kiocb(kiocb, file); kiocb->ki_pos = *ppos; if (unlikely(file->f_flags & O_DIRECT)) ioflags |= IO_ISDIRECT; VOP_WRITE(vp, &kiocb, iov, nr_segs, &kiocb.ki_pos, ioflags, NULL, rval); VOP_WRITE(vp, kiocb, iov, nr_segs, &kiocb->ki_pos, ioflags, NULL, rval); *ppos = kiocb.ki_pos; *ppos = kiocb->ki_pos; kfree(kiocb); return rval; } Loading Loading
fs/xfs/linux-2.6/xfs_file.c +22 −12 Original line number Diff line number Diff line Loading @@ -145,17 +145,22 @@ __linvfs_readv( { struct inode *inode = file->f_mapping->host; vnode_t *vp = LINVFS_GET_VP(inode); struct kiocb kiocb; struct kiocb *kiocb; ssize_t rval; init_sync_kiocb(&kiocb, file); kiocb.ki_pos = *ppos; kiocb = kmalloc(sizeof(*kiocb), GFP_KERNEL); if (unlikely(!kiocb)) return -ENOMEM; init_sync_kiocb(kiocb, file); kiocb->ki_pos = *ppos; if (unlikely(file->f_flags & O_DIRECT)) ioflags |= IO_ISDIRECT; VOP_READ(vp, &kiocb, iov, nr_segs, &kiocb.ki_pos, ioflags, NULL, rval); VOP_READ(vp, kiocb, iov, nr_segs, &kiocb->ki_pos, ioflags, NULL, rval); *ppos = kiocb.ki_pos; *ppos = kiocb->ki_pos; kfree(kiocb); return rval; } Loading Loading @@ -190,17 +195,22 @@ __linvfs_writev( { struct inode *inode = file->f_mapping->host; vnode_t *vp = LINVFS_GET_VP(inode); struct kiocb kiocb; struct kiocb *kiocb; ssize_t rval; init_sync_kiocb(&kiocb, file); kiocb.ki_pos = *ppos; kiocb = kmalloc(sizeof(*kiocb), GFP_KERNEL); if (unlikely(!kiocb)) return -ENOMEM; init_sync_kiocb(kiocb, file); kiocb->ki_pos = *ppos; if (unlikely(file->f_flags & O_DIRECT)) ioflags |= IO_ISDIRECT; VOP_WRITE(vp, &kiocb, iov, nr_segs, &kiocb.ki_pos, ioflags, NULL, rval); VOP_WRITE(vp, kiocb, iov, nr_segs, &kiocb->ki_pos, ioflags, NULL, rval); *ppos = kiocb.ki_pos; *ppos = kiocb->ki_pos; kfree(kiocb); return rval; } Loading