On Fri, Sep 24, 2021 at 06:18:32PM +0100, David Howells wrote: > Introduce an IOCB_SWAP flag for the kiocb struct such that the REQ_SWAP > will get set on lower level operation structures in generic code. > > Signed-off-by: David Howells <dhowells@xxxxxxxxxx> > cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> > cc: Christoph Hellwig <hch@xxxxxx> > cc: Darrick J. Wong <djwong@xxxxxxxxxx> > cc: linux-xfs@xxxxxxxxxxxxxxx > cc: linux-block@xxxxxxxxxxxxxxx > cc: linux-fsdevel@xxxxxxxxxxxxxxx > cc: linux-mm@xxxxxxxxx > --- > > fs/direct-io.c | 2 ++ > include/linux/bio.h | 2 ++ > include/linux/fs.h | 1 + > 3 files changed, 5 insertions(+) > > diff --git a/fs/direct-io.c b/fs/direct-io.c > index b2e86e739d7a..76eec0a68fa4 100644 > --- a/fs/direct-io.c > +++ b/fs/direct-io.c > @@ -1216,6 +1216,8 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, > } > if (iocb->ki_flags & IOCB_HIPRI) > dio->op_flags |= REQ_HIPRI; > + if (iocb->ki_flags & IOCB_SWAP) > + dio->op_flags |= REQ_SWAP; > > /* > * For AIO O_(D)SYNC writes we need to defer completions to a workqueue > diff --git a/include/linux/bio.h b/include/linux/bio.h > index 00952e92eae1..b01133727494 100644 > --- a/include/linux/bio.h > +++ b/include/linux/bio.h > @@ -787,6 +787,8 @@ static inline void bio_set_polled(struct bio *bio, struct kiocb *kiocb) > bio->bi_opf |= REQ_HIPRI; > if (!is_sync_kiocb(kiocb)) > bio->bi_opf |= REQ_NOWAIT; > + if (kiocb->ki_flags & IOCB_SWAP) > + bio->bi_opf |= REQ_SWAP; > } > > struct bio *blk_next_bio(struct bio *bio, unsigned int nr_pages, gfp_t gfp); > diff --git a/include/linux/fs.h b/include/linux/fs.h > index c909ca6c0eb6..c20f4423e2f1 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -321,6 +321,7 @@ enum rw_hint { > #define IOCB_NOIO (1 << 20) > /* can use bio alloc cache */ > #define IOCB_ALLOC_CACHE (1 << 21) > +#define IOCB_SWAP (1 << 22) /* Operation on a swapfile */ > > struct kiocb { > struct file *ki_filp; This doesn't set REQ_SWAP for the iomap based DIO path. bio_set_polled() is only called from iomap for IOCB_HIPRI IO. Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx