From: Toshi Kani <toshi.kani@hpe.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: Jan Kara <jack@suse.cz>, Christoph Hellwig <hch@infradead.org>,
linux-block@vger.kernel.org,
"linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>,
david <david@fromorbit.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
micah.parrish@hpe.com, Jens Axboe <axboe@fb.com>,
Andreas Dilger <adilger.kernel@dilger.ca>,
Al Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Theodore Ts'o <tytso@mit.edu>
Subject: Re: [PATCH v4 6/6] block: Update blkdev_dax_capable() for consistency
Date: Tue, 17 May 2016 17:02:50 -0600 [thread overview]
Message-ID: <1463526170.27137.202.camel@hpe.com> (raw)
In-Reply-To: <CAPcyv4im1zfO9PtnBMm9OArwYz9h8DkP-9CC+73GDOUx6XNDRQ@mail.gmail.com>
On Tue, 2016-05-17 at 15:07 -0700, Dan Williams wrote:
> On Tue, May 10, 2016 at 9:23 AM, Toshi Kani <toshi.kani@hpe.com> wrote:
> >
> > blkdev_dax_capable() is similar to bdev_dax_supported(), but needs
> > to remain as a separate interface for checking dax capability of
> > a raw block device.
> >
> > Rename and relocate blkdev_dax_capable() to keep them maintained
> > consistently, and call bdev_direct_access() for the dax capability
> > check.
> >
> > There is no change in the behavior.
> >
:
> > +/**
> > + * bdev_dax_capable() - Return if the raw device is capable for dax
> > + * @bdev: The device for raw block device access
> > + */
> > +bool bdev_dax_capable(struct block_device *bdev)
> > +{
> > + struct gendisk *disk = bdev->bd_disk;
> > + struct blk_dax_ctl dax = {
> > + .size = PAGE_SIZE,
> > + };
> > +
> > + if (!IS_ENABLED(CONFIG_FS_DAX))
> > + return false;
> > +
> > + dax.sector = 0;
> > + if (bdev_direct_access(bdev, &dax) < 0)
> > + return false;
> > +
> > + dax.sector = bdev->bd_part->nr_sects - (PAGE_SIZE / 512);
> > + if (bdev_direct_access(bdev, &dax) < 0)
> > + return false;
>
> So I just noticed that this new implementation of bdev_dax_capable()
> prevents us from enabling DAX in the presence of errors, which was the
> goal of Vishal's pending patches for 4.7.
>
> I like the goal of centralizing checks, but this collides the base DAX
> capability with the ability to perform an actual accesses at a given
> address.
>
> All the immediate solutions that come to mind right now are pretty
> ugly, like an ignore errors flag...
>
> Hmm, what about explicitly returning -EBADBLOCK and updating size to
> return the offset of the error? That might be useful information to
> have in general...
The function only checks a PAGE_SIZE range at the start and the end, but I
agree that it can handle -EBADBLOCK (or -EIO) from bdev_direct_access() as
an error but the device is DAX-capable. bdev_dax_supported() may need the
same change as well (although I wonder how a bad block at the start is
handled). Shall I send you a patch for this change? (BTW, do we have a
patch that defines EBADBLOCK already?) I think the error offset would be
useful, but that change can be made when we use it.
Thanks,
-Toshi
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
next prev parent reply other threads:[~2016-05-17 23:12 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-10 16:23 [PATCH v4 0/6] Add alignment check for DAX mount Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` [PATCH v4 1/6] block: Add vfs_msg() interface Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` [PATCH v4 2/6] block: Add bdev_dax_supported() for dax mount checks Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` [PATCH v4 3/6] ext4: Add alignment check for DAX mount Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` [PATCH v4 4/6] ext2: " Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` [PATCH v4 5/6] xfs: " Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` [PATCH v4 6/6] block: Update blkdev_dax_capable() for consistency Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 16:23 ` Toshi Kani
2016-05-10 19:49 ` Dan Williams
2016-05-10 19:49 ` Dan Williams
2016-05-10 19:49 ` Dan Williams
2016-05-10 21:36 ` Toshi Kani
2016-05-10 21:36 ` Toshi Kani
2016-05-10 21:36 ` Toshi Kani
2016-05-11 8:05 ` Jan Kara
2016-05-11 8:05 ` Jan Kara
2016-05-11 8:05 ` Jan Kara
2016-05-11 14:25 ` Toshi Kani
2016-05-11 14:25 ` Toshi Kani
2016-05-11 14:25 ` Toshi Kani
2016-05-11 15:26 ` Jan Kara
2016-05-11 15:26 ` Jan Kara
2016-05-11 15:26 ` Jan Kara
2016-05-17 22:07 ` Dan Williams
2016-05-17 22:07 ` Dan Williams
2016-05-17 22:07 ` Dan Williams
2016-05-17 23:02 ` Toshi Kani [this message]
2016-05-18 7:54 ` [PATCH] remove unused blkdev_dax_capable() function Arnd Bergmann
2016-05-18 7:54 ` Arnd Bergmann
2016-05-18 14:01 ` Toshi Kani
2016-05-18 14:01 ` Toshi Kani
2016-05-18 14:01 ` Toshi Kani
2016-05-18 19:30 ` Vishal Verma
2016-05-18 19:30 ` Vishal Verma
2016-05-18 19:30 ` Vishal Verma
2016-05-20 11:32 ` kbuild test robot
2016-05-20 11:32 ` kbuild test robot
2016-05-20 11:32 ` kbuild test robot
2016-05-20 15:48 ` Kani, Toshimitsu
2016-05-20 15:48 ` Kani, Toshimitsu
2016-05-20 15:48 ` Kani, Toshimitsu
2016-05-20 15:48 ` Kani, Toshimitsu
2016-05-11 13:20 ` [PATCH v4 0/6] Add alignment check for DAX mount Carlos Maiolino
2016-05-19 23:37 ` Eric Sandeen
2016-05-19 23:37 ` Eric Sandeen
2016-05-19 23:37 ` Eric Sandeen
2016-05-20 14:50 ` Kani, Toshimitsu
2016-05-20 14:50 ` Kani, Toshimitsu
2016-05-20 14:50 ` Kani, Toshimitsu
2016-05-20 14:50 ` Kani, Toshimitsu
2016-05-20 17:34 ` Verma, Vishal L
2016-05-20 17:34 ` Verma, Vishal L
2016-05-20 17:34 ` Verma, Vishal L
2016-05-20 17:34 ` Verma, Vishal L
2016-05-20 17:49 ` Kani, Toshimitsu
2016-05-20 17:49 ` Kani, Toshimitsu
2016-05-20 17:49 ` Kani, Toshimitsu
2016-05-20 17:49 ` Kani, Toshimitsu
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=1463526170.27137.202.camel@hpe.com \
--to=toshi.kani@hpe.com \
--cc=adilger.kernel@dilger.ca \
--cc=axboe@fb.com \
--cc=dan.j.williams@intel.com \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvdimm@lists.01.org \
--cc=micah.parrish@hpe.com \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/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.