On Fri, Jun 07, 2013 at 10:25:50AM +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
>
> xfs_db does not have the IO infrastructure to calculate metadata
> CRCs after modifying metadata. Hence xfs_db can only run in
> read-only mode on filesystems with version 5 superblocks.
>
> To fix this, xfs_db needs to have it's IO engine converted to use
> the buffer based IO provided by libxfs rather than rolling it's own
> IO routines. That is future work, so until this conversion is done,
> only allow xfs_db to run in read-only mode on v5 filesystems.
>
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
Another one for the TODO list.
Reviewed-by: Ben Myers <bpm@xxxxxxx>
> ---
> db/init.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/db/init.c b/db/init.c
> index 0e9e1a2..1033f3a 100644
> --- a/db/init.c
> +++ b/db/init.c
> @@ -132,6 +132,21 @@ init(
> exit(EXIT_FAILURE);
> }
>
> + /*
> + * Don't allow modifications to CRC enabled filesystems until we support
> + * CRC recalculation in the IO path. Unless, of course, the user is in
> + * the process of hitting us with a big hammer.
> + */
> + if (XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_5 &&
> + !(x.isreadonly & LIBXFS_ISREADONLY)) {
> + fprintf(stderr,
> + _("%s: modifications to %s are not supported in thi version.\n"
this
> + "Use \"-r\" to run %s in read-only mode on this filesystem .\n"),
^ extra space
> + progname, fsdevice, progname);
> + if (!force)
> + exit(EXIT_FAILURE);
> + }
> +
> mp = libxfs_mount(&xmount, sbp, x.ddev, x.logdev, x.rtdev,
> LIBXFS_MOUNT_ROOTINOS | LIBXFS_MOUNT_DEBUGGER);
> if (!mp) {
> --
> 1.7.10.4
>
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs
|