Re: [PATCH] nfs/blocklayout: Use the passed in gfp flags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Le 21/07/2023 à 19:59, Christophe JAILLET a écrit :
Le 21/07/2023 à 19:28, Anna Schumaker a écrit :
Hi Dan,

On Fri, Jul 21, 2023 at 10:58 AM Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:

This allocation should use the passed in GFP_ flags instead of
GFP_KERNEL.  All the callers that I reviewed passed GFP_KERNEL as the
allocation flags so this might not affect runtime, but it's still worth
cleaning up.

If all the callers are passing GFP_KERNEL anyway, then can we instead
remove the gfp_mask argument from these functions?

Hi,

I won't be able to remind the (verrrrrryyyyy long) call chain, but I managed to arrive up to [1].
So, *if I'm right*, 'gfp_mask' is NOT always GFP_KERNEL.

I can't remind the call chain myself, but my browser history can.

gfp_mask is propagated in all the below functions:

filelayout_pg_init_write()
--> fl_pnfs_update_layout(..., GFP_NOFS)
--> filelayout_check_deviceid()
--> nfs4_find_get_deviceid()
--> nfs4_get_device_info()
--> alloc_deviceid_node()	function pointer in struct pnfs_layoutdriver_type
--> bl_alloc_deviceid_node()
--> bl_parse_deviceid()
--> bl_parse_slice()  /  bl_parse_concat()

CJ


[1]: https://elixir.bootlin.com/linux/v6.5-rc1/source/fs/nfs/filelayout/filelayout.c#L904

Just my 2c,

CJ


Anna


Fixes: 5c83746a0cf2 ("pnfs/blocklayout: in-kernel GETDEVICEINFO XDR parsing") Signed-off-by: Dan Carpenter <dan.carpenter-QSEj5FYQhm4dnm+yROfE0A@xxxxxxxxxxxxxxxx>
---
  fs/nfs/blocklayout/dev.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/blocklayout/dev.c b/fs/nfs/blocklayout/dev.c
index 70f5563a8e81..65cbb5607a5f 100644
--- a/fs/nfs/blocklayout/dev.c
+++ b/fs/nfs/blocklayout/dev.c
@@ -404,7 +404,7 @@ bl_parse_concat(struct nfs_server *server, struct pnfs_block_dev *d,
         int ret, i;

         d->children = kcalloc(v->concat.volumes_count,
-                       sizeof(struct pnfs_block_dev), GFP_KERNEL);
+                       sizeof(struct pnfs_block_dev), gfp_mask);
         if (!d->children)
                 return -ENOMEM;

@@ -433,7 +433,7 @@ bl_parse_stripe(struct nfs_server *server, struct pnfs_block_dev *d,
         int ret, i;

         d->children = kcalloc(v->stripe.volumes_count,
-                       sizeof(struct pnfs_block_dev), GFP_KERNEL);
+                       sizeof(struct pnfs_block_dev), gfp_mask);
         if (!d->children)
                 return -ENOMEM;

--
2.39.2







[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux