All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Garry <john.garry@linux.dev>
To: Tal Zussman <tz2294@columbia.edu>, Jens Axboe <axboe@kernel.dk>,
	Christoph Hellwig <hch@lst.de>,
	Johannes Thumshirn <johannes.thumshirn@wdc.com>,
	Luis Chamberlain <mcgrof@kernel.org>,
	Hannes Reinecke <hare@kernel.org>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	Christian Brauner <brauner@kernel.org>,
	"Darrick J. Wong" <djwong@kernel.org>,
	Keith Busch <kbusch@kernel.org>,
	"Martin K. Petersen" <mkp@kernel.org>
Cc: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>,
	linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	Sashiko <sashiko-bot@kernel.org>
Subject: Re: [PATCH v6 5/9] block: fail a short atomic pin in bio_iov_iter_get_pages()
Date: Tue, 13 Oct 2026 09:40:01 +0100	[thread overview]
Message-ID: <82978d5c-3e08-48e9-bf0a-7913e1cd0507@linux.dev> (raw)
In-Reply-To: <20261009-blkdev-fixes-v6-5-307939c387df@columbia.edu>

On 10/9/26 17:50, Tal Zussman wrote:
> On a partial page pin, __blkdev_direct_IO_simple() and
> __blkdev_direct_IO_async() submit what was pinned with REQ_ATOMIC set
> and leave the rest to the buffered fallback, tearing an IOCB_ATOMIC
> write.
> 
> This can be triggered deterministically. A 16K pwritev2(RWF_ATOMIC)
> whose last page is PROT_NONE, on a scsi_debug device with atomic_wr=1,
> completes short with only three of the four pages written, violating
> RWF_ATOMIC semantics.
> 
> Make bio_iov_iter_get_pages() release the pins and return -EINVAL when
> a REQ_ATOMIC bio doesn't cover the whole iterator, since an atomic
> write is submitted as a single bio and a short one would be torn. That
> covers iomap as well, where a partially unmapped buffer could trip the
> WARN_ON_ONCE() in iomap_dio_bio_iter_one(). The async block device path
> currently sets REQ_ATOMIC after pinning, so set it before, and move
> REQ_NOWAIT along with it.
> 
> Fixes: caf336f81b3a ("block: Add fops atomic write support")
> Reported-by: Sashiko<sashiko-bot@kernel.org>
> Link:https://sashiko.dev/#/patchset/20260802-blkdev-fixes-v1-0- 
> a82fc549fd74%40columbia.edu?part=2
> Assisted-by:Claude:claude-fable-5
> Reviewed-by: John Garry<john.garry@linux.dev>
> Reviewed-by: Hannes Reinecke<hare@kernel.org>
> Signed-off-by: Tal Zussman<tz2294@columbia.edu>

I think that you can now remove the REQ_ATOMIC check after the 
iomap_dio_bio_iter_one() -> bio_iov_iter_get_pages() call also; however, 
considering the trees, it's better to wait until 7.4-rc1 is released.

Thanks,
John

  reply	other threads:[~2026-10-13  8:40 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-09 16:50 [PATCH v6 0/9] block device fixes for large block sizes, IOCB_NOWAIT, and direct I/O Tal Zussman
2026-10-09 16:50 ` [PATCH v6 1/9] block: use iomap_dirty_folio for block devices Tal Zussman
2026-10-09 16:50 ` [PATCH v6 2/9] block: take i_rwsem for the direct I/O write fallback Tal Zussman
2026-10-09 16:50 ` [PATCH v6 3/9] block: take i_rwsem for the splice read path Tal Zussman
2026-10-09 16:50 ` [PATCH v6 4/9] block: honor IOCB_NOWAIT in the block device buffered " Tal Zussman
2026-10-09 16:50 ` [PATCH v6 5/9] block: fail a short atomic pin in bio_iov_iter_get_pages() Tal Zussman
2026-10-13  8:40   ` John Garry [this message]
2026-10-09 16:50 ` [PATCH v6 6/9] block: don't fall back to buffered I/O for atomic writes Tal Zussman
2026-10-09 16:50 ` [PATCH v6 7/9] iomap: reject atomic writes in iomap_file_buffered_write() Tal Zussman
2026-10-09 16:50 ` [PATCH v6 8/9] block: unpin all pages of a bvec in bio_iov_iter_align_down() Tal Zussman
2026-10-09 16:50 ` [PATCH v6 9/9] block: remove dead metadata handling from the async direct I/O path Tal Zussman
2026-10-12 12:02 ` [PATCH v6 0/9] block device fixes for large block sizes, IOCB_NOWAIT, and direct I/O Christoph Hellwig
2026-10-12 18:51 ` Jens Axboe

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=82978d5c-3e08-48e9-bf0a-7913e1cd0507@linux.dev \
    --to=john.garry@linux.dev \
    --cc=axboe@kernel.dk \
    --cc=brauner@kernel.org \
    --cc=djwong@kernel.org \
    --cc=hare@kernel.org \
    --cc=hch@lst.de \
    --cc=johannes.thumshirn@wdc.com \
    --cc=kbusch@kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=mkp@kernel.org \
    --cc=sashiko-bot@kernel.org \
    --cc=shinichiro.kawasaki@wdc.com \
    --cc=tz2294@columbia.edu \
    --cc=willy@infradead.org \
    /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.