mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
ceph: use GFP_KERNEL consistently in __ceph_pool_perm_get()
__ceph_pool_perm_get() has six allocations for building OSD STAT requests, five of which used GFP_NOFS and one (the page vector allocation) used GFP_KERNEL, making them inconsistent. The function is only called from ceph_try_get_caps() and __ceph_get_caps(), both of which are in the user I/O path (read, write, fallocate, mmap fault), not in the writeback path. There is no risk of recursive writeback, so GFP_NOFS is unnecessarily restrictive. Use GFP_KERNEL consistently for all six allocations. Signed-off-by: Xiubo Li <xiubo.li@clyso.com> Reviewed-by: Alex Markuze <amarkuze@redhat.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
9be23efacb
commit
699411a353
|
|
@ -2464,7 +2464,7 @@ static int __ceph_pool_perm_get(struct ceph_inode_info *ci,
|
|||
}
|
||||
|
||||
rd_req = ceph_osdc_alloc_request(&fsc->client->osdc, NULL,
|
||||
1, false, GFP_NOFS);
|
||||
1, false, GFP_KERNEL);
|
||||
if (!rd_req) {
|
||||
err = -ENOMEM;
|
||||
goto out_unlock;
|
||||
|
|
@ -2477,12 +2477,12 @@ static int __ceph_pool_perm_get(struct ceph_inode_info *ci,
|
|||
rd_req->r_base_oloc.pool_ns = ceph_get_string(pool_ns);
|
||||
ceph_oid_printf(&rd_req->r_base_oid, "%llx.00000000", ci->i_vino.ino);
|
||||
|
||||
err = ceph_osdc_alloc_messages(rd_req, GFP_NOFS);
|
||||
err = ceph_osdc_alloc_messages(rd_req, GFP_KERNEL);
|
||||
if (err)
|
||||
goto out_unlock;
|
||||
|
||||
wr_req = ceph_osdc_alloc_request(&fsc->client->osdc, NULL,
|
||||
1, false, GFP_NOFS);
|
||||
1, false, GFP_KERNEL);
|
||||
if (!wr_req) {
|
||||
err = -ENOMEM;
|
||||
goto out_unlock;
|
||||
|
|
@ -2493,7 +2493,7 @@ static int __ceph_pool_perm_get(struct ceph_inode_info *ci,
|
|||
ceph_oloc_copy(&wr_req->r_base_oloc, &rd_req->r_base_oloc);
|
||||
ceph_oid_copy(&wr_req->r_base_oid, &rd_req->r_base_oid);
|
||||
|
||||
err = ceph_osdc_alloc_messages(wr_req, GFP_NOFS);
|
||||
err = ceph_osdc_alloc_messages(wr_req, GFP_KERNEL);
|
||||
if (err)
|
||||
goto out_unlock;
|
||||
|
||||
|
|
@ -2532,7 +2532,7 @@ static int __ceph_pool_perm_get(struct ceph_inode_info *ci,
|
|||
}
|
||||
|
||||
pool_ns_len = pool_ns ? pool_ns->len : 0;
|
||||
perm = kmalloc_flex(*perm, pool_ns, pool_ns_len + 1, GFP_NOFS);
|
||||
perm = kmalloc_flex(*perm, pool_ns, pool_ns_len + 1, GFP_KERNEL);
|
||||
if (!perm) {
|
||||
err = -ENOMEM;
|
||||
goto out_unlock;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user