[lustre-devel] drivers/staging updated to 4.20-rc1
James Simmons
jsimmons at infradead.org
Mon Nov 5 12:59:23 PST 2018
>
> Hi,
> I've just pushed out new lustre/lustre, lustre/lustre-testing, lustre/lustre-wip
> to github.com:neilbrown/linux.git
>
> lustre is updated to 4.20-rc1 and doesn't compile because of some
> changes.
> The patch below makes it compile and (probably) work.
>
> I'd appreciate a review, especially of the iov_for_each change.
Almost. I see the following errors while testing.
[ 7111.002667] RIP: 0010:sanity+0xb2/0xb9
[ 7111.002668] Code: 63 c5 48 c7 c7 a1 7c e8 81 ff c5 48 6b c0 28 48 03 43
78 8b 48 08 48 8b 70 10 44 8b 40 0c 48 8b 10 31 c0 e8 4c 67 d6 ff c
[ 7111.002669] RSP: 0018:ffffc900072d3a60 EFLAGS: 00010246
[ 7111.002670] RAX: 000000000000002a RBX: ffff8808502126c0 RCX:
0000000000000006
[ 7111.002671] RDX: 0000000000000000 RSI: ffffffff81e770e3 RDI:
00000000ffffffff
[ 7111.002672] RBP: 0000000000000010 R08: 0000000000000004 R09:
ffffffff82683e8e
[ 7111.002673] R10: 00000000000015a9 R11: 0000000000000000 R12:
ffffea003f9523c0
[ 7111.002674] R13: ffff8808502126c0 R14: ffffea003f9523c0 R15:
0000000000001000
[ 7111.002676] FS: 00007f140a193740(0000) GS:ffff88107fd80000(0000)
knlGS:0000000000000000
[ 7111.002677] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 7111.002678] CR2: 000000000067a198 CR3: 00000008305dc001 CR4:
00000000000606e0
[ 7111.002679] Call Trace:
[ 7111.002682] copy_page_to_iter+0x245/0x2f0
[ 7111.002686] generic_file_buffered_read+0x345/0x7c0
[ 7111.002689] ? touch_atime+0x33/0xd0
[ 7111.002701] vvp_io_read_start+0x22a/0x3a0 [lustre]
[ 7111.002715] cl_io_start+0x6d/0x130 [obdclass]
[ 7111.002727] cl_io_loop+0xae/0x220 [obdclass]
[ 7111.002736] ll_file_io_generic+0x4ee/0x880 [lustre]
[ 7111.002740] ? generic_file_buffered_read+0x591/0x7c0
[ 7111.002749] ll_file_read_iter+0x13e/0x1b0 [lustre]
[ 7111.002751] generic_file_splice_read+0xe1/0x190
[ 7111.002755] splice_direct_to_actor+0xea/0x200
[ 7111.002757] ? generic_pipe_buf_nosteal+0x10/0x10
[ 7111.002759] do_splice_direct+0x87/0xd0
[ 7111.002762] do_sendfile+0x1c6/0x3c0
[ 7111.002765] __x64_sys_sendfile64+0x5c/0xb0
[ 7111.002768] do_syscall_64+0x68/0x38f
[ 7111.002770] ? do_page_fault+0x2d/0x130
[ 7111.002773] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 7111.002775] RIP: 0033:0x7f1409ca71ca
> Thanks,
> NeilBrown
>
>
> Subject: [PATCH] lustre: fixes for 4.20-rc1
>
> Most are trivial.
> iov_for_each() is broken upstream and there are no users in mainline,
> so it seem to make sense to just open-code it in the one place
> we use it.
>
> Signed-off-by: NeilBrown <neilb at suse.com>
> ---
> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h | 4 ++--
> drivers/staging/lustre/lustre/llite/vvp_io.c | 5 ++++-
> drivers/staging/lustre/lustre/mdc/mdc_request.c | 2 +-
> 3 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h
> index c882345226e1..7f81fe24c5eb 100644
> --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h
> +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h
> @@ -478,7 +478,7 @@ struct kib_rx { /* receive message */
> enum ib_wc_status rx_status; /* completion status */
> struct kib_msg *rx_msg; /* message buffer (host vaddr) */
> __u64 rx_msgaddr; /* message buffer (I/O addr) */
> - DECLARE_PCI_UNMAP_ADDR(rx_msgunmap); /* for dma_unmap_single() */
> + DEFINE_DMA_UNMAP_ADDR(rx_msgunmap); /* for dma_unmap_single() */
> struct ib_recv_wr rx_wrq; /* receive work item... */
> struct ib_sge rx_sge; /* ...and its memory */
> };
> @@ -501,7 +501,7 @@ struct kib_tx { /* transmit message */
> struct lnet_msg *tx_lntmsg[2]; /* lnet msgs to finalize on completion */
> struct kib_msg *tx_msg; /* message buffer (host vaddr) */
> __u64 tx_msgaddr; /* message buffer (I/O addr) */
> - DECLARE_PCI_UNMAP_ADDR(tx_msgunmap); /* for dma_unmap_single() */
> + DEFINE_DMA_UNMAP_ADDR(tx_msgunmap); /* for dma_unmap_single() */
> /** sge for tx_msgaddr */
> struct ib_sge tx_msgsge;
> int tx_nwrq; /* # send work items */
> diff --git a/drivers/staging/lustre/lustre/llite/vvp_io.c b/drivers/staging/lustre/lustre/llite/vvp_io.c
> index 70d23874b674..524f3f4feec8 100644
> --- a/drivers/staging/lustre/lustre/llite/vvp_io.c
> +++ b/drivers/staging/lustre/lustre/llite/vvp_io.c
> @@ -388,7 +388,10 @@ static int vvp_mmap_locks(const struct lu_env *env,
> if (!mm)
> return 0;
>
> - iov_for_each(iov, i, *vio->vui_iter) {
> + for (i = *vio->vui_iter;
> + i.count;
> + iov_iter_advance(&i, iov.iov_len)) {
> + iov = iov_iter_iovec(&i);
> addr = (unsigned long)iov.iov_base;
> count = iov.iov_len;
> if (count == 0)
> diff --git a/drivers/staging/lustre/lustre/mdc/mdc_request.c b/drivers/staging/lustre/lustre/mdc/mdc_request.c
> index 8f8e3d220dc8..2242204f3c9e 100644
> --- a/drivers/staging/lustre/lustre/mdc/mdc_request.c
> +++ b/drivers/staging/lustre/lustre/mdc/mdc_request.c
> @@ -993,7 +993,7 @@ static struct page *mdc_page_locate(struct address_space *mapping, __u64 *hash,
> xa_lock_irq(&mapping->i_pages);
> found = radix_tree_gang_lookup(&mapping->i_pages,
> (void **)&page, offset, 1);
> - if (found > 0 && !radix_tree_exceptional_entry(page)) {
> + if (found > 0 && !xa_is_value(page)) {
> struct lu_dirpage *dp;
>
> get_page(page);
> --
> 2.14.0.rc0.dirty
>
>
More information about the lustre-devel
mailing list