All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Jan Kara <jack@suse.cz>
Cc: linux-kernel@vger.kernel.org, Theodore Ts'o <tytso@mit.edu>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dan Williams <dan.j.williams@intel.com>,
	Dave Chinner <david@fromorbit.com>, Jan Kara <jack@suse.com>,
	linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org, linux-nvdimm@lists.01.org,
	Matthew Wilcox <mawilcox@microsoft.com>
Subject: Re: [PATCH v2 2/9] ext2: tell DAX the size of allocation holes
Date: Thu, 15 Sep 2016 14:09:28 -0600	[thread overview]
Message-ID: <20160915200928.GA8200@linux.intel.com> (raw)
In-Reply-To: <20160823220419.11717-3-ross.zwisler@linux.intel.com>

On Tue, Aug 23, 2016 at 04:04:12PM -0600, Ross Zwisler wrote:
> When DAX calls ext2_get_block() and the file offset points to a hole we
> currently don't set bh_result->b_size.  When we re-enable PMD faults DAX
> will need bh_result->b_size to tell it the size of the hole so it can
> decide whether to fault in a 4 KiB zero page or a 2 MiB zero page.
> 
> Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
> ---
>  fs/ext2/inode.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
> index d5c7d09..dd55d74 100644
> --- a/fs/ext2/inode.c
> +++ b/fs/ext2/inode.c
> @@ -773,6 +773,9 @@ int ext2_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_
>  	if (ret > 0) {
>  		bh_result->b_size = (ret << inode->i_blkbits);
>  		ret = 0;
> +	} else if (ret == 0) {
> +		/* hole case, need to fill in bh_result->b_size */
> +		bh_result->b_size = 1 << inode->i_blkbits;
>  	}
>  	return ret;
>  
> -- 
> 2.9.0
> 

Jan, is it possible for ext2 to return 2 MiB of contiguous space to us via
ext2_get_block()?

I ask because we have all the infrastructure in place for ext2 to handle PMD
faults (ext2_dax_pmd_fault(), etc.), but I don't think in my testing I've ever
seen this actually happen.

ext2 can obviously return multiple blocks from ext2_get_block(), but can it
actually satisfy a whole PMD's worth (512 contiguous blocks)?  If so, what
steps do I need to take to get this to work in my testing?

If it can't happen, we should probably rip out ext2_dax_pmd_fault() so that we
don't have to keep falling back to PTEs via the PMD path.

Thanks,
- Ross

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Jan Kara <jack@suse.cz>
Cc: Theodore Ts'o <tytso@mit.edu>,
	linux-nvdimm@lists.01.org,
	Matthew Wilcox <mawilcox@microsoft.com>,
	Dave Chinner <david@fromorbit.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Jan Kara <jack@suse.com>,
	linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-ext4@vger.kernel.org
Subject: Re: [PATCH v2 2/9] ext2: tell DAX the size of allocation holes
Date: Thu, 15 Sep 2016 14:09:28 -0600	[thread overview]
Message-ID: <20160915200928.GA8200@linux.intel.com> (raw)
In-Reply-To: <20160823220419.11717-3-ross.zwisler@linux.intel.com>

On Tue, Aug 23, 2016 at 04:04:12PM -0600, Ross Zwisler wrote:
> When DAX calls ext2_get_block() and the file offset points to a hole we
> currently don't set bh_result->b_size.  When we re-enable PMD faults DAX
> will need bh_result->b_size to tell it the size of the hole so it can
> decide whether to fault in a 4 KiB zero page or a 2 MiB zero page.
> 
> Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
> ---
>  fs/ext2/inode.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
> index d5c7d09..dd55d74 100644
> --- a/fs/ext2/inode.c
> +++ b/fs/ext2/inode.c
> @@ -773,6 +773,9 @@ int ext2_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_
>  	if (ret > 0) {
>  		bh_result->b_size = (ret << inode->i_blkbits);
>  		ret = 0;
> +	} else if (ret == 0) {
> +		/* hole case, need to fill in bh_result->b_size */
> +		bh_result->b_size = 1 << inode->i_blkbits;
>  	}
>  	return ret;
>  
> -- 
> 2.9.0
> 

