tcmu: Fix flushing cmd entry dcache page
When feeding the tcmu's cmd ring, we need to flush the dcache page for the cmd entry to make sure these kernel stores are visible to user space mappings of that page. For the none PAD cmd entry, this will be flushed at the end of the tcmu_queue_cmd_ring(). Signed-off-by: Xiubo Li <lixiubo@cmss.chinamobile.com> Reviewed-by: Mike Christie <mchristi@redhat.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
9260695d65
commit
9d62bc0e6d
1 changed files with 2 additions and 2 deletions
|
@ -825,21 +825,21 @@ tcmu_queue_cmd_ring(struct tcmu_cmd *tcmu_cmd)
|
|||
size_t pad_size = head_to_end(cmd_head, udev->cmdr_size);
|
||||
|
||||
entry = (void *) mb + CMDR_OFF + cmd_head;
|
||||
tcmu_flush_dcache_range(entry, sizeof(*entry));
|
||||
tcmu_hdr_set_op(&entry->hdr.len_op, TCMU_OP_PAD);
|
||||
tcmu_hdr_set_len(&entry->hdr.len_op, pad_size);
|
||||
entry->hdr.cmd_id = 0; /* not used for PAD */
|
||||
entry->hdr.kflags = 0;
|
||||
entry->hdr.uflags = 0;
|
||||
tcmu_flush_dcache_range(entry, sizeof(*entry));
|
||||
|
||||
UPDATE_HEAD(mb->cmd_head, pad_size, udev->cmdr_size);
|
||||
tcmu_flush_dcache_range(mb, sizeof(*mb));
|
||||
|
||||
cmd_head = mb->cmd_head % udev->cmdr_size; /* UAM */
|
||||
WARN_ON(cmd_head != 0);
|
||||
}
|
||||
|
||||
entry = (void *) mb + CMDR_OFF + cmd_head;
|
||||
tcmu_flush_dcache_range(entry, sizeof(*entry));
|
||||
tcmu_hdr_set_op(&entry->hdr.len_op, TCMU_OP_CMD);
|
||||
entry->hdr.cmd_id = tcmu_cmd->cmd_id;
|
||||
entry->hdr.kflags = 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue