* [PATCH V2] xfs: Remove kmem_zalloc_large()
@ 2020-08-26 16:14 Carlos Maiolino
2020-08-26 16:45 ` Darrick J. Wong
2020-08-26 22:00 ` Dave Chinner
0 siblings, 2 replies; 3+ messages in thread
From: Carlos Maiolino @ 2020-08-26 16:14 UTC (permalink / raw)
To: linux-xfs
This patch aims to replace kmem_zalloc_large() with global kernel memory
API. So, all its callers are now using kvzalloc() directly, so kmalloc()
fallsback to vmalloc() automatically.
Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
---
Changelog:
V2:
Remove __GFP_RETRY_MAYFAIL from the kvzalloc() calls
fs/xfs/kmem.h | 6 ------
fs/xfs/scrub/symlink.c | 3 ++-
fs/xfs/xfs_acl.c | 2 +-
fs/xfs/xfs_ioctl.c | 4 ++--
fs/xfs/xfs_rtalloc.c | 2 +-
5 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/fs/xfs/kmem.h b/fs/xfs/kmem.h
index fb1d066770723..38007117697ef 100644
--- a/fs/xfs/kmem.h
+++ b/fs/xfs/kmem.h
@@ -71,12 +71,6 @@ kmem_zalloc(size_t size, xfs_km_flags_t flags)
return kmem_alloc(size, flags | KM_ZERO);
}
-static inline void *
-kmem_zalloc_large(size_t size, xfs_km_flags_t flags)
-{
- return kmem_alloc_large(size, flags | KM_ZERO);
-}
-
/*
* Zone interfaces
*/
diff --git a/fs/xfs/scrub/symlink.c b/fs/xfs/scrub/symlink.c
index 5641ae512c9ef..5a721a9adea78 100644
--- a/fs/xfs/scrub/symlink.c
+++ b/fs/xfs/scrub/symlink.c
@@ -22,11 +22,12 @@ xchk_setup_symlink(
struct xfs_inode *ip)
{
/* Allocate the buffer without the inode lock held. */
- sc->buf = kmem_zalloc_large(XFS_SYMLINK_MAXLEN + 1, 0);
+ sc->buf = kvzalloc(XFS_SYMLINK_MAXLEN + 1, GFP_KERNEL);
if (!sc->buf)
return -ENOMEM;
return xchk_setup_inode_contents(sc, ip, 0);
+
}
/* Symbolic links. */
diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c
index d4c687b5cd067..c544951a0c07f 100644
--- a/fs/xfs/xfs_acl.c
+++ b/fs/xfs/xfs_acl.c
@@ -192,7 +192,7 @@ __xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
if (acl) {
args.valuelen = XFS_ACL_SIZE(acl->a_count);
- args.value = kmem_zalloc_large(args.valuelen, 0);
+ args.value = kvzalloc(args.valuelen, GFP_KERNEL);
if (!args.value)
return -ENOMEM;
xfs_acl_to_disk(args.value, acl);
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index 6f22a66777cd0..4428b893f8372 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -404,7 +404,7 @@ xfs_ioc_attr_list(
context.cursor.offset))
return -EINVAL;
- buffer = kmem_zalloc_large(bufsize, 0);
+ buffer = kvzalloc(bufsize, GFP_KERNEL);
if (!buffer)
return -ENOMEM;
@@ -1690,7 +1690,7 @@ xfs_ioc_getbmap(
if (bmx.bmv_count > ULONG_MAX / recsize)
return -ENOMEM;
- buf = kmem_zalloc_large(bmx.bmv_count * sizeof(*buf), 0);
+ buf = kvzalloc(bmx.bmv_count * sizeof(*buf), GFP_KERNEL);
if (!buf)
return -ENOMEM;
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
index 6209e7b6b895b..0558f92ecdb83 100644
--- a/fs/xfs/xfs_rtalloc.c
+++ b/fs/xfs/xfs_rtalloc.c
@@ -862,7 +862,7 @@ xfs_alloc_rsum_cache(
* lower bound on the minimum level with any free extents. We can
* continue without the cache if it couldn't be allocated.
*/
- mp->m_rsum_cache = kmem_zalloc_large(rbmblocks, 0);
+ mp->m_rsum_cache = kvzalloc(rbmblocks, GFP_KERNEL);
if (!mp->m_rsum_cache)
xfs_warn(mp, "could not allocate realtime summary cache");
}
--
2.26.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH V2] xfs: Remove kmem_zalloc_large()
2020-08-26 16:14 [PATCH V2] xfs: Remove kmem_zalloc_large() Carlos Maiolino
@ 2020-08-26 16:45 ` Darrick J. Wong
2020-08-26 22:00 ` Dave Chinner
1 sibling, 0 replies; 3+ messages in thread
From: Darrick J. Wong @ 2020-08-26 16:45 UTC (permalink / raw)
To: Carlos Maiolino; +Cc: linux-xfs
On Wed, Aug 26, 2020 at 06:14:02PM +0200, Carlos Maiolino wrote:
> This patch aims to replace kmem_zalloc_large() with global kernel memory
> API. So, all its callers are now using kvzalloc() directly, so kmalloc()
> fallsback to vmalloc() automatically.
>
> Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
> ---
>
> Changelog:
>
> V2:
> Remove __GFP_RETRY_MAYFAIL from the kvzalloc() calls
>
> fs/xfs/kmem.h | 6 ------
> fs/xfs/scrub/symlink.c | 3 ++-
> fs/xfs/xfs_acl.c | 2 +-
> fs/xfs/xfs_ioctl.c | 4 ++--
> fs/xfs/xfs_rtalloc.c | 2 +-
> 5 files changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/fs/xfs/kmem.h b/fs/xfs/kmem.h
> index fb1d066770723..38007117697ef 100644
> --- a/fs/xfs/kmem.h
> +++ b/fs/xfs/kmem.h
> @@ -71,12 +71,6 @@ kmem_zalloc(size_t size, xfs_km_flags_t flags)
> return kmem_alloc(size, flags | KM_ZERO);
> }
>
> -static inline void *
> -kmem_zalloc_large(size_t size, xfs_km_flags_t flags)
> -{
> - return kmem_alloc_large(size, flags | KM_ZERO);
> -}
> -
> /*
> * Zone interfaces
> */
> diff --git a/fs/xfs/scrub/symlink.c b/fs/xfs/scrub/symlink.c
> index 5641ae512c9ef..5a721a9adea78 100644
> --- a/fs/xfs/scrub/symlink.c
> +++ b/fs/xfs/scrub/symlink.c
> @@ -22,11 +22,12 @@ xchk_setup_symlink(
> struct xfs_inode *ip)
> {
> /* Allocate the buffer without the inode lock held. */
> - sc->buf = kmem_zalloc_large(XFS_SYMLINK_MAXLEN + 1, 0);
> + sc->buf = kvzalloc(XFS_SYMLINK_MAXLEN + 1, GFP_KERNEL);
> if (!sc->buf)
> return -ENOMEM;
>
> return xchk_setup_inode_contents(sc, ip, 0);
> +
Nit: empty line added here.
Everything else looks fine to me.
--D
> }
>
> /* Symbolic links. */
> diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c
> index d4c687b5cd067..c544951a0c07f 100644
> --- a/fs/xfs/xfs_acl.c
> +++ b/fs/xfs/xfs_acl.c
> @@ -192,7 +192,7 @@ __xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
>
> if (acl) {
> args.valuelen = XFS_ACL_SIZE(acl->a_count);
> - args.value = kmem_zalloc_large(args.valuelen, 0);
> + args.value = kvzalloc(args.valuelen, GFP_KERNEL);
> if (!args.value)
> return -ENOMEM;
> xfs_acl_to_disk(args.value, acl);
> diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
> index 6f22a66777cd0..4428b893f8372 100644
> --- a/fs/xfs/xfs_ioctl.c
> +++ b/fs/xfs/xfs_ioctl.c
> @@ -404,7 +404,7 @@ xfs_ioc_attr_list(
> context.cursor.offset))
> return -EINVAL;
>
> - buffer = kmem_zalloc_large(bufsize, 0);
> + buffer = kvzalloc(bufsize, GFP_KERNEL);
> if (!buffer)
> return -ENOMEM;
>
> @@ -1690,7 +1690,7 @@ xfs_ioc_getbmap(
> if (bmx.bmv_count > ULONG_MAX / recsize)
> return -ENOMEM;
>
> - buf = kmem_zalloc_large(bmx.bmv_count * sizeof(*buf), 0);
> + buf = kvzalloc(bmx.bmv_count * sizeof(*buf), GFP_KERNEL);
> if (!buf)
> return -ENOMEM;
>
> diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
> index 6209e7b6b895b..0558f92ecdb83 100644
> --- a/fs/xfs/xfs_rtalloc.c
> +++ b/fs/xfs/xfs_rtalloc.c
> @@ -862,7 +862,7 @@ xfs_alloc_rsum_cache(
> * lower bound on the minimum level with any free extents. We can
> * continue without the cache if it couldn't be allocated.
> */
> - mp->m_rsum_cache = kmem_zalloc_large(rbmblocks, 0);
> + mp->m_rsum_cache = kvzalloc(rbmblocks, GFP_KERNEL);
> if (!mp->m_rsum_cache)
> xfs_warn(mp, "could not allocate realtime summary cache");
> }
> --
> 2.26.2
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH V2] xfs: Remove kmem_zalloc_large()
2020-08-26 16:14 [PATCH V2] xfs: Remove kmem_zalloc_large() Carlos Maiolino
2020-08-26 16:45 ` Darrick J. Wong
@ 2020-08-26 22:00 ` Dave Chinner
1 sibling, 0 replies; 3+ messages in thread
From: Dave Chinner @ 2020-08-26 22:00 UTC (permalink / raw)
To: Carlos Maiolino; +Cc: linux-xfs
On Wed, Aug 26, 2020 at 06:14:02PM +0200, Carlos Maiolino wrote:
> This patch aims to replace kmem_zalloc_large() with global kernel memory
> API. So, all its callers are now using kvzalloc() directly, so kmalloc()
> fallsback to vmalloc() automatically.
>
> Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
> ---
>
> Changelog:
>
> V2:
> Remove __GFP_RETRY_MAYFAIL from the kvzalloc() calls
>
> fs/xfs/kmem.h | 6 ------
> fs/xfs/scrub/symlink.c | 3 ++-
> fs/xfs/xfs_acl.c | 2 +-
> fs/xfs/xfs_ioctl.c | 4 ++--
> fs/xfs/xfs_rtalloc.c | 2 +-
> 5 files changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/fs/xfs/kmem.h b/fs/xfs/kmem.h
> index fb1d066770723..38007117697ef 100644
> --- a/fs/xfs/kmem.h
> +++ b/fs/xfs/kmem.h
> @@ -71,12 +71,6 @@ kmem_zalloc(size_t size, xfs_km_flags_t flags)
> return kmem_alloc(size, flags | KM_ZERO);
> }
>
> -static inline void *
> -kmem_zalloc_large(size_t size, xfs_km_flags_t flags)
> -{
> - return kmem_alloc_large(size, flags | KM_ZERO);
> -}
> -
> /*
> * Zone interfaces
> */
> diff --git a/fs/xfs/scrub/symlink.c b/fs/xfs/scrub/symlink.c
> index 5641ae512c9ef..5a721a9adea78 100644
> --- a/fs/xfs/scrub/symlink.c
> +++ b/fs/xfs/scrub/symlink.c
> @@ -22,11 +22,12 @@ xchk_setup_symlink(
> struct xfs_inode *ip)
> {
> /* Allocate the buffer without the inode lock held. */
> - sc->buf = kmem_zalloc_large(XFS_SYMLINK_MAXLEN + 1, 0);
> + sc->buf = kvzalloc(XFS_SYMLINK_MAXLEN + 1, GFP_KERNEL);
> if (!sc->buf)
> return -ENOMEM;
>
> return xchk_setup_inode_contents(sc, ip, 0);
> +
> }
With the extra added line removed,
Reviewed-by: Dave Chinner <dchinner@redhat.com>
--
Dave Chinner
david@fromorbit.com
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-08-26 22:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-26 16:14 [PATCH V2] xfs: Remove kmem_zalloc_large() Carlos Maiolino
2020-08-26 16:45 ` Darrick J. Wong
2020-08-26 22:00 ` Dave Chinner
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.