Jan, is it possible for ext2 to return 2 MiB of contiguous space to us via
ext2_get_block()?

I ask because we have all the infrastructure in place for ext2 to handle PMD
faults (ext2_dax_pmd_fault(), etc.), but I don't think in my testing I've ever
seen this actually happen.

ext2 can obviously return multiple blocks from ext2_get_block(), but can it
actually satisfy a whole PMD's worth (512 contiguous blocks)?  If so, what
steps do I need to take to get this to work in my testing?

If it can't happen, we should probably rip out ext2_dax_pmd_fault() so that we
don't have to keep falling back to PTEs via the PMD path.

Thanks,
- Ross
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

WARNING: multiple messages have this Message-ID (diff)
From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Jan Kara <jack@suse.cz>
Cc: linux-kernel@vger.kernel.org, "Theodore Ts'o" <tytso@mit.edu>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dan Williams <dan.j.williams@intel.com>,
	Dave Chinner <david@fromorbit.com>, Jan Kara <jack@suse.com>,
	linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org, linux-nvdimm@ml01.01.org,
	Matthew Wilcox <mawilcox@microsoft.com>
Subject: Re: [PATCH v2 2/9] ext2: tell DAX the size of allocation holes
Date: Thu, 15 Sep 2016 14:09:28 -0600	[thread overview]
Message-ID: <20160915200928.GA8200@linux.intel.com> (raw)
In-Reply-To: <20160823220419.11717-3-ross.zwisler@linux.intel.com>

On Tue, Aug 23, 2016 at 04:04:12PM -0600, Ross Zwisler wrote:
> When DAX calls ext2_get_block() and the file offset points to a hole we
> currently don't set bh_result->b_size.  When we re-enable PMD faults DAX
> will need bh_result->b_size to tell it the size of the hole so it can
> decide whether to fault in a 4 KiB zero page or a 2 MiB zero page.
> 
> Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
> ---
>  fs/ext2/inode.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
> index d5c7d09..dd55d74 100644
> --- a/fs/ext2/inode.c
> +++ b/fs/ext2/inode.c
> @@ -773,6 +773,9 @@ int ext2_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_
>  	if (ret > 0) {
>  		bh_result->b_size = (ret << inode->i_blkbits);
>  		ret = 0;
> +	} else if (ret == 0) {
> +		/* hole case, need to fill in bh_result->b_size */
> +		bh_result->b_size = 1 << inode->i_blkbits;
>  	}
>  	return ret;
>  
> -- 
> 2.9.0
> 

Jan, is it possible for ext2 to return 2 MiB of contiguous space to us via
ext2_get_block()?

I ask because we have all the infrastructure in place for ext2 to handle PMD
faults (ext2_dax_pmd_fault(), etc.), but I don't think in my testing I've ever
seen this actually happen.

ext2 can obviously return multiple blocks from ext2_get_block(), but can it
actually satisfy a whole PMD's worth (512 contiguous blocks)?  If so, what
steps do I need to take to get this to work in my testing?

If it can't happen, we should probably rip out ext2_dax_pmd_fault() so that we
don't have to keep falling back to PTEs via the PMD path.

Thanks,
- Ross

  parent reply	other threads:[~2016-09-15 20:09 UTC|newest]

Thread overview: 135+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-23 22:04 [PATCH v2 0/9] re-enable DAX PMD support Ross Zwisler
2016-08-23 22:04 ` Ross Zwisler
2016-08-23 22:04 ` Ross Zwisler
2016-08-23 22:04 ` Ross Zwisler
2016-08-23 22:04 ` [PATCH v2 2/9] ext2: tell DAX the size of allocation holes Ross Zwisler
2016-08-23 22:04   ` Ross Zwisler
2016-08-23 22:04   ` Ross Zwisler
     [not found]   ` <20160823220419.11717-3-ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-08-25  7:57     ` Christoph Hellwig
