Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
feda01e4
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
feda01e4
编写于
7月 16, 2012
作者:
P
Paolo Bonzini
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
virtio-scsi: report parameter change events
Signed-off-by:
N
Paolo Bonzini
<
pbonzini@redhat.com
>
上级
2baa1beb
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
16 addition
and
0 deletion
+16
-0
hw/virtio-scsi.c
hw/virtio-scsi.c
+16
-0
未找到文件。
hw/virtio-scsi.c
浏览文件 @
feda01e4
...
@@ -27,6 +27,7 @@
...
@@ -27,6 +27,7 @@
/* Feature Bits */
/* Feature Bits */
#define VIRTIO_SCSI_F_INOUT 0
#define VIRTIO_SCSI_F_INOUT 0
#define VIRTIO_SCSI_F_HOTPLUG 1
#define VIRTIO_SCSI_F_HOTPLUG 1
#define VIRTIO_SCSI_F_CHANGE 2
/* Response codes */
/* Response codes */
#define VIRTIO_SCSI_S_OK 0
#define VIRTIO_SCSI_S_OK 0
...
@@ -63,6 +64,7 @@
...
@@ -63,6 +64,7 @@
#define VIRTIO_SCSI_T_NO_EVENT 0
#define VIRTIO_SCSI_T_NO_EVENT 0
#define VIRTIO_SCSI_T_TRANSPORT_RESET 1
#define VIRTIO_SCSI_T_TRANSPORT_RESET 1
#define VIRTIO_SCSI_T_ASYNC_NOTIFY 2
#define VIRTIO_SCSI_T_ASYNC_NOTIFY 2
#define VIRTIO_SCSI_T_PARAM_CHANGE 3
/* Reasons for transport reset event */
/* Reasons for transport reset event */
#define VIRTIO_SCSI_EVT_RESET_HARD 0
#define VIRTIO_SCSI_EVT_RESET_HARD 0
...
@@ -554,6 +556,7 @@ static uint32_t virtio_scsi_get_features(VirtIODevice *vdev,
...
@@ -554,6 +556,7 @@ static uint32_t virtio_scsi_get_features(VirtIODevice *vdev,
uint32_t
requested_features
)
uint32_t
requested_features
)
{
{
requested_features
|=
(
1UL
<<
VIRTIO_SCSI_F_HOTPLUG
);
requested_features
|=
(
1UL
<<
VIRTIO_SCSI_F_HOTPLUG
);
requested_features
|=
(
1UL
<<
VIRTIO_SCSI_F_CHANGE
);
return
requested_features
;
return
requested_features
;
}
}
...
@@ -641,6 +644,18 @@ static void virtio_scsi_handle_event(VirtIODevice *vdev, VirtQueue *vq)
...
@@ -641,6 +644,18 @@ static void virtio_scsi_handle_event(VirtIODevice *vdev, VirtQueue *vq)
}
}
}
}
static
void
virtio_scsi_change
(
SCSIBus
*
bus
,
SCSIDevice
*
dev
,
SCSISense
sense
)
{
VirtIOSCSI
*
s
=
container_of
(
bus
,
VirtIOSCSI
,
bus
);
if
(((
s
->
vdev
.
guest_features
>>
VIRTIO_SCSI_F_CHANGE
)
&
1
)
&&
(
s
->
vdev
.
status
&
VIRTIO_CONFIG_S_DRIVER_OK
)
&&
dev
->
type
!=
TYPE_ROM
)
{
virtio_scsi_push_event
(
s
,
dev
,
VIRTIO_SCSI_T_PARAM_CHANGE
,
sense
.
asc
|
(
sense
.
ascq
<<
8
));
}
}
static
void
virtio_scsi_hotplug
(
SCSIBus
*
bus
,
SCSIDevice
*
dev
)
static
void
virtio_scsi_hotplug
(
SCSIBus
*
bus
,
SCSIDevice
*
dev
)
{
{
VirtIOSCSI
*
s
=
container_of
(
bus
,
VirtIOSCSI
,
bus
);
VirtIOSCSI
*
s
=
container_of
(
bus
,
VirtIOSCSI
,
bus
);
...
@@ -670,6 +685,7 @@ static struct SCSIBusInfo virtio_scsi_scsi_info = {
...
@@ -670,6 +685,7 @@ static struct SCSIBusInfo virtio_scsi_scsi_info = {
.
complete
=
virtio_scsi_command_complete
,
.
complete
=
virtio_scsi_command_complete
,
.
cancel
=
virtio_scsi_request_cancelled
,
.
cancel
=
virtio_scsi_request_cancelled
,
.
change
=
virtio_scsi_change
,
.
hotplug
=
virtio_scsi_hotplug
,
.
hotplug
=
virtio_scsi_hotplug
,
.
hot_unplug
=
virtio_scsi_hot_unplug
,
.
hot_unplug
=
virtio_scsi_hot_unplug
,
.
get_sg_list
=
virtio_scsi_get_sg_list
,
.
get_sg_list
=
virtio_scsi_get_sg_list
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录