Message ID | 20170314023933.12118-2-famz@redhat.com |
---|---|
State | New |
Headers | show |
On 03/13/2017 09:39 PM, Fam Zheng wrote: > This flag clears out the "consistent read" permission that blk_new_open > requests. > > Signed-off-by: Fam Zheng <famz@redhat.com> > --- > block/block-backend.c | 2 +- > include/block/block.h | 1 + > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/block/block-backend.c b/block/block-backend.c > index 5742c09..99428ee 100644 > --- a/block/block-backend.c > +++ b/block/block-backend.c > @@ -197,7 +197,7 @@ BlockBackend *blk_new_open(const char *filename, const char *reference, > * caller of blk_new_open() doesn't make use of the permissions, but they > * shouldn't hurt either. We can still share everything here because the > * guest devices will add their own blockers if they can't share. */ > - perm = BLK_PERM_CONSISTENT_READ; > + perm = flags & BDRV_O_UNSAFE_READ ? 0 : BLK_PERM_CONSISTENT_READ; A bit awkward that we have to add an option that requests negation of a permission under the hood, but looks like it is the least-invasive way to get what we want. Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/block/block-backend.c b/block/block-backend.c index 5742c09..99428ee 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -197,7 +197,7 @@ BlockBackend *blk_new_open(const char *filename, const char *reference, * caller of blk_new_open() doesn't make use of the permissions, but they * shouldn't hurt either. We can still share everything here because the * guest devices will add their own blockers if they can't share. */ - perm = BLK_PERM_CONSISTENT_READ; + perm = flags & BDRV_O_UNSAFE_READ ? 0 : BLK_PERM_CONSISTENT_READ; if (flags & BDRV_O_RDWR) { perm |= BLK_PERM_WRITE; } diff --git a/include/block/block.h b/include/block/block.h index 5149260..d43b563 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -98,6 +98,7 @@ typedef struct HDGeometry { select an appropriate protocol driver, ignoring the format layer */ #define BDRV_O_NO_IO 0x10000 /* don't initialize for I/O */ +#define BDRV_O_UNSAFE_READ 0x20000 /* don't require consistent read */ #define BDRV_O_CACHE_MASK (BDRV_O_NOCACHE | BDRV_O_NO_FLUSH)
This flag clears out the "consistent read" permission that blk_new_open requests. Signed-off-by: Fam Zheng <famz@redhat.com> --- block/block-backend.c | 2 +- include/block/block.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-)