From: Jon Derrick <jonathan.derrick@intel.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: Jeff Moyer <jmoyer@redhat.com>,
linux-block@vger.kernel.org, Jens Axboe <axboe@fb.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Stephen Bates <stephen.bates@microsemi.com>,
Keith Busch <keith.busch@intel.com>,
linux-nvme@lists.infradead.org,
Christoph Hellwig <hch@infradead.org>
Subject: Re: [RFC 1/2] block: allow other bd i_node flags when DAX is disabled
Date: Fri, 13 May 2016 12:01:11 -0600 [thread overview]
Message-ID: <20160513180110.GA1259@localhost.localdomain> (raw)
In-Reply-To: <CAPcyv4j-ioz0FensEkBWR1QyYwSe2rjJ9N+gY+qV7+Y8KzM+Dg@mail.gmail.com>
On Fri, May 13, 2016 at 10:53:37AM -0700, Dan Williams wrote:
> On Fri, May 13, 2016 at 10:33 AM, Jeff Moyer <jmoyer@redhat.com> wrote:
> > Dan Williams <dan.j.williams@intel.com> writes:
> >
> >> On Thu, May 12, 2016 at 10:43 AM, Jon Derrick
> >> <jonathan.derrick@intel.com> wrote:
> >>> When DAX is not compiled into the kernel or the device does not support
> >>> direct-access, the block device file's inode flags are fully cleared.
> >>> This patch changes it to only clear the S_DAX flag when DAX is disabled.
> >>>
> >>> This reverts to i_flags behavior prior to
> >>> bbab37ddc20bae4709bca8745c128c4f46fe63c5
> >>>
> >>> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
> >>> ---
> >>> fs/block_dev.c | 2 +-
> >>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/fs/block_dev.c b/fs/block_dev.c
> >>> index 20a2c02..d4fa725 100644
> >>> --- a/fs/block_dev.c
> >>> +++ b/fs/block_dev.c
> >>> @@ -1208,7 +1208,7 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
> >>> if (IS_ENABLED(CONFIG_BLK_DEV_DAX) && disk->fops->direct_access)
> >>> bdev->bd_inode->i_flags = S_DAX;
> >>> else
> >>> - bdev->bd_inode->i_flags = 0;
> >>> + bdev->bd_inode->i_flags &= ~S_DAX;
> >>
> >> Setting S_DAX is atomic, but the above change makes it a non-atomic
> >> read-modify-write. Do we need exclusion / locking in this path?
> >
> > First, I don't see how you'd ever get a read-modify-write here, as S_DAX
> > surely won't ever be set if direct_access isn't supported. Second,
> > there is existing code that already does this very thing. See further
> > down in __blkdev_get:
> >
> > if (!ret) {
> > bd_set_size(bdev,(loff_t)get_capacity(disk)<<9);
> > if (!blkdev_dax_capable(bdev))
> > bdev->bd_inode->i_flags &= ~S_DAX;
> > }
> >
> > What relies on S_DAX being set or cleared atomically?
>
> So, when I wrote the above "&= ~S_DAX" I was worried about the
> non-atomic update with respect to the BLKDAXSET ioctl, but we killed
> BLKDAXSET so the worry went away. Now an inode flag setting ioctl is
> back for the S_HIPRI case. Can that collide with these other flag
> touches?
The S_DAX case is unclear to me, but the new ioctl certainly does need a i_mutex lock and to use inode_set_flags.
next prev parent reply other threads:[~2016-05-13 18:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-12 17:43 [RFC 0/2] Support for high-priority block device flag Jon Derrick
2016-05-12 17:43 ` [RFC 1/2] block: allow other bd i_node flags when DAX is disabled Jon Derrick
2016-05-13 9:18 ` Carlos Maiolino
2016-05-13 13:25 ` Dan Williams
2016-05-13 17:33 ` Jeff Moyer
2016-05-13 17:53 ` Dan Williams
2016-05-13 18:01 ` Jon Derrick [this message]
2016-05-12 17:43 ` [RFC 2/2] block: Introduce S_HIPRI inode flag Jon Derrick
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=20160513180110.GA1259@localhost.localdomain \
--to=jonathan.derrick@intel.com \
--cc=axboe@fb.com \
--cc=dan.j.williams@intel.com \
--cc=hch@infradead.org \
--cc=jmoyer@redhat.com \
--cc=keith.busch@intel.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=stephen.bates@microsemi.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).