From: Paolo Bonzini <pbonzini@redhat.com>
To: Fam Zheng <famz@redhat.com>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Peter Lieven <pl@kamp.de>,
Stefan Hajnoczi <stefanha@redhat.com>,
Ronnie Sahlberg <ronniesahlberg@gmail.com>
Subject: Re: [Qemu-devel] [PATCH] iscsi: Handle write protected case in reopen
Date: Fri, 27 Feb 2015 15:20:16 +0100 [thread overview]
Message-ID: <54F07D20.6090800@redhat.com> (raw)
In-Reply-To: <1424839208-5195-1-git-send-email-famz@redhat.com>
On 25/02/2015 05:40, Fam Zheng wrote:
> Save the write protected flag and check before reopen.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
> block/iscsi.c | 20 +++++++++++---------
> 1 file changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/block/iscsi.c b/block/iscsi.c
> index 12ddbfb..00041bf 100644
> --- a/block/iscsi.c
> +++ b/block/iscsi.c
> @@ -65,6 +65,7 @@ typedef struct IscsiLun {
> unsigned long *allocationmap;
> int cluster_sectors;
> bool use_16_for_rw;
> + bool write_proteced;
Corrected to "write_protecTed" and applied.
Paolo
> } IscsiLun;
>
> typedef struct IscsiTask {
> @@ -1268,10 +1269,6 @@ out:
> /*
> * We support iscsi url's on the form
> * iscsi://[<username>%<password>@]<host>[:<port>]/<targetname>/<lun>
> - *
> - * Note: flags are currently not used by iscsi_open. If this function
> - * is changed such that flags are used, please examine iscsi_reopen_prepare()
> - * to see if needs to be changed as well.
> */
> static int iscsi_open(BlockDriverState *bs, QDict *options, int flags,
> Error **errp)
> @@ -1385,9 +1382,10 @@ static int iscsi_open(BlockDriverState *bs, QDict *options, int flags,
> scsi_free_scsi_task(task);
> task = NULL;
>
> + iscsilun->write_proteced = iscsi_is_write_protected(iscsilun);
> /* Check the write protect flag of the LUN if we want to write */
> if (iscsilun->type == TYPE_DISK && (flags & BDRV_O_RDWR) &&
> - iscsi_is_write_protected(iscsilun)) {
> + iscsilun->write_proteced) {
> error_setg(errp, "Cannot open a write protected LUN as read-write");
> ret = -EACCES;
> goto out;
> @@ -1541,13 +1539,17 @@ static void iscsi_refresh_limits(BlockDriverState *bs, Error **errp)
> sector_limits_lun2qemu(iscsilun->bl.opt_xfer_len, iscsilun);
> }
>
> -/* Since iscsi_open() ignores bdrv_flags, there is nothing to do here in
> - * prepare. Note that this will not re-establish a connection with an iSCSI
> - * target - it is effectively a NOP. */
> +/* Note that this will not re-establish a connection with an iSCSI target - it
> + * is effectively a NOP. */
> static int iscsi_reopen_prepare(BDRVReopenState *state,
> BlockReopenQueue *queue, Error **errp)
> {
> - /* NOP */
> + IscsiLun *iscsilun = state->bs->opaque;
> +
> + if (state->flags & BDRV_O_RDWR && iscsilun->write_proteced) {
> + error_setg(errp, "Cannot open a write protected LUN as read-write");
> + return -EACCES;
> + }
> return 0;
> }
>
>
next prev parent reply other threads:[~2015-02-27 14:20 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-25 4:40 [Qemu-devel] [PATCH] iscsi: Handle write protected case in reopen Fam Zheng
2015-02-27 14:20 ` Paolo Bonzini [this message]
2015-02-27 17:41 ` Peter Lieven
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54F07D20.6090800@redhat.com \
--to=pbonzini@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=pl@kamp.de \
--cc=qemu-devel@nongnu.org \
--cc=ronniesahlberg@gmail.com \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.