From: Allison Henderson <allison.henderson@oracle.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 01/22] xfs: query the per-AG reservation counters
Date: Sun, 23 Jul 2017 09:16:17 -0700 [thread overview]
Message-ID: <a75b8d4e-a2ad-2daf-b2d0-ddf7ac11d7a6@oracle.com> (raw)
In-Reply-To: <150061191503.14732.3422428110288650460.stgit@magnolia>
Looks good to me. This one hasn't changed much since v7. You can add
my review:
Reviewed by: Allison Henderson <allison.henderson@oracle.com>
On 7/20/2017 9:38 PM, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
>
> Establish an ioctl for userspace to query the original and current
> per-AG reservation counts. This will be used by xfs_scrub to
> check that the vfs counters are at least somewhat sane.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
> fs/xfs/libxfs/xfs_fs.h | 10 ++++++++++
> fs/xfs/xfs_fsops.c | 29 +++++++++++++++++++++++++++++
> fs/xfs/xfs_fsops.h | 2 ++
> fs/xfs/xfs_ioctl.c | 16 ++++++++++++++++
> fs/xfs/xfs_ioctl32.c | 1 +
> 5 files changed, 58 insertions(+)
>
>
> diff --git a/fs/xfs/libxfs/xfs_fs.h b/fs/xfs/libxfs/xfs_fs.h
> index 8c61f21..5dedab9 100644
> --- a/fs/xfs/libxfs/xfs_fs.h
> +++ b/fs/xfs/libxfs/xfs_fs.h
> @@ -469,6 +469,15 @@ typedef struct xfs_swapext
> #define XFS_FSOP_GOING_FLAGS_NOLOGFLUSH 0x2 /* don't flush log nor data */
>
> /*
> + * AG reserved block counters
> + */
> +struct xfs_fsop_ag_resblks {
> + __u64 resblks; /* blocks reserved now */
> + __u64 resblks_orig; /* blocks reserved at mount time */
> + __u64 reserved[2];
> +};
> +
> +/*
> * ioctl limits
> */
> #ifdef XATTR_LIST_MAX
> @@ -543,6 +552,7 @@ typedef struct xfs_swapext
> #define XFS_IOC_ATTRMULTI_BY_HANDLE _IOW ('X', 123, struct xfs_fsop_attrmulti_handlereq)
> #define XFS_IOC_FSGEOMETRY _IOR ('X', 124, struct xfs_fsop_geom)
> #define XFS_IOC_GOINGDOWN _IOR ('X', 125, uint32_t)
> +#define XFS_IOC_GET_AG_RESBLKS _IOR ('X', 126, struct xfs_fsop_ag_resblks)
> /* XFS_IOC_GETFSUUID ---------- deprecated 140 */
>
>
> diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c
> index 8f22fc5..0920d59 100644
> --- a/fs/xfs/xfs_fsops.c
> +++ b/fs/xfs/xfs_fsops.c
> @@ -44,6 +44,7 @@
> #include "xfs_filestream.h"
> #include "xfs_rmap.h"
> #include "xfs_ag_resv.h"
> +#include "xfs_fs.h"
>
> /*
> * File system operations
> @@ -1046,3 +1047,31 @@ xfs_fs_unreserve_ag_blocks(
>
> return error;
> }
> +
> +/* Query the per-AG reservations to see how many blocks we have reserved. */
> +int
> +xfs_fs_get_ag_reserve_blocks(
> + struct xfs_mount *mp,
> + struct xfs_fsop_ag_resblks *out)
> +{
> + struct xfs_ag_resv *r;
> + struct xfs_perag *pag;
> + xfs_agnumber_t agno;
> +
> + out->resblks = 0;
> + out->resblks_orig = 0;
> + out->reserved[0] = out->reserved[1] = 0;
> +
> + for (agno = 0; agno < mp->m_sb.sb_agcount; agno++) {
> + pag = xfs_perag_get(mp, agno);
> + r = xfs_perag_resv(pag, XFS_AG_RESV_METADATA);
> + out->resblks += r->ar_reserved;
> + out->resblks_orig += r->ar_asked;
> + r = xfs_perag_resv(pag, XFS_AG_RESV_AGFL);
> + out->resblks += r->ar_reserved;
> + out->resblks_orig += r->ar_asked;
> + xfs_perag_put(pag);
> + }
> +
> + return 0;
> +}
> diff --git a/fs/xfs/xfs_fsops.h b/fs/xfs/xfs_fsops.h
> index 2954c13..c8f5e26 100644
> --- a/fs/xfs/xfs_fsops.h
> +++ b/fs/xfs/xfs_fsops.h
> @@ -25,6 +25,8 @@ extern int xfs_fs_counts(xfs_mount_t *mp, xfs_fsop_counts_t *cnt);
> extern int xfs_reserve_blocks(xfs_mount_t *mp, uint64_t *inval,
> xfs_fsop_resblks_t *outval);
> extern int xfs_fs_goingdown(xfs_mount_t *mp, uint32_t inflags);
> +extern int xfs_fs_get_ag_reserve_blocks(struct xfs_mount *mp,
> + struct xfs_fsop_ag_resblks *out);
>
> extern int xfs_fs_reserve_ag_blocks(struct xfs_mount *mp);
> extern int xfs_fs_unreserve_ag_blocks(struct xfs_mount *mp);
> diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
> index 9c0c7a9..cc00260 100644
> --- a/fs/xfs/xfs_ioctl.c
> +++ b/fs/xfs/xfs_ioctl.c
> @@ -1974,6 +1974,22 @@ xfs_file_ioctl(
> return 0;
> }
>
> + case XFS_IOC_GET_AG_RESBLKS: {
> + struct xfs_fsop_ag_resblks out;
> +
> + if (!capable(CAP_SYS_ADMIN))
> + return -EPERM;
> +
> + error = xfs_fs_get_ag_reserve_blocks(mp, &out);
> + if (error)
> + return error;
> +
> + if (copy_to_user(arg, &out, sizeof(out)))
> + return -EFAULT;
> +
> + return 0;
> + }
> +
> case XFS_IOC_FSGROWFSDATA: {
> xfs_growfs_data_t in;
>
> diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
> index fa0bc4d..e8b4de3 100644
> --- a/fs/xfs/xfs_ioctl32.c
> +++ b/fs/xfs/xfs_ioctl32.c
> @@ -556,6 +556,7 @@ xfs_file_compat_ioctl(
> case XFS_IOC_ERROR_INJECTION:
> case XFS_IOC_ERROR_CLEARALL:
> case FS_IOC_GETFSMAP:
> + case XFS_IOC_GET_AG_RESBLKS:
> return xfs_file_ioctl(filp, cmd, p);
> #ifndef BROKEN_X86_ALIGNMENT
> /* These are handled fine if no alignment issues */
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2017-07-23 16:16 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-21 4:38 [PATCH v8 00/22] xfs: online scrub support Darrick J. Wong
2017-07-21 4:38 ` [PATCH 01/22] xfs: query the per-AG reservation counters Darrick J. Wong
2017-07-23 16:16 ` Allison Henderson [this message]
2017-07-23 22:25 ` Dave Chinner
2017-07-24 19:07 ` Darrick J. Wong
2017-07-21 4:38 ` [PATCH 02/22] xfs: add scrub tracepoints Darrick J. Wong
2017-07-23 16:23 ` Allison Henderson
2017-07-21 4:38 ` [PATCH 03/22] xfs: create an ioctl to scrub AG metadata Darrick J. Wong
2017-07-23 16:37 ` Allison Henderson
2017-07-23 23:45 ` Dave Chinner
2017-07-24 21:14 ` Darrick J. Wong
2017-07-21 4:38 ` [PATCH 04/22] xfs: generic functions to scrub metadata and btrees Darrick J. Wong
2017-07-23 16:40 ` Allison Henderson
2017-07-24 1:05 ` Dave Chinner
2017-07-24 21:58 ` Darrick J. Wong
2017-07-24 23:15 ` Dave Chinner
2017-07-25 0:39 ` Darrick J. Wong
2017-07-21 4:39 ` [PATCH 05/22] xfs: scrub in-memory metadata buffers Darrick J. Wong
2017-07-23 16:48 ` Allison Henderson
2017-07-24 1:43 ` Dave Chinner
2017-07-24 22:36 ` Darrick J. Wong
2017-07-24 23:38 ` Dave Chinner
2017-07-25 0:14 ` Darrick J. Wong
2017-07-25 3:32 ` Dave Chinner
2017-07-25 5:27 ` Darrick J. Wong
2017-07-21 4:39 ` [PATCH 06/22] xfs: scrub the backup superblocks Darrick J. Wong
2017-07-23 16:50 ` Allison Henderson
2017-07-25 4:05 ` Dave Chinner
2017-07-25 5:42 ` Darrick J. Wong
2017-07-21 4:39 ` [PATCH 07/22] xfs: scrub AGF and AGFL Darrick J. Wong
2017-07-23 16:59 ` Allison Henderson
2017-07-21 4:39 ` [PATCH 08/22] xfs: scrub the AGI Darrick J. Wong
2017-07-23 17:02 ` Allison Henderson
2017-07-21 4:39 ` [PATCH 09/22] xfs: scrub free space btrees Darrick J. Wong
2017-07-23 17:09 ` Allison Henderson
2017-07-21 4:39 ` [PATCH 10/22] xfs: scrub inode btrees Darrick J. Wong
2017-07-23 17:15 ` Allison Henderson
2017-07-21 4:39 ` [PATCH 11/22] xfs: scrub rmap btrees Darrick J. Wong
2017-07-23 17:21 ` Allison Henderson
2017-07-21 4:39 ` [PATCH 12/22] xfs: scrub refcount btrees Darrick J. Wong
2017-07-23 17:25 ` Allison Henderson
2017-07-21 4:39 ` [PATCH 13/22] xfs: scrub inodes Darrick J. Wong
2017-07-23 17:38 ` Allison Henderson
2017-07-24 20:02 ` Darrick J. Wong
2017-07-21 4:40 ` [PATCH 14/22] xfs: scrub inode block mappings Darrick J. Wong
2017-07-23 17:41 ` Allison Henderson
2017-07-24 20:05 ` Darrick J. Wong
2017-07-21 4:40 ` [PATCH 15/22] xfs: scrub directory/attribute btrees Darrick J. Wong
2017-07-23 17:45 ` Allison Henderson
2017-07-21 4:40 ` [PATCH 16/22] xfs: scrub directory metadata Darrick J. Wong
2017-07-23 17:51 ` Allison Henderson
2017-07-21 4:40 ` [PATCH 17/22] xfs: scrub directory freespace Darrick J. Wong
2017-07-23 17:55 ` Allison Henderson
2017-07-21 4:40 ` [PATCH 18/22] xfs: scrub extended attributes Darrick J. Wong
2017-07-23 17:57 ` Allison Henderson
2017-07-21 4:40 ` [PATCH 19/22] xfs: scrub symbolic links Darrick J. Wong
2017-07-23 17:59 ` Allison Henderson
2017-07-21 4:40 ` [PATCH 20/22] xfs: scrub parent pointers Darrick J. Wong
2017-07-23 18:03 ` Allison Henderson
2017-07-21 4:40 ` [PATCH 21/22] xfs: scrub realtime bitmap/summary Darrick J. Wong
2017-07-23 18:05 ` Allison Henderson
2017-07-21 4:40 ` [PATCH 22/22] xfs: scrub quota information Darrick J. Wong
2017-07-23 18:07 ` Allison Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a75b8d4e-a2ad-2daf-b2d0-ddf7ac11d7a6@oracle.com \
--to=allison.henderson@oracle.com \
--cc=darrick.wong@oracle.com \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).