2016-08-25  7:57       ` Christoph Hellwig
2016-08-25  7:57       ` Christoph Hellwig
     [not found]       ` <20160825075728.GA11235-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-08-25 19:25         ` Ross Zwisler
2016-08-25 19:25           ` Ross Zwisler
2016-08-25 19:25           ` Ross Zwisler
2016-08-26 21:29         ` Ross Zwisler
2016-08-26 21:29           ` Ross Zwisler
2016-08-26 21:29           ` Ross Zwisler
2016-08-29  0:42           ` Dave Chinner
2016-08-29  0:42             ` Dave Chinner
     [not found]           ` <20160826212934.GA11265-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-08-29  7:41             ` Christoph Hellwig
2016-08-29  7:41               ` Christoph Hellwig
2016-08-29  7:41               ` Christoph Hellwig
     [not found]               ` <20160829074116.GA16491-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-08-29 12:57                 ` Theodore Ts'o
2016-08-29 12:57                   ` Theodore Ts'o
2016-08-29 12:57                   ` Theodore Ts'o
     [not found]                   ` <20160829125741.cdnbb2uaditcmnw2-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2016-08-30  7:21                     ` Christoph Hellwig
2016-08-30  7:21                       ` Christoph Hellwig
2016-08-30  7:21                       ` Christoph Hellwig
2016-09-09 16:48                     ` Ross Zwisler
2016-09-09 16:48                       ` Ross Zwisler
2016-09-09 16:48                       ` Ross Zwisler
2016-09-09 20:35                       ` Matthew Wilcox
2016-09-09 20:35                         ` Matthew Wilcox
     [not found]                         ` <DM2PR21MB0089BCA980B67D8C53B25A1BCBFA0-B2pw06WL+/BAVFCO9/lqPs1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-09-09 22:34                           ` Dan Williams
2016-09-09 22:34                             ` Dan Williams
2016-09-09 22:34                             ` Dan Williams
     [not found]                             ` <CAPcyv4hjna08+Yw23w_V2f-RbBE6ar220+YGCuBVA-TACKWNug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-09-10  7:31                               ` Christoph Hellwig
2016-09-10  7:31                                 ` Christoph Hellwig
2016-09-10  7:31                                 ` Christoph Hellwig
2016-09-10  7:50                                 ` Matthew Wilcox
2016-09-10  7:50                                   ` Matthew Wilcox
2016-09-10 17:49                                 ` Theodore Ts'o
2016-09-10 17:49                                   ` Theodore Ts'o
     [not found]                                   ` <20160910174910.yyirb7smiob7evt5-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2016-09-11  0:42                                     ` Matthew Wilcox
2016-09-11  0:42                                       ` Matthew Wilcox
2016-09-11  0:42                                       ` Matthew Wilcox
2016-09-10  8:15                               ` Matthew Wilcox
2016-09-10  8:15                                 ` Matthew Wilcox
2016-09-10  8:15                                 ` Matthew Wilcox
2016-09-10 14:56                                 ` Dan Williams
2016-09-10 14:56                                   ` Dan Williams
2016-09-10  7:30                         ` Christoph Hellwig
2016-09-10  7:30                           ` Christoph Hellwig
2016-09-10  7:33                           ` Matthew Wilcox
2016-09-10  7:33                             ` Matthew Wilcox
2016-09-10  7:42                             ` Christoph Hellwig
2016-09-10  7:42                               ` Christoph Hellwig
2016-09-10  7:52                               ` Matthew Wilcox
2016-09-10  7:52                                 ` Matthew Wilcox
     [not found]                                 ` <DM2PR21MB0089C20EF469AA91A916867CCBFD0-B2pw06WL+/BAVFCO9/lqPs1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-09-11 12:47                                   ` Christoph Hellwig
2016-09-11 12:47                                     ` Christoph Hellwig
2016-09-11 12:47                                     ` Christoph Hellwig
2016-09-11 22:57                                     ` Ross Zwisler
2016-09-11 22:57                                       ` Ross Zwisler
2016-09-10 15:55                           ` Matthew Wilcox
2016-09-10 15:55                             ` Matthew Wilcox
2016-09-15 20:09   ` Ross Zwisler [this message]
2016-09-15 20:09     ` Ross Zwisler
2016-09-15 20:09     ` Ross Zwisler
     [not found] ` <20160823220419.11717-1-ross.zwisler-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-08-23 22:04   ` [PATCH v2 1/9] ext4: allow DAX writeback for hole punch Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-09-21 15:22     ` Ross Zwisler
2016-09-21 15:22       ` Ross Zwisler
2016-09-21 15:22       ` Ross Zwisler
2016-09-21 15:22       ` Ross Zwisler
2016-09-21 15:22       ` Ross Zwisler
2016-09-22  6:59       ` Jan Kara
2016-09-22  6:59         ` Jan Kara
2016-09-22  6:59         ` Jan Kara
2016-09-22  6:59         ` Jan Kara
2016-09-22 15:51       ` Theodore Ts'o
2016-09-22 15:51         ` Theodore Ts'o
2016-08-23 22:04   ` [PATCH v2 3/9] ext4: tell DAX the size of allocation holes Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04   ` [PATCH v2 4/9] dax: remove buffer_size_valid() Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04   ` [PATCH v2 5/9] dax: make 'wait_table' global variable static Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04   ` [PATCH v2 6/9] dax: consistent variable naming for DAX entries Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04   ` [PATCH v2 7/9] dax: coordinate locking for offsets in PMD range Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04   ` [PATCH v2 8/9] dax: re-enable DAX PMD support Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04   ` [PATCH v2 9/9] dax: remove "depends on BROKEN" from FS_DAX_PMD Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-23 22:04     ` Ross Zwisler
2016-08-30 23:01   ` [PATCH v2 0/9] re-enable DAX PMD support Ross Zwisler
2016-08-30 23:01     ` Ross Zwisler
2016-08-30 23:01     ` Ross Zwisler
2016-08-30 23:01     ` Ross Zwisler
2016-08-31 20:20     ` Kani, Toshimitsu
2016-08-31 20:20       ` Kani, Toshimitsu
2016-08-31 20:20       ` Kani, Toshimitsu
     [not found]       ` <1472674799.2092.19.camel-ZPxbGqLxI0U@public.gmane.org>
2016-08-31 21:36         ` Ross Zwisler
2016-08-31 21:36           ` Ross Zwisler
2016-08-31 21:36           ` Ross Zwisler
2016-08-31 21:36           ` Ross Zwisler
2016-08-31 21:36           ` Ross Zwisler
     [not found]           ` <20160831213607.GA6921-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-08-31 22:08             ` Kani, Toshimitsu
2016-08-31 22:08               ` Kani, Toshimitsu
2016-08-31 22:08               ` Kani, Toshimitsu
2016-08-31 22:08               ` Kani, Toshimitsu
2016-09-01 16:21               ` Ross Zwisler
2016-09-01 16:21                 ` Ross Zwisler
2016-09-01 16:21                 ` Ross Zwisler
2016-09-01 16:21                 ` Ross Zwisler
2016-09-01 16:21                 ` Ross Zwisler

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=20160915200928.GA8200@linux.intel.com \
    --to=ross.zwisler@linux.intel.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=akpm@linux-foundation.org \
    --cc=dan.j.williams@intel.com \
    --cc=david@fromorbit.com \
    --cc=jack@suse.com \
    --cc=jack@suse.cz \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=mawilcox@microsoft.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.