All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: Christoph Hellwig <hch@infradead.org>
Cc: Jan Kara <jack@suse.cz>,
	linux-mm@kvack.org, cluster-devel@redhat.com,
	linux-nilfs@vger.kernel.org, tytso@mit.edu,
	linux-xfs@vger.kernel.org, "Yan, Zheng" <zyan@redhat.com>,
	"Darrick J . Wong" <darrick.wong@oracle.com>,
	Hugh Dickins <hughd@google.com>,
	linux-f2fs-devel@lists.sourceforge.net,
	David Howells <dhowells@redhat.com>,
	David Sterba <dsterba@suse.com>,
	ceph-devel@vger.kernel.org,
	Nadia Yvette Chambers <nyc@holomorphy.com>,
	Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>,
	Jaegeuk Kim <jaegeuk@kernel.org>,
	Ilya Dryomov <idryomov@gmail.com>,
	linux-ext4@vger.kernel.org, linux-afs@lists.infradead.org,
	linux-btrfs@vger.kernel.org
Subject: Re: [Cluster-devel] [PATCH 00/35 v1] pagevec API cleanups
Date: Thu, 1 Jun 2017 14:05:56 +0200	[thread overview]
Message-ID: <20170601120556.GD23077@quack2.suse.cz> (raw)
In-Reply-To: <20170601113604.GA10829@infradead.org>

On Thu 01-06-17 04:36:04, Christoph Hellwig wrote:
> On Thu, Jun 01, 2017 at 11:32:10AM +0200, Jan Kara wrote:
> > * Implement ranged variants for pagevec_lookup and find_get_ functions. Lot
> >   of callers actually want a ranged lookup and we unnecessarily opencode this
> >   in lot of them.
> 
> How does this compare to Kents page cache iterators:
> 
> http://www.spinics.net/lists/linux-mm/msg104737.html

Interesting. I didn't know about that work. I guess the tradeoff is pretty
obvious - my patches are more conservative (changing less) and as a result
the API is not as neat as Kent's one. That being said I was also thinking
about something similar to what Kent did but what I didn't like about such
iterator is that you still need to specially handle the cases where you
break out of the loop (you need to do that with pagevecs too but there it
is kind of obvious from the API).

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: Christoph Hellwig <hch@infradead.org>
Cc: Jan Kara <jack@suse.cz>,
	linux-mm@kvack.org, cluster-devel@redhat.com,
	linux-nilfs@vger.kernel.org, tytso@mit.edu,
	linux-xfs@vger.kernel.org, "Yan, Zheng" <zyan@redhat.com>,
	"Darrick J . Wong" <darrick.wong@oracle.com>,
	Hugh Dickins <hughd@google.com>,
	linux-f2fs-devel@lists.sourceforge.net,
	David Howells <dhowells@redhat.com>,
	David Sterba <dsterba@suse.com>,
	ceph-devel@vger.kernel.org,
	Nadia Yvette Chambers <nyc@holomorphy.com>,
	Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>,
	Jaegeuk Kim <jaegeuk@kernel.org>,
	Ilya Dryomov <idryomov@gmail.com>,
	linux-ext4@vger.kernel.org, linux-afs@lists.infradead.org,
	linux-btrfs@vger.kernel.org
Subject: Re: [Cluster-devel] [PATCH 00/35 v1] pagevec API cleanups
Date: Thu, 1 Jun 2017 14:05:56 +0200	[thread overview]
Message-ID: <20170601120556.GD23077@quack2.suse.cz> (raw)
In-Reply-To: <20170601113604.GA10829@infradead.org>

On Thu 01-06-17 04:36:04, Christoph Hellwig wrote:
> On Thu, Jun 01, 2017 at 11:32:10AM +0200, Jan Kara wrote:
> > * Implement ranged variants for pagevec_lookup and find_get_ functions. Lot
> >   of callers actually want a ranged lookup and we unnecessarily opencode this
> >   in lot of them.
> 
> How does this compare to Kents page cache iterators:
> 
> http://www.spinics.net/lists/linux-mm/msg104737.html

Interesting. I didn't know about that work. I guess the tradeoff is pretty
obvious - my patches are more conservative (changing less) and as a result
the API is not as neat as Kent's one. That being said I was also thinking
about something similar to what Kent did but what I didn't like about such
iterator is that you still need to specially handle the cases where you
break out of the loop (you need to do that with pagevecs too but there it
is kind of obvious from the API).

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

--
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: Jan Kara <jack@suse.cz>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 00/35 v1] pagevec API cleanups
Date: Thu, 1 Jun 2017 14:05:56 +0200	[thread overview]
Message-ID: <20170601120556.GD23077@quack2.suse.cz> (raw)
In-Reply-To: <20170601113604.GA10829@infradead.org>

On Thu 01-06-17 04:36:04, Christoph Hellwig wrote:
> On Thu, Jun 01, 2017 at 11:32:10AM +0200, Jan Kara wrote:
> > * Implement ranged variants for pagevec_lookup and find_get_ functions. Lot
> >   of callers actually want a ranged lookup and we unnecessarily opencode this
> >   in lot of them.
> 
> How does this compare to Kents page cache iterators:
> 
> http://www.spinics.net/lists/linux-mm/msg104737.html

Interesting. I didn't know about that work. I guess the tradeoff is pretty
obvious - my patches are more conservative (changing less) and as a result
the API is not as neat as Kent's one. That being said I was also thinking
about something similar to what Kent did but what I didn't like about such
iterator is that you still need to specially handle the cases where you
break out of the loop (you need to do that with pagevecs too but there it
is kind of obvious from the API).

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR



  reply	other threads:[~2017-06-01 12:05 UTC|newest]

Thread overview: 233+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-01  9:32 [PATCH 00/35 v1] pagevec API cleanups Jan Kara
2017-06-01  9:32 ` [Cluster-devel] " Jan Kara
2017-06-01  9:32 ` Jan Kara
2017-06-01  9:32 ` Jan Kara
2017-06-01  9:32 ` Jan Kara
2017-06-01  9:32 ` Jan Kara
2017-06-01  9:32 ` [PATCH 01/35] fscache: Remove unused ->now_uncached callback Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 02/35] ext4: Fix SEEK_HOLE Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 03/35] ext4: Fix off-by-in in loop termination in ext4_find_unwritten_pgoff() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 04/35] dax: Fix inefficiency in dax_writeback_mapping_range() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 05/35] mm: Fix THP handling in invalidate_mapping_pages() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 06/35] mm: Make pagevec_lookup() update index Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 07/35] mm: Implement find_get_pages_range() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 08/35] fs: Fix performance regression in clean_bdev_aliases() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 09/35] ext4: Use pagevec_lookup_range() in ext4_find_unwritten_pgoff() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 10/35] ext4: Use pagevec_lookup_range() in writeback code Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 11/35] hugetlbfs: Use pagevec_lookup_range() in remove_inode_hugepages() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 12/35] xfs: Use pagevec_lookup_range() in xfs_find_get_desired_pgoff() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 13/35] mm: Remove nr_pages argument from pagevec_lookup{,_range}() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] [PATCH 13/35] mm: Remove nr_pages argument from pagevec_lookup{, _range}() Jan Kara
2017-06-01  9:32   ` [PATCH 13/35] mm: Remove nr_pages argument from pagevec_lookup{,_range}() Jan Kara
2017-06-01  9:32   ` [PATCH 13/35] mm: Remove nr_pages argument from pagevec_lookup{, _range}() Jan Kara
2017-06-01  9:32   ` [PATCH 13/35] mm: Remove nr_pages argument from pagevec_lookup{,_range}() Jan Kara
2017-06-01  9:32   ` [PATCH 13/35] mm: Remove nr_pages argument from pagevec_lookup{, _range}() Jan Kara
2017-06-01  9:32 ` [PATCH 14/35] mm: Implement find_get_pages_range_tag() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 15/35] btrfs: Use pagevec_lookup_range_tag() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 16/35] ceph: " Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 17/35] ext4: " Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 18/35] f2fs: " Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 19/35] f2fs: Simplify page iteration loops Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01 13:00   ` kbuild test robot
2017-06-01 13:00     ` [Cluster-devel] " kbuild test robot
2017-06-01 13:00     ` kbuild test robot
2017-06-01 13:00     ` kbuild test robot
2017-06-01  9:32 ` [PATCH 20/35] f2fs: Use find_get_pages_tag() for looking up single page Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 21/35] gfs2: Use pagevec_lookup_range_tag() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 22/35] nilfs2: " Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 23/35] mm: Use pagevec_lookup_range_tag() in __filemap_fdatawait_range() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 24/35] mm: Use pagevec_lookup_range_tag() in write_cache_pages() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 25/35] mm: Remove nr_pages argument from pagevec_lookup_{,range}_tag() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] [PATCH 25/35] mm: Remove nr_pages argument from pagevec_lookup_{, range}_tag() Jan Kara
2017-06-01  9:32   ` [PATCH 25/35] mm: Remove nr_pages argument from pagevec_lookup_{,range}_tag() Jan Kara
2017-06-01  9:32   ` [PATCH 25/35] mm: Remove nr_pages argument from pagevec_lookup_{, range}_tag() Jan Kara
2017-06-01  9:32   ` [PATCH 25/35] mm: Remove nr_pages argument from pagevec_lookup_{,range}_tag() Jan Kara
2017-06-01  9:32   ` [PATCH 25/35] mm: Remove nr_pages argument from pagevec_lookup_{, range}_tag() Jan Kara
2017-06-01  9:32 ` [PATCH 26/35] afs: Use find_get_pages_range_tag() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 27/35] shmem: Use pagevec_lookup() in shmem_unlock_mapping() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 28/35] shmem: Use pagevec_lookup_entries() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 29/35] mm: Make pagevec_lookup_entries() update index Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 30/35] mm: Implement find_get_entries_range() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 31/35] shmem: Convert to pagevec_lookup_entries_range() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01 13:55   ` kbuild test robot
2017-06-01 13:55     ` [Cluster-devel] " kbuild test robot
2017-06-01 13:55     ` kbuild test robot
2017-06-01 13:55     ` kbuild test robot
2017-06-01  9:32 ` [PATCH 32/35] mm: Convert truncate code " Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 33/35] mm: Remove nr_entries argument from pagevec_lookup_entries{,_range}() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] [PATCH 33/35] mm: Remove nr_entries argument from pagevec_lookup_entries{, _range}() Jan Kara
2017-06-01  9:32   ` [PATCH 33/35] mm: Remove nr_entries argument from pagevec_lookup_entries{,_range}() Jan Kara
2017-06-01  9:32   ` [PATCH 33/35] mm: Remove nr_entries argument from pagevec_lookup_entries{, _range}() Jan Kara
2017-06-01  9:32   ` [PATCH 33/35] mm: Remove nr_entries argument from pagevec_lookup_entries{,_range}() Jan Kara
2017-06-01  9:32   ` [PATCH 33/35] mm: Remove nr_entries argument from pagevec_lookup_entries{, _range}() Jan Kara
2017-06-01  9:32 ` [PATCH 34/35] mm: Make find_get_entries_tag() update index Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32 ` [PATCH 35/35] mm: Implement find_get_entries_range_tag() Jan Kara
2017-06-01  9:32   ` [Cluster-devel] " Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01  9:32   ` Jan Kara
2017-06-01 10:26 ` [PATCH 01/35] fscache: Remove unused ->now_uncached callback David Howells
2017-06-01 10:26   ` [Cluster-devel] " David Howells
2017-06-01 10:26   ` David Howells
2017-06-01 11:34   ` Jan Kara
2017-06-01 11:34     ` [Cluster-devel] " Jan Kara
2017-06-01 11:34     ` Jan Kara
2017-06-19 13:12     ` Jan Kara
2017-06-19 13:12       ` [Cluster-devel] " Jan Kara
2017-06-19 13:12       ` Jan Kara
2017-06-01 11:36 ` [Cluster-devel] [PATCH 00/35 v1] pagevec API cleanups Christoph Hellwig
2017-06-01 11:36   ` Christoph Hellwig
2017-06-01 11:36   ` Christoph Hellwig
2017-06-01 12:05   ` Jan Kara [this message]
2017-06-01 12:05     ` Jan Kara
2017-06-01 12:05     ` Jan Kara

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=20170601120556.GD23077@quack2.suse.cz \
    --to=jack@suse.cz \
    --cc=ceph-devel@vger.kernel.org \
    --cc=cluster-devel@redhat.com \
    --cc=darrick.wong@oracle.com \
    --cc=dhowells@redhat.com \
    --cc=dsterba@suse.com \
    --cc=hch@infradead.org \
    --cc=hughd@google.com \
    --cc=idryomov@gmail.com \
    --cc=jaegeuk@kernel.org \
    --cc=konishi.ryusuke@lab.ntt.co.jp \
    --cc=linux-afs@lists.infradead.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-mm@kvack.org \
    --cc=linux-nilfs@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=nyc@holomorphy.com \
    --cc=tytso@mit.edu \
    --cc=zyan@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.