From: Mike Snitzer <snitzer@redhat.com>
To: Bharata B Rao <bharata.rao@gmail.com>
Cc: dm-devel@redhat.com
Subject: [PATCH] dm table: fix logic bug in dm_table_supports_write_same [was: Re: BLKZEROOUT on dm devices]
Date: Tue, 30 Apr 2013 12:32:14 -0400 [thread overview]
Message-ID: <20130430163214.GA22690@redhat.com> (raw)
In-Reply-To: <CAGZKiBq0igXmm-8vX++VD6P6HyHM=RS8L=_=SGOQOQ7prhyGBg@mail.gmail.com>
On Tue, Apr 30 2013 at 12:07am -0400,
Bharata B Rao <bharata.rao@gmail.com> wrote:
> Hi,
>
> Is BLKZEROOUT ioctl supposed to work on dm devices ? When I try this
> ioctl on an LV that sits on a WRITE SAME capable SCSI device, I see
> that conventional zeroing is done since the WRITE SAME support isn't
> advertised by the dm device.
>
> # lsblk
> NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
> sda 8:0 0 50G 0 disk
> └─mpathb (dm-12) 252:12 0 50G 0 mpath
> └─ws_vg-lvol0 (dm-11) 252:11 0 1G 0 lvm
> sde 8:64 0 50G 0 disk
> └─mpathb (dm-12) 252:12 0 50G 0 mpath
> └─ws_vg-lvol0 (dm-11) 252:11 0 1G 0 lvm
>
> # cat /sys/block/sda/queue/write_same_max_bytes
> 268435456
> # cat /sys/block/dm-12/queue/write_same_max_bytes
> 0
> # cat /sys/block/dm-11/queue/write_same_max_bytes
> 0
>
> [root@llmvm02 ~]# cat /sys/dev/block/8\:0/queue/write_same_max_bytes
> 268435456
> [root@llmvm02 ~]# cat /sys/dev/block/252\:12/queue/write_same_max_bytes
> 0
> [root@llmvm02 ~]# cat /sys/dev/block/252\:11/queue/write_same_max_bytes
> 0
Sure enough I see the same limits stacking problem you reported:
# modprobe scsi_debug dev_size_mb=100 lbpws=1
...
sd 5:0:0:0: [sdh] Attached SCSI disk
# cat /sys/block/sdh/queue/write_same_max_bytes
33553920
(which reflects scsi_debug's write_same_length default of 0xffff * 512b)
# echo "0 `blockdev --getsz /dev/sdh` linear /dev/sdh 0" | dmsetup create test
# readlink /dev/mapper/test
../dm-4
# cat /sys/block/dm-4/queue/write_same_max_bytes
0
> From commit d54eaa5a0fde0a202e4e91f200f818edcef15bee, I gather that
> WRITE SAME is advertised by a dm device if all of its target and
> underlying devices support WRITE SAME. Also as per
> 4f0b70b0479101522b8645ddc1f5ee7137821db3, WRITE SAME is supported for
> linear dm devices. Both of these seem to be true in my case, but still
> BLKZEROOUT ioctl resorts to conventional zeroing. What am I missing
> here ?
The first patch of my WRITE SAME patchset that I posted to dm-devel was
tweaked before going upstream:
http://www.redhat.com/archives/dm-devel/2012-December/msg00064.html
Due to iterate_devices disposition to short-circuit if the test func()
returns true, it looks like Alasdair correctly changed
s/device_write_same_capable/device_not_write_same_capable/ but forgot to
invert the logic of the calling iterate_devices in
dm_table_supports_write_same().
Anyway, this patch fixes things for me:
From: Mike Snitzer <snitzer@redhat.com>
Date: Tue, 30 Apr 2013 12:24:58 -0400
Subject: [PATCH] dm table: fix logic bug in dm_table_supports_write_same
If device_not_write_same_capable() returns true then the iterate_devices
loop in dm_table_supports_write_same() should return false.
Reported-by: Bharata B Rao <bharata.rao@gmail.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org # v3.8+
---
drivers/md/dm-table.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index 3fe797f..d801682 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -1445,7 +1445,7 @@ static bool dm_table_supports_write_same(struct dm_table *t)
return false;
if (!ti->type->iterate_devices ||
- !ti->type->iterate_devices(ti, device_not_write_same_capable, NULL))
+ ti->type->iterate_devices(ti, device_not_write_same_capable, NULL))
return false;
}
--
1.7.1
--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
next prev parent reply other threads:[~2013-04-30 16:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-30 4:07 BLKZEROOUT on dm devices Bharata B Rao
2013-04-30 16:32 ` Mike Snitzer [this message]
2013-05-01 6:58 ` [PATCH] dm table: fix logic bug in dm_table_supports_write_same [was: Re: BLKZEROOUT on dm devices] Bharata B Rao
2013-05-01 13:29 ` [PATCH] dm mpath: enable WRITE SAME support Mike Snitzer
2013-05-01 14:22 ` Bharata B Rao
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=20130430163214.GA22690@redhat.com \
--to=snitzer@redhat.com \
--cc=bharata.rao@gmail.com \
--cc=dm-devel@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.