| From 07b8dae38b09bcfede7e726f172e39b5ce8390d9 Mon Sep 17 00:00:00 2001 |
| From: Andy Grover <agrover@redhat.com> |
| Date: Wed, 14 May 2014 15:48:06 -0700 |
| Subject: target: Don't allow setting WC emulation if device doesn't support |
| |
| From: Andy Grover <agrover@redhat.com> |
| |
| commit 07b8dae38b09bcfede7e726f172e39b5ce8390d9 upstream. |
| |
| Just like for pSCSI, if the transport sets get_write_cache, then it is |
| not valid to enable write cache emulation for it. Return an error. |
| |
| see https://bugzilla.redhat.com/show_bug.cgi?id=1082675 |
| |
| Reviewed-by: Chris Leech <cleech@redhat.com> |
| Signed-off-by: Andy Grover <agrover@redhat.com> |
| Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/target/target_core_device.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/target/target_core_device.c |
| +++ b/drivers/target/target_core_device.c |
| @@ -796,10 +796,10 @@ int se_dev_set_emulate_write_cache(struc |
| pr_err("emulate_write_cache not supported for pSCSI\n"); |
| return -EINVAL; |
| } |
| - if (dev->transport->get_write_cache) { |
| - pr_warn("emulate_write_cache cannot be changed when underlying" |
| - " HW reports WriteCacheEnabled, ignoring request\n"); |
| - return 0; |
| + if (flag && |
| + dev->transport->get_write_cache) { |
| + pr_err("emulate_write_cache not supported for this device\n"); |
| + return -EINVAL; |
| } |
| |
| dev->dev_attrib.emulate_write_cache = flag; |