[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150820122857.GC20110@dhcp22.suse.cz>
Date: Thu, 20 Aug 2015 14:28:58 +0200
From: Michal Hocko <mhocko@...nel.org>
To: Mel Gorman <mgorman@...hsingularity.net>
Cc: Linux-MM <linux-mm@...ck.org>,
Johannes Weiner <hannes@...xchg.org>,
Rik van Riel <riel@...hat.com>,
Vlastimil Babka <vbabka@...e.cz>,
David Rientjes <rientjes@...gle.com>,
Joonsoo Kim <iamjoonsoo.kim@....com>,
LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 07/10] mm: page_alloc: Rename __GFP_WAIT to __GFP_RECLAIM
On Wed 12-08-15 11:45:32, Mel Gorman wrote:
> __GFP_WAIT was used to signal that the caller was in atomic context and
> could not sleep. Now it is possible to distinguish between true atomic
> context and callers that are not willing to sleep. The latter should clear
> __GFP_DIRECT_RECLAIM so kswapd will still wake. As clearing __GFP_WAIT
> behaves differently, there is a risk that people will clear the wrong
> flags. This patch renames __GFP_WAIT to __GFP_RECLAIM to clearly indicate
> what it does -- setting it allows all reclaim activity, clearing them
> prevents it.
>
> Signed-off-by: Mel Gorman <mgorman@...hsingularity.net>
I haven't checked all the converted places too deeply but they look
straightforward.
Acked-by: Michal Hocko <mhocko@...e.cz>
> ---
> block/blk-mq.c | 2 +-
> block/scsi_ioctl.c | 6 +++---
> drivers/block/drbd/drbd_bitmap.c | 2 +-
> drivers/block/drbd/drbd_receiver.c | 2 +-
> drivers/block/mtip32xx/mtip32xx.c | 2 +-
> drivers/block/nvme-core.c | 4 ++--
> drivers/block/paride/pd.c | 2 +-
> drivers/block/pktcdvd.c | 4 ++--
> drivers/gpu/drm/i915/i915_gem.c | 2 +-
> drivers/ide/ide-atapi.c | 2 +-
> drivers/ide/ide-cd.c | 2 +-
> drivers/ide/ide-cd_ioctl.c | 2 +-
> drivers/ide/ide-devsets.c | 2 +-
> drivers/ide/ide-disk.c | 2 +-
> drivers/ide/ide-ioctls.c | 4 ++--
> drivers/ide/ide-park.c | 2 +-
> drivers/ide/ide-pm.c | 4 ++--
> drivers/ide/ide-tape.c | 4 ++--
> drivers/ide/ide-taskfile.c | 4 ++--
> drivers/infiniband/hw/ipath/ipath_file_ops.c | 2 +-
> drivers/infiniband/hw/qib/qib_init.c | 2 +-
> drivers/misc/vmw_balloon.c | 2 +-
> drivers/scsi/scsi_error.c | 2 +-
> drivers/scsi/scsi_lib.c | 4 ++--
> .../staging/lustre/include/linux/libcfs/libcfs_private.h | 2 +-
> fs/btrfs/extent_io.c | 6 +++---
> fs/cachefiles/internal.h | 2 +-
> fs/direct-io.c | 2 +-
> fs/nilfs2/mdt.h | 2 +-
> include/linux/gfp.h | 16 ++++++++--------
> kernel/power/swap.c | 14 +++++++-------
> lib/percpu_ida.c | 2 +-
> mm/failslab.c | 8 ++++----
> mm/filemap.c | 2 +-
> mm/huge_memory.c | 2 +-
> mm/migrate.c | 2 +-
> mm/page_alloc.c | 10 +++++-----
> net/netlink/af_netlink.c | 2 +-
> net/rxrpc/ar-connection.c | 2 +-
> security/integrity/ima/ima_crypto.c | 2 +-
> 40 files changed, 71 insertions(+), 71 deletions(-)
>
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index df8cba632ec2..873c7b4d14ec 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -1221,7 +1221,7 @@ static struct request *blk_mq_map_request(struct request_queue *q,
> ctx = blk_mq_get_ctx(q);
> hctx = q->mq_ops->map_queue(q, ctx->cpu);
> blk_mq_set_alloc_data(&alloc_data, q,
> - __GFP_WAIT|__GFP_HIGH, false, ctx, hctx);
> + __GFP_RECLAIM|__GFP_HIGH, false, ctx, hctx);
> rq = __blk_mq_alloc_request(&alloc_data, rw);
> ctx = alloc_data.ctx;
> hctx = alloc_data.hctx;
> diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
> index dda653ce7b24..0774799942e0 100644
> --- a/block/scsi_ioctl.c
> +++ b/block/scsi_ioctl.c
> @@ -444,7 +444,7 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
>
> }
>
> - rq = blk_get_request(q, in_len ? WRITE : READ, __GFP_WAIT);
> + rq = blk_get_request(q, in_len ? WRITE : READ, __GFP_RECLAIM);
> if (IS_ERR(rq)) {
> err = PTR_ERR(rq);
> goto error_free_buffer;
> @@ -495,7 +495,7 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
> break;
> }
>
> - if (bytes && blk_rq_map_kern(q, rq, buffer, bytes, __GFP_WAIT)) {
> + if (bytes && blk_rq_map_kern(q, rq, buffer, bytes, __GFP_RECLAIM)) {
> err = DRIVER_ERROR << 24;
> goto error;
> }
> @@ -536,7 +536,7 @@ static int __blk_send_generic(struct request_queue *q, struct gendisk *bd_disk,
> struct request *rq;
> int err;
>
> - rq = blk_get_request(q, WRITE, __GFP_WAIT);
> + rq = blk_get_request(q, WRITE, __GFP_RECLAIM);
> if (IS_ERR(rq))
> return PTR_ERR(rq);
> blk_rq_set_block_pc(rq);
> diff --git a/drivers/block/drbd/drbd_bitmap.c b/drivers/block/drbd/drbd_bitmap.c
> index 434c77dcc99e..2940da0011e0 100644
> --- a/drivers/block/drbd/drbd_bitmap.c
> +++ b/drivers/block/drbd/drbd_bitmap.c
> @@ -1016,7 +1016,7 @@ static void bm_page_io_async(struct drbd_bm_aio_ctx *ctx, int page_nr) __must_ho
> bm_set_page_unchanged(b->bm_pages[page_nr]);
>
> if (ctx->flags & BM_AIO_COPY_PAGES) {
> - page = mempool_alloc(drbd_md_io_page_pool, __GFP_HIGHMEM|__GFP_WAIT);
> + page = mempool_alloc(drbd_md_io_page_pool, __GFP_HIGHMEM|__GFP_RECLAIM);
> copy_highpage(page, b->bm_pages[page_nr]);
> bm_store_page_idx(page, page_nr);
> } else
> diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
> index c097909c589c..1d2046e68808 100644
> --- a/drivers/block/drbd/drbd_receiver.c
> +++ b/drivers/block/drbd/drbd_receiver.c
> @@ -357,7 +357,7 @@ drbd_alloc_peer_req(struct drbd_peer_device *peer_device, u64 id, sector_t secto
> }
>
> if (has_payload && data_size) {
> - page = drbd_alloc_pages(peer_device, nr_pages, (gfp_mask & __GFP_WAIT));
> + page = drbd_alloc_pages(peer_device, nr_pages, (gfp_mask & __GFP_RECLAIM));
> if (!page)
> goto fail;
> }
> diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
> index 4a2ef09e6704..a694b23cb8f9 100644
> --- a/drivers/block/mtip32xx/mtip32xx.c
> +++ b/drivers/block/mtip32xx/mtip32xx.c
> @@ -173,7 +173,7 @@ static struct mtip_cmd *mtip_get_int_command(struct driver_data *dd)
> {
> struct request *rq;
>
> - rq = blk_mq_alloc_request(dd->queue, 0, __GFP_WAIT, true);
> + rq = blk_mq_alloc_request(dd->queue, 0, __GFP_RECLAIM, true);
> return blk_mq_rq_to_pdu(rq);
> }
>
> diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c
> index 7920c2741b47..0a8b1682305f 100644
> --- a/drivers/block/nvme-core.c
> +++ b/drivers/block/nvme-core.c
> @@ -1033,11 +1033,11 @@ int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd,
> req->special = (void *)0;
>
> if (buffer && bufflen) {
> - ret = blk_rq_map_kern(q, req, buffer, bufflen, __GFP_WAIT);
> + ret = blk_rq_map_kern(q, req, buffer, bufflen, __GFP_RECLAIM);
> if (ret)
> goto out;
> } else if (ubuffer && bufflen) {
> - ret = blk_rq_map_user(q, req, NULL, ubuffer, bufflen, __GFP_WAIT);
> + ret = blk_rq_map_user(q, req, NULL, ubuffer, bufflen, __GFP_RECLAIM);
> if (ret)
> goto out;
> bio = req->bio;
> diff --git a/drivers/block/paride/pd.c b/drivers/block/paride/pd.c
> index b9242d78283d..562b5a4ca7b7 100644
> --- a/drivers/block/paride/pd.c
> +++ b/drivers/block/paride/pd.c
> @@ -723,7 +723,7 @@ static int pd_special_command(struct pd_unit *disk,
> struct request *rq;
> int err = 0;
>
> - rq = blk_get_request(disk->gd->queue, READ, __GFP_WAIT);
> + rq = blk_get_request(disk->gd->queue, READ, __GFP_RECLAIM);
> if (IS_ERR(rq))
> return PTR_ERR(rq);
>
> diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
> index 4c20c228184c..e372a5f08847 100644
> --- a/drivers/block/pktcdvd.c
> +++ b/drivers/block/pktcdvd.c
> @@ -704,14 +704,14 @@ static int pkt_generic_packet(struct pktcdvd_device *pd, struct packet_command *
> int ret = 0;
>
> rq = blk_get_request(q, (cgc->data_direction == CGC_DATA_WRITE) ?
> - WRITE : READ, __GFP_WAIT);
> + WRITE : READ, __GFP_RECLAIM);
> if (IS_ERR(rq))
> return PTR_ERR(rq);
> blk_rq_set_block_pc(rq);
>
> if (cgc->buflen) {
> ret = blk_rq_map_kern(q, rq, cgc->buffer, cgc->buflen,
> - __GFP_WAIT);
> + __GFP_RECLAIM);
> if (ret)
> goto out;
> }
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index c2b45081c5ab..2ca8638c5b81 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -2226,7 +2226,7 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj)
> mapping = file_inode(obj->base.filp)->i_mapping;
> gfp = mapping_gfp_mask(mapping);
> gfp |= __GFP_NORETRY | __GFP_NOWARN;
> - gfp &= ~(__GFP_IO | __GFP_WAIT);
> + gfp &= ~(__GFP_IO | __GFP_RECLAIM);
> sg = st->sgl;
> st->nents = 0;
> for (i = 0; i < page_count; i++) {
> diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
> index 1362ad80a76c..05352f490d60 100644
> --- a/drivers/ide/ide-atapi.c
> +++ b/drivers/ide/ide-atapi.c
> @@ -92,7 +92,7 @@ int ide_queue_pc_tail(ide_drive_t *drive, struct gendisk *disk,
> struct request *rq;
> int error;
>
> - rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_DRV_PRIV;
> rq->special = (char *)pc;
>
> diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
> index 64a6b827b3dd..ef907fd5ba98 100644
> --- a/drivers/ide/ide-cd.c
> +++ b/drivers/ide/ide-cd.c
> @@ -441,7 +441,7 @@ int ide_cd_queue_pc(ide_drive_t *drive, const unsigned char *cmd,
> struct request *rq;
> int error;
>
> - rq = blk_get_request(drive->queue, write, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, write, __GFP_RECLAIM);
>
> memcpy(rq->cmd, cmd, BLK_MAX_CDB);
> rq->cmd_type = REQ_TYPE_ATA_PC;
> diff --git a/drivers/ide/ide-cd_ioctl.c b/drivers/ide/ide-cd_ioctl.c
> index 066e39036518..474173eb31bb 100644
> --- a/drivers/ide/ide-cd_ioctl.c
> +++ b/drivers/ide/ide-cd_ioctl.c
> @@ -303,7 +303,7 @@ int ide_cdrom_reset(struct cdrom_device_info *cdi)
> struct request *rq;
> int ret;
>
> - rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_DRV_PRIV;
> rq->cmd_flags = REQ_QUIET;
> ret = blk_execute_rq(drive->queue, cd->disk, rq, 0);
> diff --git a/drivers/ide/ide-devsets.c b/drivers/ide/ide-devsets.c
> index b05a74d78ef5..0dd43b4fcec6 100644
> --- a/drivers/ide/ide-devsets.c
> +++ b/drivers/ide/ide-devsets.c
> @@ -165,7 +165,7 @@ int ide_devset_execute(ide_drive_t *drive, const struct ide_devset *setting,
> if (!(setting->flags & DS_SYNC))
> return setting->set(drive, arg);
>
> - rq = blk_get_request(q, READ, __GFP_WAIT);
> + rq = blk_get_request(q, READ, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_DRV_PRIV;
> rq->cmd_len = 5;
> rq->cmd[0] = REQ_DEVSET_EXEC;
> diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
> index 56b9708894a5..37a8a907febe 100644
> --- a/drivers/ide/ide-disk.c
> +++ b/drivers/ide/ide-disk.c
> @@ -477,7 +477,7 @@ static int set_multcount(ide_drive_t *drive, int arg)
> if (drive->special_flags & IDE_SFLAG_SET_MULTMODE)
> return -EBUSY;
>
> - rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_ATA_TASKFILE;
>
> drive->mult_req = arg;
> diff --git a/drivers/ide/ide-ioctls.c b/drivers/ide/ide-ioctls.c
> index aa2e9b77b20d..d05db2469209 100644
> --- a/drivers/ide/ide-ioctls.c
> +++ b/drivers/ide/ide-ioctls.c
> @@ -125,7 +125,7 @@ static int ide_cmd_ioctl(ide_drive_t *drive, unsigned long arg)
> if (NULL == (void *) arg) {
> struct request *rq;
>
> - rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_ATA_TASKFILE;
> err = blk_execute_rq(drive->queue, NULL, rq, 0);
> blk_put_request(rq);
> @@ -221,7 +221,7 @@ static int generic_drive_reset(ide_drive_t *drive)
> struct request *rq;
> int ret = 0;
>
> - rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_DRV_PRIV;
> rq->cmd_len = 1;
> rq->cmd[0] = REQ_DRIVE_RESET;
> diff --git a/drivers/ide/ide-park.c b/drivers/ide/ide-park.c
> index c80868520488..2d7dca56dd24 100644
> --- a/drivers/ide/ide-park.c
> +++ b/drivers/ide/ide-park.c
> @@ -31,7 +31,7 @@ static void issue_park_cmd(ide_drive_t *drive, unsigned long timeout)
> }
> spin_unlock_irq(&hwif->lock);
>
> - rq = blk_get_request(q, READ, __GFP_WAIT);
> + rq = blk_get_request(q, READ, __GFP_RECLAIM);
> rq->cmd[0] = REQ_PARK_HEADS;
> rq->cmd_len = 1;
> rq->cmd_type = REQ_TYPE_DRV_PRIV;
> diff --git a/drivers/ide/ide-pm.c b/drivers/ide/ide-pm.c
> index 081e43458d50..e34af488693a 100644
> --- a/drivers/ide/ide-pm.c
> +++ b/drivers/ide/ide-pm.c
> @@ -18,7 +18,7 @@ int generic_ide_suspend(struct device *dev, pm_message_t mesg)
> }
>
> memset(&rqpm, 0, sizeof(rqpm));
> - rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_ATA_PM_SUSPEND;
> rq->special = &rqpm;
> rqpm.pm_step = IDE_PM_START_SUSPEND;
> @@ -88,7 +88,7 @@ int generic_ide_resume(struct device *dev)
> }
>
> memset(&rqpm, 0, sizeof(rqpm));
> - rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_ATA_PM_RESUME;
> rq->cmd_flags |= REQ_PREEMPT;
> rq->special = &rqpm;
> diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
> index f5d51d1d09ee..12fa04997dcc 100644
> --- a/drivers/ide/ide-tape.c
> +++ b/drivers/ide/ide-tape.c
> @@ -852,7 +852,7 @@ static int idetape_queue_rw_tail(ide_drive_t *drive, int cmd, int size)
> BUG_ON(cmd != REQ_IDETAPE_READ && cmd != REQ_IDETAPE_WRITE);
> BUG_ON(size < 0 || size % tape->blk_size);
>
> - rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_DRV_PRIV;
> rq->cmd[13] = cmd;
> rq->rq_disk = tape->disk;
> @@ -860,7 +860,7 @@ static int idetape_queue_rw_tail(ide_drive_t *drive, int cmd, int size)
>
> if (size) {
> ret = blk_rq_map_kern(drive->queue, rq, tape->buf, size,
> - __GFP_WAIT);
> + __GFP_RECLAIM);
> if (ret)
> goto out_put;
> }
> diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
> index 0979e126fff1..a716693417a3 100644
> --- a/drivers/ide/ide-taskfile.c
> +++ b/drivers/ide/ide-taskfile.c
> @@ -430,7 +430,7 @@ int ide_raw_taskfile(ide_drive_t *drive, struct ide_cmd *cmd, u8 *buf,
> int error;
> int rw = !(cmd->tf_flags & IDE_TFLAG_WRITE) ? READ : WRITE;
>
> - rq = blk_get_request(drive->queue, rw, __GFP_WAIT);
> + rq = blk_get_request(drive->queue, rw, __GFP_RECLAIM);
> rq->cmd_type = REQ_TYPE_ATA_TASKFILE;
>
> /*
> @@ -441,7 +441,7 @@ int ide_raw_taskfile(ide_drive_t *drive, struct ide_cmd *cmd, u8 *buf,
> */
> if (nsect) {
> error = blk_rq_map_kern(drive->queue, rq, buf,
> - nsect * SECTOR_SIZE, __GFP_WAIT);
> + nsect * SECTOR_SIZE, __GFP_RECLAIM);
> if (error)
> goto put_req;
> }
> diff --git a/drivers/infiniband/hw/ipath/ipath_file_ops.c b/drivers/infiniband/hw/ipath/ipath_file_ops.c
> index 450d15965005..c11f6c58ce53 100644
> --- a/drivers/infiniband/hw/ipath/ipath_file_ops.c
> +++ b/drivers/infiniband/hw/ipath/ipath_file_ops.c
> @@ -905,7 +905,7 @@ static int ipath_create_user_egr(struct ipath_portdata *pd)
> * heavy filesystem activity makes these fail, and we can
> * use compound pages.
> */
> - gfp_flags = __GFP_WAIT | __GFP_IO | __GFP_COMP;
> + gfp_flags = __GFP_RECLAIM | __GFP_IO | __GFP_COMP;
>
> egrcnt = dd->ipath_rcvegrcnt;
> /* TID number offset for this port */
> diff --git a/drivers/infiniband/hw/qib/qib_init.c b/drivers/infiniband/hw/qib/qib_init.c
> index 7e00470adc30..4ff340fe904f 100644
> --- a/drivers/infiniband/hw/qib/qib_init.c
> +++ b/drivers/infiniband/hw/qib/qib_init.c
> @@ -1680,7 +1680,7 @@ int qib_setup_eagerbufs(struct qib_ctxtdata *rcd)
> * heavy filesystem activity makes these fail, and we can
> * use compound pages.
> */
> - gfp_flags = __GFP_WAIT | __GFP_IO | __GFP_COMP;
> + gfp_flags = __GFP_RECLAIM | __GFP_IO | __GFP_COMP;
>
> egrcnt = rcd->rcvegrcnt;
> egroff = rcd->rcvegr_tid_base;
> diff --git a/drivers/misc/vmw_balloon.c b/drivers/misc/vmw_balloon.c
> index 191617492181..5a312958c094 100644
> --- a/drivers/misc/vmw_balloon.c
> +++ b/drivers/misc/vmw_balloon.c
> @@ -85,7 +85,7 @@ MODULE_LICENSE("GPL");
>
> /*
> * Use __GFP_HIGHMEM to allow pages from HIGHMEM zone. We don't
> - * allow wait (__GFP_WAIT) for NOSLEEP page allocations. Use
> + * allow wait (__GFP_RECLAIM) for NOSLEEP page allocations. Use
> * __GFP_NOWARN, to suppress page allocation failure warnings.
> */
> #define VMW_PAGE_ALLOC_NOSLEEP (__GFP_HIGHMEM|__GFP_NOWARN)
> diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
> index cfadccef045c..26416e21295d 100644
> --- a/drivers/scsi/scsi_error.c
> +++ b/drivers/scsi/scsi_error.c
> @@ -1961,7 +1961,7 @@ static void scsi_eh_lock_door(struct scsi_device *sdev)
> struct request *req;
>
> /*
> - * blk_get_request with GFP_KERNEL (__GFP_WAIT) sleeps until a
> + * blk_get_request with GFP_KERNEL (__GFP_RECLAIM) sleeps until a
> * request becomes available
> */
> req = blk_get_request(sdev->request_queue, READ, GFP_KERNEL);
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index 448ebdaa3d69..2396259b682b 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -221,13 +221,13 @@ int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
> int write = (data_direction == DMA_TO_DEVICE);
> int ret = DRIVER_ERROR << 24;
>
> - req = blk_get_request(sdev->request_queue, write, __GFP_WAIT);
> + req = blk_get_request(sdev->request_queue, write, __GFP_RECLAIM);
> if (IS_ERR(req))
> return ret;
> blk_rq_set_block_pc(req);
>
> if (bufflen && blk_rq_map_kern(sdev->request_queue, req,
> - buffer, bufflen, __GFP_WAIT))
> + buffer, bufflen, __GFP_RECLAIM))
> goto out;
>
> req->cmd_len = COMMAND_SIZE(cmd[0]);
> diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h b/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h
> index ed37d26eb20d..393270436a4b 100644
> --- a/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h
> +++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h
> @@ -113,7 +113,7 @@ do { \
> do { \
> LASSERT(!in_interrupt() || \
> ((size) <= LIBCFS_VMALLOC_SIZE && \
> - ((mask) & __GFP_WAIT) == 0)); \
> + ((mask) & __GFP_RECLAIM) == 0)); \
> } while (0)
>
> #define LIBCFS_ALLOC_POST(ptr, size) \
> diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
> index 35660da77921..92e284d0362e 100644
> --- a/fs/btrfs/extent_io.c
> +++ b/fs/btrfs/extent_io.c
> @@ -718,7 +718,7 @@ int clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
> if (start > end)
> goto out;
> spin_unlock(&tree->lock);
> - if (mask & __GFP_WAIT)
> + if (mask & __GFP_RECLAIM)
> cond_resched();
> goto again;
> }
> @@ -1028,7 +1028,7 @@ __set_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
> if (start > end)
> goto out;
> spin_unlock(&tree->lock);
> - if (mask & __GFP_WAIT)
> + if (mask & __GFP_RECLAIM)
> cond_resched();
> goto again;
> }
> @@ -1253,7 +1253,7 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
> if (start > end)
> goto out;
> spin_unlock(&tree->lock);
> - if (mask & __GFP_WAIT)
> + if (mask & __GFP_RECLAIM)
> cond_resched();
> first_iteration = false;
> goto again;
> diff --git a/fs/cachefiles/internal.h b/fs/cachefiles/internal.h
> index aecd0859eacb..9c4b737a54df 100644
> --- a/fs/cachefiles/internal.h
> +++ b/fs/cachefiles/internal.h
> @@ -30,7 +30,7 @@ extern unsigned cachefiles_debug;
> #define CACHEFILES_DEBUG_KLEAVE 2
> #define CACHEFILES_DEBUG_KDEBUG 4
>
> -#define cachefiles_gfp (__GFP_WAIT | __GFP_NORETRY | __GFP_NOMEMALLOC)
> +#define cachefiles_gfp (__GFP_RECLAIM | __GFP_NORETRY | __GFP_NOMEMALLOC)
>
> /*
> * node records
> diff --git a/fs/direct-io.c b/fs/direct-io.c
> index 745d2342651a..b97cf506a20e 100644
> --- a/fs/direct-io.c
> +++ b/fs/direct-io.c
> @@ -360,7 +360,7 @@ dio_bio_alloc(struct dio *dio, struct dio_submit *sdio,
>
> /*
> * bio_alloc() is guaranteed to return a bio when called with
> - * __GFP_WAIT and we request a valid number of vectors.
> + * __GFP_RECLAIM and we request a valid number of vectors.
> */
> bio = bio_alloc(GFP_KERNEL, nr_vecs);
>
> diff --git a/fs/nilfs2/mdt.h b/fs/nilfs2/mdt.h
> index fe529a87a208..03246cac3338 100644
> --- a/fs/nilfs2/mdt.h
> +++ b/fs/nilfs2/mdt.h
> @@ -72,7 +72,7 @@ static inline struct nilfs_mdt_info *NILFS_MDT(const struct inode *inode)
> }
>
> /* Default GFP flags using highmem */
> -#define NILFS_MDT_GFP (__GFP_WAIT | __GFP_IO | __GFP_HIGHMEM)
> +#define NILFS_MDT_GFP (__GFP_RECLAIM | __GFP_IO | __GFP_HIGHMEM)
>
> int nilfs_mdt_get_block(struct inode *, unsigned long, int,
> void (*init_block)(struct inode *,
> diff --git a/include/linux/gfp.h b/include/linux/gfp.h
> index dbd246a14e2f..e066f3afae73 100644
> --- a/include/linux/gfp.h
> +++ b/include/linux/gfp.h
> @@ -104,7 +104,7 @@ struct vm_area_struct;
> * can be cleared when the reclaiming of pages would cause unnecessary
> * disruption.
> */
> -#define __GFP_WAIT (__GFP_DIRECT_RECLAIM|__GFP_KSWAPD_RECLAIM)
> +#define __GFP_RECLAIM (__GFP_DIRECT_RECLAIM|__GFP_KSWAPD_RECLAIM)
> #define __GFP_DIRECT_RECLAIM ((__force gfp_t)___GFP_DIRECT_RECLAIM) /* Caller can reclaim */
> #define __GFP_KSWAPD_RECLAIM ((__force gfp_t)___GFP_KSWAPD_RECLAIM) /* kswapd can wake */
>
> @@ -123,12 +123,12 @@ struct vm_area_struct;
> */
> #define GFP_ATOMIC (__GFP_HIGH|__GFP_ATOMIC|__GFP_KSWAPD_RECLAIM)
> #define GFP_NOWAIT (__GFP_KSWAPD_RECLAIM)
> -#define GFP_NOIO (__GFP_WAIT)
> -#define GFP_NOFS (__GFP_WAIT | __GFP_IO)
> -#define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)
> -#define GFP_TEMPORARY (__GFP_WAIT | __GFP_IO | __GFP_FS | \
> +#define GFP_NOIO (__GFP_RECLAIM)
> +#define GFP_NOFS (__GFP_RECLAIM | __GFP_IO)
> +#define GFP_KERNEL (__GFP_RECLAIM | __GFP_IO | __GFP_FS)
> +#define GFP_TEMPORARY (__GFP_RECLAIM | __GFP_IO | __GFP_FS | \
> __GFP_RECLAIMABLE)
> -#define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
> +#define GFP_USER (__GFP_RECLAIM | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
> #define GFP_HIGHUSER (GFP_USER | __GFP_HIGHMEM)
> #define GFP_HIGHUSER_MOVABLE (GFP_HIGHUSER | __GFP_MOVABLE)
> #define GFP_IOFS (__GFP_IO | __GFP_FS)
> @@ -141,12 +141,12 @@ struct vm_area_struct;
> #define GFP_MOVABLE_SHIFT 3
>
> /* Control page allocator reclaim behavior */
> -#define GFP_RECLAIM_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS|\
> +#define GFP_RECLAIM_MASK (__GFP_RECLAIM|__GFP_HIGH|__GFP_IO|__GFP_FS|\
> __GFP_NOWARN|__GFP_REPEAT|__GFP_NOFAIL|\
> __GFP_NORETRY|__GFP_MEMALLOC|__GFP_NOMEMALLOC)
>
> /* Control slab gfp mask during early boot */
> -#define GFP_BOOT_MASK (__GFP_BITS_MASK & ~(__GFP_WAIT|__GFP_IO|__GFP_FS))
> +#define GFP_BOOT_MASK (__GFP_BITS_MASK & ~(__GFP_RECLAIM|__GFP_IO|__GFP_FS))
>
> /* Control allocation constraints */
> #define GFP_CONSTRAINT_MASK (__GFP_HARDWALL|__GFP_THISNODE)
> diff --git a/kernel/power/swap.c b/kernel/power/swap.c
> index 2f30ca91e4fa..3841af470cf9 100644
> --- a/kernel/power/swap.c
> +++ b/kernel/power/swap.c
> @@ -261,7 +261,7 @@ static int hib_submit_io(int rw, pgoff_t page_off, void *addr,
> struct bio *bio;
> int error = 0;
>
> - bio = bio_alloc(__GFP_WAIT | __GFP_HIGH, 1);
> + bio = bio_alloc(__GFP_RECLAIM | __GFP_HIGH, 1);
> bio->bi_iter.bi_sector = page_off * (PAGE_SIZE >> 9);
> bio->bi_bdev = hib_resume_bdev;
>
> @@ -360,7 +360,7 @@ static int write_page(void *buf, sector_t offset, struct hib_bio_batch *hb)
> return -ENOSPC;
>
> if (hb) {
> - src = (void *)__get_free_page(__GFP_WAIT | __GFP_NOWARN |
> + src = (void *)__get_free_page(__GFP_RECLAIM | __GFP_NOWARN |
> __GFP_NORETRY);
> if (src) {
> copy_page(src, buf);
> @@ -368,7 +368,7 @@ static int write_page(void *buf, sector_t offset, struct hib_bio_batch *hb)
> ret = hib_wait_io(hb); /* Free pages */
> if (ret)
> return ret;
> - src = (void *)__get_free_page(__GFP_WAIT |
> + src = (void *)__get_free_page(__GFP_RECLAIM |
> __GFP_NOWARN |
> __GFP_NORETRY);
> if (src) {
> @@ -676,7 +676,7 @@ static int save_image_lzo(struct swap_map_handle *handle,
> nr_threads = num_online_cpus() - 1;
> nr_threads = clamp_val(nr_threads, 1, LZO_THREADS);
>
> - page = (void *)__get_free_page(__GFP_WAIT | __GFP_HIGH);
> + page = (void *)__get_free_page(__GFP_RECLAIM | __GFP_HIGH);
> if (!page) {
> printk(KERN_ERR "PM: Failed to allocate LZO page\n");
> ret = -ENOMEM;
> @@ -979,7 +979,7 @@ static int get_swap_reader(struct swap_map_handle *handle,
> last = tmp;
>
> tmp->map = (struct swap_map_page *)
> - __get_free_page(__GFP_WAIT | __GFP_HIGH);
> + __get_free_page(__GFP_RECLAIM | __GFP_HIGH);
> if (!tmp->map) {
> release_swap_reader(handle);
> return -ENOMEM;
> @@ -1246,8 +1246,8 @@ static int load_image_lzo(struct swap_map_handle *handle,
>
> for (i = 0; i < read_pages; i++) {
> page[i] = (void *)__get_free_page(i < LZO_CMP_PAGES ?
> - __GFP_WAIT | __GFP_HIGH :
> - __GFP_WAIT | __GFP_NOWARN |
> + __GFP_RECLAIM | __GFP_HIGH :
> + __GFP_RECLAIM | __GFP_NOWARN |
> __GFP_NORETRY);
>
> if (!page[i]) {
> diff --git a/lib/percpu_ida.c b/lib/percpu_ida.c
> index f75715131f20..6d40944960de 100644
> --- a/lib/percpu_ida.c
> +++ b/lib/percpu_ida.c
> @@ -135,7 +135,7 @@ static inline unsigned alloc_local_tag(struct percpu_ida_cpu *tags)
> * TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE, of course).
> *
> * @gfp indicates whether or not to wait until a free id is available (it's not
> - * used for internal memory allocations); thus if passed __GFP_WAIT we may sleep
> + * used for internal memory allocations); thus if passed __GFP_RECLAIM we may sleep
> * however long it takes until another thread frees an id (same semantics as a
> * mempool).
> *
> diff --git a/mm/failslab.c b/mm/failslab.c
> index fefaabaab76d..69f083146a37 100644
> --- a/mm/failslab.c
> +++ b/mm/failslab.c
> @@ -3,11 +3,11 @@
>
> static struct {
> struct fault_attr attr;
> - u32 ignore_gfp_wait;
> + u32 ignore_gfp_reclaim;
> int cache_filter;
> } failslab = {
> .attr = FAULT_ATTR_INITIALIZER,
> - .ignore_gfp_wait = 1,
> + .ignore_gfp_reclaim = 1,
> .cache_filter = 0,
> };
>
> @@ -16,7 +16,7 @@ bool should_failslab(size_t size, gfp_t gfpflags, unsigned long cache_flags)
> if (gfpflags & __GFP_NOFAIL)
> return false;
>
> - if (failslab.ignore_gfp_wait && (gfpflags & __GFP_WAIT))
> + if (failslab.ignore_gfp_reclaim && (gfpflags & __GFP_RECLAIM))
> return false;
>
> if (failslab.cache_filter && !(cache_flags & SLAB_FAILSLAB))
> @@ -42,7 +42,7 @@ static int __init failslab_debugfs_init(void)
> return PTR_ERR(dir);
>
> if (!debugfs_create_bool("ignore-gfp-wait", mode, dir,
> - &failslab.ignore_gfp_wait))
> + &failslab.ignore_gfp_reclaim))
> goto fail;
> if (!debugfs_create_bool("cache-filter", mode, dir,
> &failslab.cache_filter))
> diff --git a/mm/filemap.c b/mm/filemap.c
> index 1283fc825458..986fe45a5d27 100644
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -2673,7 +2673,7 @@ EXPORT_SYMBOL(generic_file_write_iter);
> * page is known to the local caching routines.
> *
> * The @gfp_mask argument specifies whether I/O may be performed to release
> - * this page (__GFP_IO), and whether the call may block (__GFP_WAIT & __GFP_FS).
> + * this page (__GFP_IO), and whether the call may block (__GFP_RECLAIM & __GFP_FS).
> *
> */
> int try_to_release_page(struct page *page, gfp_t gfp_mask)
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index c107094f79ba..f563473b5e99 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -767,7 +767,7 @@ static int __do_huge_pmd_anonymous_page(struct mm_struct *mm,
>
> static inline gfp_t alloc_hugepage_gfpmask(int defrag, gfp_t extra_gfp)
> {
> - return (GFP_TRANSHUGE & ~(defrag ? 0 : __GFP_WAIT)) | extra_gfp;
> + return (GFP_TRANSHUGE & ~(defrag ? 0 : __GFP_RECLAIM)) | extra_gfp;
> }
>
> /* Caller must hold page table lock. */
> diff --git a/mm/migrate.c b/mm/migrate.c
> index ee401e4e5ef1..e92b55868c6d 100644
> --- a/mm/migrate.c
> +++ b/mm/migrate.c
> @@ -1734,7 +1734,7 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm,
> goto out_dropref;
>
> new_page = alloc_pages_node(node,
> - (GFP_TRANSHUGE | __GFP_THISNODE) & ~__GFP_WAIT,
> + (GFP_TRANSHUGE | __GFP_THISNODE) & ~__GFP_RECLAIM,
> HPAGE_PMD_ORDER);
> if (!new_page)
> goto out_fail;
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index ccd235d02923..17064a3f4909 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -2120,11 +2120,11 @@ static struct {
> struct fault_attr attr;
>
> u32 ignore_gfp_highmem;
> - u32 ignore_gfp_wait;
> + u32 ignore_gfp_reclaim;
> u32 min_order;
> } fail_page_alloc = {
> .attr = FAULT_ATTR_INITIALIZER,
> - .ignore_gfp_wait = 1,
> + .ignore_gfp_reclaim = 1,
> .ignore_gfp_highmem = 1,
> .min_order = 1,
> };
> @@ -2143,7 +2143,7 @@ static bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
> return false;
> if (fail_page_alloc.ignore_gfp_highmem && (gfp_mask & __GFP_HIGHMEM))
> return false;
> - if (fail_page_alloc.ignore_gfp_wait && (gfp_mask & (__GFP_ATOMIC|__GFP_DIRECT_RECLAIM)))
> + if (fail_page_alloc.ignore_gfp_reclaim && (gfp_mask & (__GFP_ATOMIC|__GFP_DIRECT_RECLAIM)))
> return false;
>
> return should_fail(&fail_page_alloc.attr, 1 << order);
> @@ -2162,7 +2162,7 @@ static int __init fail_page_alloc_debugfs(void)
> return PTR_ERR(dir);
>
> if (!debugfs_create_bool("ignore-gfp-wait", mode, dir,
> - &fail_page_alloc.ignore_gfp_wait))
> + &fail_page_alloc.ignore_gfp_reclaim))
> goto fail;
> if (!debugfs_create_bool("ignore-gfp-highmem", mode, dir,
> &fail_page_alloc.ignore_gfp_highmem))
> @@ -2459,7 +2459,7 @@ void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...)
> if (test_thread_flag(TIF_MEMDIE) ||
> (current->flags & (PF_MEMALLOC | PF_EXITING)))
> filter &= ~SHOW_MEM_FILTER_NODES;
> - if (in_interrupt() || !(gfp_mask & __GFP_WAIT) || (gfp_mask & __GFP_ATOMIC))
> + if (in_interrupt() || !(gfp_mask & __GFP_RECLAIM) || (gfp_mask & __GFP_ATOMIC))
> filter &= ~SHOW_MEM_FILTER_NODES;
>
> if (fmt) {
> diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
> index d8e2e3918ce2..4bee2392dbb2 100644
> --- a/net/netlink/af_netlink.c
> +++ b/net/netlink/af_netlink.c
> @@ -2061,7 +2061,7 @@ int netlink_broadcast_filtered(struct sock *ssk, struct sk_buff *skb, u32 portid
> consume_skb(info.skb2);
>
> if (info.delivered) {
> - if (info.congested && (allocation & __GFP_WAIT))
> + if (info.congested && (allocation & __GFP_RECLAIM))
> yield();
> return 0;
> }
> diff --git a/net/rxrpc/ar-connection.c b/net/rxrpc/ar-connection.c
> index 6631f4f1e39b..b5cd65401a28 100644
> --- a/net/rxrpc/ar-connection.c
> +++ b/net/rxrpc/ar-connection.c
> @@ -500,7 +500,7 @@ int rxrpc_connect_call(struct rxrpc_sock *rx,
> if (bundle->num_conns >= 20) {
> _debug("too many conns");
>
> - if (!(gfp & __GFP_WAIT)) {
> + if (!(gfp & __GFP_RECLAIM)) {
> _leave(" = -EAGAIN");
> return -EAGAIN;
> }
> diff --git a/security/integrity/ima/ima_crypto.c b/security/integrity/ima/ima_crypto.c
> index e24121afb2f2..6eb62936c672 100644
> --- a/security/integrity/ima/ima_crypto.c
> +++ b/security/integrity/ima/ima_crypto.c
> @@ -126,7 +126,7 @@ static void *ima_alloc_pages(loff_t max_size, size_t *allocated_size,
> {
> void *ptr;
> int order = ima_maxorder;
> - gfp_t gfp_mask = __GFP_WAIT | __GFP_NOWARN | __GFP_NORETRY;
> + gfp_t gfp_mask = __GFP_RECLAIM | __GFP_NOWARN | __GFP_NORETRY;
>
> if (order)
> order = min(get_order(max_size), order);
> --
> 2.4.6
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
Michal Hocko
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists