* review: Simple patch to remove the dmapi support from xfsdump
@ 2006-08-02 20:48 Russell Cattelan
2006-08-04 4:18 ` Vlad Apostolov
2006-08-04 14:24 ` Bill Kendall
0 siblings, 2 replies; 18+ messages in thread
From: Russell Cattelan @ 2006-08-02 20:48 UTC (permalink / raw)
To: xfs
[-- Attachment #1: Type: text/plain, Size: 415 bytes --]
Since very few people run xfs with dmapi enabled it seem kind of silly
to force the install of the dmapi utils/libraries just for xfs dump/restore.
This patch stubs out the Hsm functions and adjusts the autoconf
to not fail in the case of missing dmapi headers/libs.
If somebody does trie to do a dump with the -a option a ERROR message
is issued, the dump does continue? this might not be the desired behavior.
[-- Attachment #2: no_dmapi --]
[-- Type: text/plain, Size: 6530 bytes --]
Index: xfs-cmds/xfsdump/aclocal.m4
===================================================================
--- xfs-cmds.orig/xfsdump/aclocal.m4 2006-08-02 14:51:34.000000000 -0500
+++ xfs-cmds/xfsdump/aclocal.m4 2006-08-02 14:58:11.250605250 -0500
@@ -161,27 +161,31 @@ AC_DEFUN([AC_PACKAGE_NEED_XFS_DMAPI_H],
[ AC_CHECK_HEADERS([xfs/dmapi.h])
if test "$ac_cv_header_xfs_dmapi_h" != yes; then
echo
- echo 'FATAL ERROR: could not find a valid DMAPI library header.'
- echo 'Install the data migration API (dmapi) development package.'
+ echo 'WARNING: could not find a valid DMAPI library header.'
+ echo 'xfsdump / xfsrestore will not support dmapi file systems.'
echo 'Alternatively, run "make install-dev" from the dmapi source.'
- exit 1
fi
])
AC_DEFUN([AC_PACKAGE_NEED_MAKEHANDLE_LIBDM],
- [ AC_CHECK_LIB(dm, dm_make_handle,, [
+ [ AC_CHECK_LIB(dm, dm_make_handle,
+ [have_dmapi=true
+ libdm="-ldm"
+ test -f `pwd`/../dmapi/libdm/libdm.la && \
+ libdm="`pwd`/../dmapi/libdm/libdm.la"
+ test -f ${libexecdir}${libdirsuffix}/libdm.la && \
+ libdm="${libexecdir}${libdirsuffix}/libdm.la"
+ ],
+ [
echo
- echo 'FATAL ERROR: could not find a valid DMAPI base library.'
- echo 'Install the data migration API (dmapi) library package.'
+ echo 'WARNING: could not find a valid DMAPI base library.'
+ echo 'xfsdump / xfsrestore will not support dmapi file systems.'
echo 'Alternatively, run "make install" from the dmapi source.'
- exit 1
+ have_dmapi=false
+ libdm = ""
])
- libdm="-ldm"
- test -f `pwd`/../dmapi/libdm/libdm.la && \
- libdm="`pwd`/../dmapi/libdm/libdm.la"
- test -f ${libexecdir}${libdirsuffix}/libdm.la && \
- libdm="${libexecdir}${libdirsuffix}/libdm.la"
AC_SUBST(libdm)
+ AC_SUBST(have_dmapi)
])
#
Index: xfs-cmds/xfsdump/common/hsmapi_noop.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ xfs-cmds/xfsdump/common/hsmapi_noop.c 2006-08-02 15:38:39.046333000 -0500
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2000-2004 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <xfs/xfs.h>
+#include <attr/attributes.h>
+#include <xfs/handle.h>
+
+#include "hsmapi.h"
+#include "mlog.h"
+#include "exit.h"
+
+typedef struct {
+} dmf_fs_ctxt_t;
+
+extern hsm_fs_ctxt_t *
+HsmInitFsysContext(
+const char *mountpoint,
+ int dumpversion)
+{
+ mlog( MLOG_NORMAL | MLOG_ERROR, _(
+ "-%c Dumping of DMF dualstate file not supported in this version\n"));
+ return NULL;
+}
+
+extern void
+HsmDeleteFsysContext(
+ hsm_fs_ctxt_t *contextp)
+{
+}
+
+extern int
+HsmEstimateFileSpace(
+ hsm_fs_ctxt_t *contextp,
+const xfs_bstat_t *statp,
+ off64_t *bytes)
+{
+ return 0;
+}
+
+extern int
+HsmEstimateFileOffset(
+ hsm_fs_ctxt_t *contextp,
+const xfs_bstat_t *statp,
+ off64_t bytecount,
+ off64_t *byteoffset)
+{
+ return 0;
+}
+
+extern hsm_f_ctxt_t *
+HsmAllocateFileContext(
+ hsm_fs_ctxt_t *contextp)
+{
+ return NULL;
+}
+
+extern void
+HsmDeleteFileContext(
+ hsm_f_ctxt_t *contextp)
+{
+}
+
+extern int
+HsmInitFileContext(
+ hsm_f_ctxt_t *contextp,
+const xfs_bstat_t *statp)
+{
+ return 0;
+}
+
+extern int
+HsmModifyInode(
+ hsm_f_ctxt_t *contextp,
+ xfs_bstat_t *statp)
+{
+ return 0;
+}
+
+extern int
+HsmModifyExtentMap(
+ hsm_f_ctxt_t *contextp,
+ struct getbmapx *bmap)
+{
+ return 0;
+}
+
+extern int
+HsmFilterExistingAttribute(
+ hsm_f_ctxt_t *hsm_f_ctxtp,
+const char *namep, /* attribute name */
+ u_int32_t valuesz, /* value size */
+ int flag,
+ int *skip_entry)
+{
+ return 0;
+}
+
+extern int
+HsmAddNewAttribute(
+ hsm_f_ctxt_t *hsm_f_ctxtp,
+ int cursor,
+ int flag,
+ char **namepp, /* pointer to new attribute name */
+ char **valuepp, /* pointer to its value */
+ u_int32_t *valueszp) /* pointer to the value size */
+{
+ return 0;
+}
+
+extern void
+HsmBeginRestoreFile(
+ bstat_t *bstatp,
+ int fd,
+ int *hsm_flagp)
+{
+}
+
+extern void
+HsmRestoreAttribute(
+ int flag, /* ext attr flags */
+ char *namep, /* pointer to new attribute name */
+ int *hsm_flagp)
+{
+}
+
+extern void
+HsmEndRestoreFile(
+ char *path,
+ int fd,
+ int *hsm_flagp)
+{
+}
Index: xfs-cmds/xfsdump/dump/Makefile
===================================================================
--- xfs-cmds.orig/xfsdump/dump/Makefile 2006-08-02 14:51:34.000000000 -0500
+++ xfs-cmds/xfsdump/dump/Makefile 2006-08-02 14:52:15.076345750 -0500
@@ -57,7 +57,6 @@ COMMON = \
fs.c \
getdents.c \
global.c \
- hsmapi.c \
lock.c \
main.c \
mlog.c \
@@ -69,6 +68,12 @@ COMMON = \
util.c \
sproc.c
+ifeq ($(HAVE_DMAPI), true)
+ COMMON += hsmapi.c
+else
+ COMMON += hsmapi_noop.c
+endif
+
LOCALS = \
content.c \
inomap.c \
Index: xfs-cmds/xfsdump/include/builddefs.in
===================================================================
--- xfs-cmds.orig/xfsdump/include/builddefs.in 2006-08-02 14:51:34.000000000 -0500
+++ xfs-cmds/xfsdump/include/builddefs.in 2006-08-02 14:52:15.080346000 -0500
@@ -66,6 +66,8 @@ ENABLE_GETTEXT = @enable_gettext@
HAVE_ZIPPED_MANPAGES = @have_zipped_manpages@
+HAVE_DMAPI = @have_dmapi@
+
LCFLAGS += -DXFS_BIG_FILES=1 -DXFS_BIG_FILESYSTEMS=1
ifeq ($(PKG_PLATFORM),linux)
Index: xfs-cmds/xfsdump/restore/Makefile
===================================================================
--- xfs-cmds.orig/xfsdump/restore/Makefile 2006-08-02 14:51:34.000000000 -0500
+++ xfs-cmds/xfsdump/restore/Makefile 2006-08-02 14:52:15.080346000 -0500
@@ -55,7 +55,6 @@ COMMON = \
fs.c \
getdents.c \
global.c \
- hsmapi.c \
lock.c \
main.c \
mlog.c \
@@ -67,6 +66,12 @@ COMMON = \
stream.c \
util.c
+ifeq ($(HAVE_DMAPI), true)
+ COMMON += hsmapi.c
+else
+ COMMON += hsmapi_noop.c
+endif
+
LOCALS = \
bag.c \
content.c \
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-02 20:48 review: Simple patch to remove the dmapi support from xfsdump Russell Cattelan
@ 2006-08-04 4:18 ` Vlad Apostolov
2006-08-04 14:10 ` Dean Roehrich
2006-08-04 14:24 ` Bill Kendall
1 sibling, 1 reply; 18+ messages in thread
From: Vlad Apostolov @ 2006-08-04 4:18 UTC (permalink / raw)
To: Russell Cattelan; +Cc: xfs
Hi Russel,
I don't understand in details the build changes but they seam to be fine.
In summary if the build system can find the DMAPI lib installed it will
use hsmapi_noop.c otherwise hsmapi.c.
The return code of HsmInitFileContext() stub probably should be non zero.
It is looking good.
Regards,
Vlad
Russell Cattelan wrote:
> Since very few people run xfs with dmapi enabled it seem kind of silly
> to force the install of the dmapi utils/libraries just for xfs
> dump/restore.
>
> This patch stubs out the Hsm functions and adjusts the autoconf
> to not fail in the case of missing dmapi headers/libs.
>
> If somebody does trie to do a dump with the -a option a ERROR message
> is issued, the dump does continue? this might not be the desired
> behavior.
>
> ------------------------------------------------------------------------
>
> Index: xfs-cmds/xfsdump/aclocal.m4
> ===================================================================
> --- xfs-cmds.orig/xfsdump/aclocal.m4 2006-08-02 14:51:34.000000000 -0500
> +++ xfs-cmds/xfsdump/aclocal.m4 2006-08-02 14:58:11.250605250 -0500
> @@ -161,27 +161,31 @@ AC_DEFUN([AC_PACKAGE_NEED_XFS_DMAPI_H],
> [ AC_CHECK_HEADERS([xfs/dmapi.h])
> if test "$ac_cv_header_xfs_dmapi_h" != yes; then
> echo
> - echo 'FATAL ERROR: could not find a valid DMAPI library header.'
> - echo 'Install the data migration API (dmapi) development package.'
> + echo 'WARNING: could not find a valid DMAPI library header.'
> + echo 'xfsdump / xfsrestore will not support dmapi file systems.'
> echo 'Alternatively, run "make install-dev" from the dmapi source.'
> - exit 1
> fi
> ])
>
> AC_DEFUN([AC_PACKAGE_NEED_MAKEHANDLE_LIBDM],
> - [ AC_CHECK_LIB(dm, dm_make_handle,, [
> + [ AC_CHECK_LIB(dm, dm_make_handle,
> + [have_dmapi=true
> + libdm="-ldm"
> + test -f `pwd`/../dmapi/libdm/libdm.la && \
> + libdm="`pwd`/../dmapi/libdm/libdm.la"
> + test -f ${libexecdir}${libdirsuffix}/libdm.la && \
> + libdm="${libexecdir}${libdirsuffix}/libdm.la"
> + ],
> + [
> echo
> - echo 'FATAL ERROR: could not find a valid DMAPI base library.'
> - echo 'Install the data migration API (dmapi) library package.'
> + echo 'WARNING: could not find a valid DMAPI base library.'
> + echo 'xfsdump / xfsrestore will not support dmapi file systems.'
> echo 'Alternatively, run "make install" from the dmapi source.'
> - exit 1
> + have_dmapi=false
> + libdm = ""
> ])
> - libdm="-ldm"
> - test -f `pwd`/../dmapi/libdm/libdm.la && \
> - libdm="`pwd`/../dmapi/libdm/libdm.la"
> - test -f ${libexecdir}${libdirsuffix}/libdm.la && \
> - libdm="${libexecdir}${libdirsuffix}/libdm.la"
> AC_SUBST(libdm)
> + AC_SUBST(have_dmapi)
> ])
>
> #
> Index: xfs-cmds/xfsdump/common/hsmapi_noop.c
> ===================================================================
> --- /dev/null 1970-01-01 00:00:00.000000000 +0000
> +++ xfs-cmds/xfsdump/common/hsmapi_noop.c 2006-08-02 15:38:39.046333000 -0500
> @@ -0,0 +1,147 @@
> +/*
> + * Copyright (c) 2000-2004 Silicon Graphics, Inc.
> + * All Rights Reserved.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it would be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write the Free Software Foundation,
> + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include <xfs/xfs.h>
> +#include <attr/attributes.h>
> +#include <xfs/handle.h>
> +
> +#include "hsmapi.h"
> +#include "mlog.h"
> +#include "exit.h"
> +
> +typedef struct {
> +} dmf_fs_ctxt_t;
> +
> +extern hsm_fs_ctxt_t *
> +HsmInitFsysContext(
> +const char *mountpoint,
> + int dumpversion)
> +{
> + mlog( MLOG_NORMAL | MLOG_ERROR, _(
> + "-%c Dumping of DMF dualstate file not supported in this version\n"));
> + return NULL;
> +}
> +
> +extern void
> +HsmDeleteFsysContext(
> + hsm_fs_ctxt_t *contextp)
> +{
> +}
> +
> +extern int
> +HsmEstimateFileSpace(
> + hsm_fs_ctxt_t *contextp,
> +const xfs_bstat_t *statp,
> + off64_t *bytes)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmEstimateFileOffset(
> + hsm_fs_ctxt_t *contextp,
> +const xfs_bstat_t *statp,
> + off64_t bytecount,
> + off64_t *byteoffset)
> +{
> + return 0;
> +}
> +
> +extern hsm_f_ctxt_t *
> +HsmAllocateFileContext(
> + hsm_fs_ctxt_t *contextp)
> +{
> + return NULL;
> +}
> +
> +extern void
> +HsmDeleteFileContext(
> + hsm_f_ctxt_t *contextp)
> +{
> +}
> +
> +extern int
> +HsmInitFileContext(
> + hsm_f_ctxt_t *contextp,
> +const xfs_bstat_t *statp)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmModifyInode(
> + hsm_f_ctxt_t *contextp,
> + xfs_bstat_t *statp)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmModifyExtentMap(
> + hsm_f_ctxt_t *contextp,
> + struct getbmapx *bmap)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmFilterExistingAttribute(
> + hsm_f_ctxt_t *hsm_f_ctxtp,
> +const char *namep, /* attribute name */
> + u_int32_t valuesz, /* value size */
> + int flag,
> + int *skip_entry)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmAddNewAttribute(
> + hsm_f_ctxt_t *hsm_f_ctxtp,
> + int cursor,
> + int flag,
> + char **namepp, /* pointer to new attribute name */
> + char **valuepp, /* pointer to its value */
> + u_int32_t *valueszp) /* pointer to the value size */
> +{
> + return 0;
> +}
> +
> +extern void
> +HsmBeginRestoreFile(
> + bstat_t *bstatp,
> + int fd,
> + int *hsm_flagp)
> +{
> +}
> +
> +extern void
> +HsmRestoreAttribute(
> + int flag, /* ext attr flags */
> + char *namep, /* pointer to new attribute name */
> + int *hsm_flagp)
> +{
> +}
> +
> +extern void
> +HsmEndRestoreFile(
> + char *path,
> + int fd,
> + int *hsm_flagp)
> +{
> +}
> Index: xfs-cmds/xfsdump/dump/Makefile
> ===================================================================
> --- xfs-cmds.orig/xfsdump/dump/Makefile 2006-08-02 14:51:34.000000000 -0500
> +++ xfs-cmds/xfsdump/dump/Makefile 2006-08-02 14:52:15.076345750 -0500
> @@ -57,7 +57,6 @@ COMMON = \
> fs.c \
> getdents.c \
> global.c \
> - hsmapi.c \
> lock.c \
> main.c \
> mlog.c \
> @@ -69,6 +68,12 @@ COMMON = \
> util.c \
> sproc.c
>
> +ifeq ($(HAVE_DMAPI), true)
> + COMMON += hsmapi.c
> +else
> + COMMON += hsmapi_noop.c
> +endif
> +
> LOCALS = \
> content.c \
> inomap.c \
> Index: xfs-cmds/xfsdump/include/builddefs.in
> ===================================================================
> --- xfs-cmds.orig/xfsdump/include/builddefs.in 2006-08-02 14:51:34.000000000 -0500
> +++ xfs-cmds/xfsdump/include/builddefs.in 2006-08-02 14:52:15.080346000 -0500
> @@ -66,6 +66,8 @@ ENABLE_GETTEXT = @enable_gettext@
>
> HAVE_ZIPPED_MANPAGES = @have_zipped_manpages@
>
> +HAVE_DMAPI = @have_dmapi@
> +
> LCFLAGS += -DXFS_BIG_FILES=1 -DXFS_BIG_FILESYSTEMS=1
>
> ifeq ($(PKG_PLATFORM),linux)
> Index: xfs-cmds/xfsdump/restore/Makefile
> ===================================================================
> --- xfs-cmds.orig/xfsdump/restore/Makefile 2006-08-02 14:51:34.000000000 -0500
> +++ xfs-cmds/xfsdump/restore/Makefile 2006-08-02 14:52:15.080346000 -0500
> @@ -55,7 +55,6 @@ COMMON = \
> fs.c \
> getdents.c \
> global.c \
> - hsmapi.c \
> lock.c \
> main.c \
> mlog.c \
> @@ -67,6 +66,12 @@ COMMON = \
> stream.c \
> util.c
>
> +ifeq ($(HAVE_DMAPI), true)
> + COMMON += hsmapi.c
> +else
> + COMMON += hsmapi_noop.c
> +endif
> +
> LOCALS = \
> bag.c \
> content.c \
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 4:18 ` Vlad Apostolov
@ 2006-08-04 14:10 ` Dean Roehrich
2006-08-04 15:36 ` Russell Cattelan
2006-08-07 0:00 ` Vlad Apostolov
0 siblings, 2 replies; 18+ messages in thread
From: Dean Roehrich @ 2006-08-04 14:10 UTC (permalink / raw)
To: Vlad Apostolov; +Cc: Russell Cattelan, xfs
On Fri, Aug 04, 2006 at 02:18:13PM +1000, Vlad Apostolov wrote:
> Hi Russel,
>
> I don't understand in details the build changes but they seam to be fine.
Vlad, why do they seem fine?
> In summary if the build system can find the DMAPI lib installed it will
> use hsmapi_noop.c otherwise hsmapi.c.
> The return code of HsmInitFileContext() stub probably should be non zero.
>
> It is looking good.
So this is determined at build time...so when you're using a version of
xfsdump/xfsrestore how do you know you're _not_ using one that is DMAPI-aware
_before_ you get into trouble with an invalid dump?
Assuming that issue is addressed, here's another: The libdm is a shared
object, so why not take advantage of that and load it with dlopen? Then the
issue is determined at runtime rather than build time. This is easy, and even
DMF does it this way.
Dean
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-02 20:48 review: Simple patch to remove the dmapi support from xfsdump Russell Cattelan
2006-08-04 4:18 ` Vlad Apostolov
@ 2006-08-04 14:24 ` Bill Kendall
1 sibling, 0 replies; 18+ messages in thread
From: Bill Kendall @ 2006-08-04 14:24 UTC (permalink / raw)
To: Russell Cattelan; +Cc: xfs
I'm concerned about distributions inadvertently turning off dmapi
support in their xfsdump builds. An explicit ./configure switch
to disable dmapi support would be better, IMHO. But either way
it would be a build-time decision rather than a run-time decision.
xfsdump only uses one DMAPI call (dm_make_handle), so this could
easily be done with dlopen/dlsym, and this would eliminate the
dmapi requirement for those not using -a. dmapi would still be
a build requirement for xfsdump.
Ideally, hsmapi.c wouldn't even exist in xfsdump -- the current
implementation belongs in DMF. There should be a plugin mechanism
added to xfsdump to allow the loading libraries that implement
the API in hsmapi.c (though that interface needs some work first).
Bill
Russell Cattelan wrote:
> Since very few people run xfs with dmapi enabled it seem kind of silly
> to force the install of the dmapi utils/libraries just for xfs
> dump/restore.
>
> This patch stubs out the Hsm functions and adjusts the autoconf
> to not fail in the case of missing dmapi headers/libs.
>
> If somebody does trie to do a dump with the -a option a ERROR message
> is issued, the dump does continue? this might not be the desired behavior.
>
>
> ------------------------------------------------------------------------
>
> Index: xfs-cmds/xfsdump/aclocal.m4
> ===================================================================
> --- xfs-cmds.orig/xfsdump/aclocal.m4 2006-08-02 14:51:34.000000000 -0500
> +++ xfs-cmds/xfsdump/aclocal.m4 2006-08-02 14:58:11.250605250 -0500
> @@ -161,27 +161,31 @@ AC_DEFUN([AC_PACKAGE_NEED_XFS_DMAPI_H],
> [ AC_CHECK_HEADERS([xfs/dmapi.h])
> if test "$ac_cv_header_xfs_dmapi_h" != yes; then
> echo
> - echo 'FATAL ERROR: could not find a valid DMAPI library header.'
> - echo 'Install the data migration API (dmapi) development package.'
> + echo 'WARNING: could not find a valid DMAPI library header.'
> + echo 'xfsdump / xfsrestore will not support dmapi file systems.'
> echo 'Alternatively, run "make install-dev" from the dmapi source.'
> - exit 1
> fi
> ])
>
> AC_DEFUN([AC_PACKAGE_NEED_MAKEHANDLE_LIBDM],
> - [ AC_CHECK_LIB(dm, dm_make_handle,, [
> + [ AC_CHECK_LIB(dm, dm_make_handle,
> + [have_dmapi=true
> + libdm="-ldm"
> + test -f `pwd`/../dmapi/libdm/libdm.la && \
> + libdm="`pwd`/../dmapi/libdm/libdm.la"
> + test -f ${libexecdir}${libdirsuffix}/libdm.la && \
> + libdm="${libexecdir}${libdirsuffix}/libdm.la"
> + ],
> + [
> echo
> - echo 'FATAL ERROR: could not find a valid DMAPI base library.'
> - echo 'Install the data migration API (dmapi) library package.'
> + echo 'WARNING: could not find a valid DMAPI base library.'
> + echo 'xfsdump / xfsrestore will not support dmapi file systems.'
> echo 'Alternatively, run "make install" from the dmapi source.'
> - exit 1
> + have_dmapi=false
> + libdm = ""
> ])
> - libdm="-ldm"
> - test -f `pwd`/../dmapi/libdm/libdm.la && \
> - libdm="`pwd`/../dmapi/libdm/libdm.la"
> - test -f ${libexecdir}${libdirsuffix}/libdm.la && \
> - libdm="${libexecdir}${libdirsuffix}/libdm.la"
> AC_SUBST(libdm)
> + AC_SUBST(have_dmapi)
> ])
>
> #
> Index: xfs-cmds/xfsdump/common/hsmapi_noop.c
> ===================================================================
> --- /dev/null 1970-01-01 00:00:00.000000000 +0000
> +++ xfs-cmds/xfsdump/common/hsmapi_noop.c 2006-08-02 15:38:39.046333000 -0500
> @@ -0,0 +1,147 @@
> +/*
> + * Copyright (c) 2000-2004 Silicon Graphics, Inc.
> + * All Rights Reserved.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it would be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write the Free Software Foundation,
> + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + */
> +
> +#include <xfs/xfs.h>
> +#include <attr/attributes.h>
> +#include <xfs/handle.h>
> +
> +#include "hsmapi.h"
> +#include "mlog.h"
> +#include "exit.h"
> +
> +typedef struct {
> +} dmf_fs_ctxt_t;
> +
> +extern hsm_fs_ctxt_t *
> +HsmInitFsysContext(
> +const char *mountpoint,
> + int dumpversion)
> +{
> + mlog( MLOG_NORMAL | MLOG_ERROR, _(
> + "-%c Dumping of DMF dualstate file not supported in this version\n"));
> + return NULL;
> +}
> +
> +extern void
> +HsmDeleteFsysContext(
> + hsm_fs_ctxt_t *contextp)
> +{
> +}
> +
> +extern int
> +HsmEstimateFileSpace(
> + hsm_fs_ctxt_t *contextp,
> +const xfs_bstat_t *statp,
> + off64_t *bytes)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmEstimateFileOffset(
> + hsm_fs_ctxt_t *contextp,
> +const xfs_bstat_t *statp,
> + off64_t bytecount,
> + off64_t *byteoffset)
> +{
> + return 0;
> +}
> +
> +extern hsm_f_ctxt_t *
> +HsmAllocateFileContext(
> + hsm_fs_ctxt_t *contextp)
> +{
> + return NULL;
> +}
> +
> +extern void
> +HsmDeleteFileContext(
> + hsm_f_ctxt_t *contextp)
> +{
> +}
> +
> +extern int
> +HsmInitFileContext(
> + hsm_f_ctxt_t *contextp,
> +const xfs_bstat_t *statp)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmModifyInode(
> + hsm_f_ctxt_t *contextp,
> + xfs_bstat_t *statp)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmModifyExtentMap(
> + hsm_f_ctxt_t *contextp,
> + struct getbmapx *bmap)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmFilterExistingAttribute(
> + hsm_f_ctxt_t *hsm_f_ctxtp,
> +const char *namep, /* attribute name */
> + u_int32_t valuesz, /* value size */
> + int flag,
> + int *skip_entry)
> +{
> + return 0;
> +}
> +
> +extern int
> +HsmAddNewAttribute(
> + hsm_f_ctxt_t *hsm_f_ctxtp,
> + int cursor,
> + int flag,
> + char **namepp, /* pointer to new attribute name */
> + char **valuepp, /* pointer to its value */
> + u_int32_t *valueszp) /* pointer to the value size */
> +{
> + return 0;
> +}
> +
> +extern void
> +HsmBeginRestoreFile(
> + bstat_t *bstatp,
> + int fd,
> + int *hsm_flagp)
> +{
> +}
> +
> +extern void
> +HsmRestoreAttribute(
> + int flag, /* ext attr flags */
> + char *namep, /* pointer to new attribute name */
> + int *hsm_flagp)
> +{
> +}
> +
> +extern void
> +HsmEndRestoreFile(
> + char *path,
> + int fd,
> + int *hsm_flagp)
> +{
> +}
> Index: xfs-cmds/xfsdump/dump/Makefile
> ===================================================================
> --- xfs-cmds.orig/xfsdump/dump/Makefile 2006-08-02 14:51:34.000000000 -0500
> +++ xfs-cmds/xfsdump/dump/Makefile 2006-08-02 14:52:15.076345750 -0500
> @@ -57,7 +57,6 @@ COMMON = \
> fs.c \
> getdents.c \
> global.c \
> - hsmapi.c \
> lock.c \
> main.c \
> mlog.c \
> @@ -69,6 +68,12 @@ COMMON = \
> util.c \
> sproc.c
>
> +ifeq ($(HAVE_DMAPI), true)
> + COMMON += hsmapi.c
> +else
> + COMMON += hsmapi_noop.c
> +endif
> +
> LOCALS = \
> content.c \
> inomap.c \
> Index: xfs-cmds/xfsdump/include/builddefs.in
> ===================================================================
> --- xfs-cmds.orig/xfsdump/include/builddefs.in 2006-08-02 14:51:34.000000000 -0500
> +++ xfs-cmds/xfsdump/include/builddefs.in 2006-08-02 14:52:15.080346000 -0500
> @@ -66,6 +66,8 @@ ENABLE_GETTEXT = @enable_gettext@
>
> HAVE_ZIPPED_MANPAGES = @have_zipped_manpages@
>
> +HAVE_DMAPI = @have_dmapi@
> +
> LCFLAGS += -DXFS_BIG_FILES=1 -DXFS_BIG_FILESYSTEMS=1
>
> ifeq ($(PKG_PLATFORM),linux)
> Index: xfs-cmds/xfsdump/restore/Makefile
> ===================================================================
> --- xfs-cmds.orig/xfsdump/restore/Makefile 2006-08-02 14:51:34.000000000 -0500
> +++ xfs-cmds/xfsdump/restore/Makefile 2006-08-02 14:52:15.080346000 -0500
> @@ -55,7 +55,6 @@ COMMON = \
> fs.c \
> getdents.c \
> global.c \
> - hsmapi.c \
> lock.c \
> main.c \
> mlog.c \
> @@ -67,6 +66,12 @@ COMMON = \
> stream.c \
> util.c
>
> +ifeq ($(HAVE_DMAPI), true)
> + COMMON += hsmapi.c
> +else
> + COMMON += hsmapi_noop.c
> +endif
> +
> LOCALS = \
> bag.c \
> content.c \
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 14:10 ` Dean Roehrich
@ 2006-08-04 15:36 ` Russell Cattelan
2006-08-04 15:58 ` Dean Roehrich
2006-08-07 0:00 ` Vlad Apostolov
1 sibling, 1 reply; 18+ messages in thread
From: Russell Cattelan @ 2006-08-04 15:36 UTC (permalink / raw)
To: Dean Roehrich; +Cc: Vlad Apostolov, xfs
Dean Roehrich wrote:
> On Fri, Aug 04, 2006 at 02:18:13PM +1000, Vlad Apostolov wrote:
>
>> Hi Russel,
>>
>> I don't understand in details the build changes but they seam to be fine.
>>
>
> Vlad, why do they seem fine?
>
>
>> In summary if the build system can find the DMAPI lib installed it will
>> use hsmapi_noop.c otherwise hsmapi.c.
>> The return code of HsmInitFileContext() stub probably should be non zero.
>>
>> It is looking good.
>>
>
> So this is determined at build time...so when you're using a version of
> xfsdump/xfsrestore how do you know you're _not_ using one that is DMAPI-aware
> _before_ you get into trouble with an invalid dump?
>
I appears as if the Hsm routines are only used if the -a flag is given
to xfsdump.
(dump DMF dualstate files as offline)
From what I can tell the only users that will need the HSM routines
would be Suse
based installs or somebody doing a custom kernel with the xfs-tree from oss.
Anybody running with a kernel.org kernel would have no need for dmapi
support in xfs dump/restore.
(This includes the Fedora kernel with currently does does build the
xfsdump package)
Under the current scheme in order to get xfsdump at all you need to
build and install the dmapi and dmapi-devel
packages, which seemed kinda silly to me on system that don't have the
kernel support for dmapi.
So basically I just stubbed out the Hsm functions is the case of no
dmapi libraries
The dlopen is a good idea but still requires that build machine has the
dmapi libraries installed
which seems like extra work if they are never going to be used.
> Assuming that issue is addressed, here's another: The libdm is a shared
> object, so why not take advantage of that and load it with dlopen? Then the
> issue is determined at runtime rather than build time. This is easy, and even
> DMF does it this way.
>
> Dean
>
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 15:36 ` Russell Cattelan
@ 2006-08-04 15:58 ` Dean Roehrich
2006-08-04 16:45 ` Bill Kendall
0 siblings, 1 reply; 18+ messages in thread
From: Dean Roehrich @ 2006-08-04 15:58 UTC (permalink / raw)
To: Russell Cattelan; +Cc: Vlad Apostolov, xfs
On Fri, Aug 04, 2006 at 10:36:37AM -0500, Russell Cattelan wrote:
> I appears as if the Hsm routines are only used if the -a flag is given
> to xfsdump.
> (dump DMF dualstate files as offline)
If use of -a causes xfsdump to fail then that may be sufficient.
Also, use of -D should cause xfsrestore to fail.
That might cover my concerns.
Dean
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 15:58 ` Dean Roehrich
@ 2006-08-04 16:45 ` Bill Kendall
2006-08-04 17:08 ` Dean Roehrich
` (2 more replies)
0 siblings, 3 replies; 18+ messages in thread
From: Bill Kendall @ 2006-08-04 16:45 UTC (permalink / raw)
To: Dean Roehrich; +Cc: Russell Cattelan, Vlad Apostolov, xfs
Dean Roehrich wrote:
> On Fri, Aug 04, 2006 at 10:36:37AM -0500, Russell Cattelan wrote:
>
>
>>I appears as if the Hsm routines are only used if the -a flag is given
>>to xfsdump.
>>(dump DMF dualstate files as offline)
>
>
> If use of -a causes xfsdump to fail then that may be sufficient.
Then what? Each user (admittedly, this is a small number) has to rebuild
xfsdump locally, and then do so every time their package manager grabs
an updated xfsdump? That sounds like more of an inconvenience than
installing a couple packages on a build machine, especially considering
the xfsdump and libdm source are bundled together with all the other xfs
user space tools. (And isn't there logic in the xfs makefiles to use
the locally built libraries if the required libraries aren't installed?)
>
> Also, use of -D should cause xfsrestore to fail.
That's not necessary - there are no libdm calls in xfsrestore,
regardless of whether or not the image being restore came from
xfsdump -a.
There are several solutions here:
1) Russell's proposal -- noop hsm routines if libdm doesn't exist on
build machine.
2) Require libdm on build machine, change xfsdump to dlopen libdm so
that libdm is optional at run-time.
3) Add make_handle() routine to libhandle. xfsdump's only dependencies
from libdm are dm_make_handle() and dm_handle_to_fsid() (the latter
of which is in libhandle as handle_to_fshandle(), I think).
4) Noop the existing hsm routines, and allow xfsdump to dlopen a
specified .so to override the default (noop) behavior. DMF could
then ship a .so implementing those functions.
Bill
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 16:45 ` Bill Kendall
@ 2006-08-04 17:08 ` Dean Roehrich
2006-08-04 17:33 ` Eric Sandeen
2006-08-04 18:08 ` Russell Cattelan
2 siblings, 0 replies; 18+ messages in thread
From: Dean Roehrich @ 2006-08-04 17:08 UTC (permalink / raw)
To: Bill Kendall; +Cc: Russell Cattelan, Vlad Apostolov, xfs
On Fri, Aug 04, 2006 at 11:45:26AM -0500, Bill Kendall wrote:
> 3) Add make_handle() routine to libhandle. xfsdump's only dependencies
> from libdm are dm_make_handle() and dm_handle_to_fsid() (the latter
> of which is in libhandle as handle_to_fshandle(), I think).
If libhandle can satisfy everything then that would be a suitable solution.
If Russell wants this changed bad enough then I'm sure he'll get around to
submitting another patch for it someday...
:)
Dean
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 16:45 ` Bill Kendall
2006-08-04 17:08 ` Dean Roehrich
@ 2006-08-04 17:33 ` Eric Sandeen
2006-08-04 18:08 ` Russell Cattelan
2 siblings, 0 replies; 18+ messages in thread
From: Eric Sandeen @ 2006-08-04 17:33 UTC (permalink / raw)
To: Bill Kendall; +Cc: Dean Roehrich, Russell Cattelan, Vlad Apostolov, xfs
Bill Kendall wrote:
> Dean Roehrich wrote:
>> On Fri, Aug 04, 2006 at 10:36:37AM -0500, Russell Cattelan wrote:
>>
>>
>>> I appears as if the Hsm routines are only used if the -a flag is
>>> given to xfsdump.
>>> (dump DMF dualstate files as offline)
>>
>>
>> If use of -a causes xfsdump to fail then that may be sufficient.
>
> Then what? Each user (admittedly, this is a small number) has to rebuild
> xfsdump locally, and then do so every time their package manager grabs
> an updated xfsdump?
Well... if you're using SLES or ProPack or whatever, -a will work fine, when you
get updates from your dmapi-supporting distro it will continue to work fine...
But if you're using fedora or whatnot, -a will return a (hopefully helpful)
error message and quit, and if you -really- want to use dmapi, you'll have to
build a custom kernel and dmapi userspace anyway. Rebuilding xfsprogs to go
with it doesn't seem like too big a deal... In such a scenario you'd tell your
package manager to exclude both kernel & xfsprogs.
Anyway, other proposals also seem reasonable, so I won't push this point too much :)
-Eric
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 16:45 ` Bill Kendall
2006-08-04 17:08 ` Dean Roehrich
2006-08-04 17:33 ` Eric Sandeen
@ 2006-08-04 18:08 ` Russell Cattelan
2006-08-04 21:59 ` Bill Kendall
2 siblings, 1 reply; 18+ messages in thread
From: Russell Cattelan @ 2006-08-04 18:08 UTC (permalink / raw)
To: Bill Kendall; +Cc: Dean Roehrich, Vlad Apostolov, xfs
Bill Kendall wrote:
[snip]
>
> 3) Add make_handle() routine to libhandle. xfsdump's only dependencies
> from libdm are dm_make_handle() and dm_handle_to_fsid() (the latter
> of which is in libhandle as handle_to_fshandle(), I think).
Hmm looking at dm_handle_to_fsid: it calls parse_handle which appears
be quite dmapi specific and would require much of dm_handle.c?
I suppose we could move dm_handle.c into libhandle ?
But that seems to be going in the wrong direction in terms of
correct code compartmentalization.
Since dmapi is only available on Suse , Propack and somebody doing
a custom kernel, I'm not convinced that xfs dump/restore should
support dmapi no matter what.
The only time a problem might arise is somebody not using the shipped
version
of xfs dump/restore on a Suse or propack system, in which case they
should either know what they are doing or get what they deserve.
>
> 4) Noop the existing hsm routines, and allow xfsdump to dlopen a
> specified .so to override the default (noop) behavior. DMF could
> then ship a .so implementing those functions.
>
> Bill
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 18:08 ` Russell Cattelan
@ 2006-08-04 21:59 ` Bill Kendall
2006-08-07 15:03 ` Dean Roehrich
0 siblings, 1 reply; 18+ messages in thread
From: Bill Kendall @ 2006-08-04 21:59 UTC (permalink / raw)
To: Russell Cattelan; +Cc: Dean Roehrich, Vlad Apostolov, xfs
[-- Attachment #1: Type: text/plain, Size: 1537 bytes --]
Here's a patch that accomplishes #3. Turns out no libhandle
changes were required. Built debian and rpm packages and
verified that dmapi/libdm were not mentioned in the dependencies,
and for debian that libdm was not mentioned in the build-deps either.
I'd still like to move the current hsmapi.c out of xfsdump, but it's
just not much of a priority right now.
Bill
Russell Cattelan wrote:
> Bill Kendall wrote:
>
> [snip]
>
>>
>> 3) Add make_handle() routine to libhandle. xfsdump's only dependencies
>> from libdm are dm_make_handle() and dm_handle_to_fsid() (the latter
>> of which is in libhandle as handle_to_fshandle(), I think).
>
> Hmm looking at dm_handle_to_fsid: it calls parse_handle which appears
> be quite dmapi specific and would require much of dm_handle.c?
>
> I suppose we could move dm_handle.c into libhandle ?
> But that seems to be going in the wrong direction in terms of
> correct code compartmentalization.
>
> Since dmapi is only available on Suse , Propack and somebody doing
> a custom kernel, I'm not convinced that xfs dump/restore should
> support dmapi no matter what.
> The only time a problem might arise is somebody not using the shipped
> version
> of xfs dump/restore on a Suse or propack system, in which case they
> should either know what they are doing or get what they deserve.
>
>>
>> 4) Noop the existing hsm routines, and allow xfsdump to dlopen a
>> specified .so to override the default (noop) behavior. DMF could
>> then ship a .so implementing those functions.
>>
>> Bill
>>
[-- Attachment #2: no_dmapi --]
[-- Type: text/plain, Size: 10537 bytes --]
Index: xfs/xfsdump/common/hsmapi.c
===================================================================
--- xfs.orig/xfsdump/common/hsmapi.c 2006-08-04 13:39:36.088684549 -0500
+++ xfs/xfsdump/common/hsmapi.c 2006-08-04 15:34:42.512343704 -0500
@@ -18,8 +18,7 @@
#include <xfs/xfs.h>
#include <attr/attributes.h>
-#include <xfs/handle.h>
-#include <xfs/dmapi.h>
+#include <xfs/jdm.h>
#include "hsmapi.h"
#include "mlog.h"
@@ -86,13 +85,12 @@
#define DMF_ST_NOMIGR 5 /* file should not be migrated */
#define DMF_ST_PARTIAL 6 /* file has backups plus parts online */
-/* Interesting bit combinations within the bs_dmevmask field of xfs_bstat_t:
+/* Create mask containing read, write, trunc and destroy dmapi event bits.
+ * Hardcode the values since xfsdump should not depend on dmapi being installed.
+ * Interesting bit combinations within the bs_dmevmask field of xfs_bstat_t:
* OFL, UNM, and PAR files have exactly these bits set.
* DUL and MIG files have all but the DM_EVENT_READ bit set */
-#define DMF_EV_BITS ( (1<<DM_EVENT_DESTROY) | \
- (1<<DM_EVENT_READ) | \
- (1<<DM_EVENT_WRITE) | \
- (1<<DM_EVENT_TRUNCATE) )
+#define DMF_EV_BITS ( (1<<16) | (1<<17) | (1<<18) | (1<<20) )
/* OFL file's managed region event flags */
#define DMF_MR_FLAGS ( 0x1 | 0x2 | 0x4 )
@@ -103,7 +101,7 @@
typedef struct {
int dumpversion;
- dm_fsid_t fsid;
+ jdm_fshandle_t *fshanp;
} dmf_fs_ctxt_t;
typedef struct {
@@ -183,30 +181,11 @@
int dumpversion)
{
dmf_fs_ctxt_t *dmf_fs_ctxtp;
- void *fshanp;
- size_t fshlen = 0;
- dm_fsid_t fsid;
- int error;
if (dumpversion != HSM_API_VERSION_1) {
return NULL; /* we can't handle this version */
}
- /* Get the filesystem's DMAPI fsid for later use in building file
- handles in HsmInitFileContext. We use path_to_handle() because
- dm_path_to_handle() doesn't work if the filesystem isn't mounted
- with -o dmi.
- */
-
- if (path_to_fshandle((char *)mountpoint, &fshanp, &fshlen)) {
- return NULL;
- }
- error = dm_handle_to_fsid(fshanp, fshlen, &fsid);
- free_handle(fshanp, fshlen);
- if (error) {
- return NULL;
- }
-
/* Malloc space for a filesystem context, and initialize any fields
needed later by other routines.
*/
@@ -215,7 +194,15 @@
return NULL;
}
dmf_fs_ctxtp->dumpversion = dumpversion;
- dmf_fs_ctxtp->fsid = fsid;
+
+ /* Get the filesystem's handle for later use in building file
+ handles in HsmInitFileContext.
+ */
+ dmf_fs_ctxtp->fshanp = jdm_getfshandle((char *)mountpoint);
+ if (dmf_fs_ctxtp->fshanp == NULL) {
+ free(dmf_fs_ctxtp);
+ return NULL;
+ }
return (hsm_fs_ctxt_t *)dmf_fs_ctxtp;
}
@@ -411,10 +398,6 @@
{
dmf_f_ctxt_t *dmf_f_ctxtp = (dmf_f_ctxt_t *)contextp;
XFSattrvalue0_t *dmfattrp;
- void *hanp;
- size_t hlen = 0;
- dm_ino_t ino;
- dm_igen_t igen;
int state;
int error;
attr_multiop_t attr_op;
@@ -437,13 +420,6 @@
for the DMF attribute. (It could be in a disk block separate from
the inode.)
*/
-
- ino = (dm_ino_t)statp->bs_ino;
- igen = (dm_igen_t)statp->bs_gen;
- if (dm_make_handle(&dmf_f_ctxtp->fsys.fsid, &ino, &igen, &hanp, &hlen) != 0) {
- return 0; /* can't make a proper handle */
- }
-
attr_op.am_opcode = ATTR_OP_GET;
attr_op.am_error = 0;
attr_op.am_attrname = DMF_ATTR_NAME;
@@ -451,8 +427,11 @@
attr_op.am_length = sizeof(dmf_f_ctxtp->attrval);
attr_op.am_flags = ATTR_ROOT;
- error = attr_multi_by_handle(hanp, hlen, &attr_op, 1, 0);
- free_handle(hanp, hlen);
+ error = jdm_attr_multi(dmf_f_ctxtp->fsys.fshanp,
+ (xfs_bstat_t *)statp,
+ (char *)&attr_op,
+ 1,
+ 0);
if (error || attr_op.am_error)
return 0; /* no DMF attribute */
Index: xfs/xfsdump/aclocal.m4
===================================================================
--- xfs.orig/xfsdump/aclocal.m4 2006-08-04 15:36:45.207573713 -0500
+++ xfs/xfsdump/aclocal.m4 2006-08-04 15:39:03.904854078 -0500
@@ -157,33 +157,6 @@
exit 1 ])
])
-AC_DEFUN([AC_PACKAGE_NEED_XFS_DMAPI_H],
- [ AC_CHECK_HEADERS([xfs/dmapi.h])
- if test "$ac_cv_header_xfs_dmapi_h" != yes; then
- echo
- echo 'FATAL ERROR: could not find a valid DMAPI library header.'
- echo 'Install the data migration API (dmapi) development package.'
- echo 'Alternatively, run "make install-dev" from the dmapi source.'
- exit 1
- fi
- ])
-
-AC_DEFUN([AC_PACKAGE_NEED_MAKEHANDLE_LIBDM],
- [ AC_CHECK_LIB(dm, dm_make_handle,, [
- echo
- echo 'FATAL ERROR: could not find a valid DMAPI base library.'
- echo 'Install the data migration API (dmapi) library package.'
- echo 'Alternatively, run "make install" from the dmapi source.'
- exit 1
- ])
- libdm="-ldm"
- test -f `pwd`/../dmapi/libdm/libdm.la && \
- libdm="`pwd`/../dmapi/libdm/libdm.la"
- test -f ${libexecdir}${libdirsuffix}/libdm.la && \
- libdm="${libexecdir}${libdirsuffix}/libdm.la"
- AC_SUBST(libdm)
- ])
-
#
# Generic macro, sets up all of the global packaging variables.
# The following environment variables may be set to override defaults:
Index: xfs/xfsdump/dump/Makefile
===================================================================
--- xfs.orig/xfsdump/dump/Makefile 2006-08-04 15:43:59.901686947 -0500
+++ xfs/xfsdump/dump/Makefile 2006-08-04 15:44:09.206843880 -0500
@@ -85,7 +85,7 @@
HFILES = $(LOCALINCL) $(COMMINCL) $(INVINCL)
LINKS = $(COMMINCL) $(COMMON) $(INVINCL) $(INVCOMMON)
LDIRT = $(LINKS)
-LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBDM) $(LIBRMT)
+LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT)
LTDEPENDENCIES = $(LIBRMT)
LCFLAGS = -DDUMP -DRMT -DBASED -DDOSOCKS -DINVCONVFIX -DSIZEEST -DPIPEINVFIX
Index: xfs/xfsdump/include/builddefs.in
===================================================================
--- xfs.orig/xfsdump/include/builddefs.in 2006-08-04 15:41:12.564871559 -0500
+++ xfs/xfsdump/include/builddefs.in 2006-08-04 15:41:54.018029788 -0500
@@ -13,7 +13,6 @@
LOADERFLAGS = @LDFLAGS@
LIBRMT = $(TOPDIR)/librmt/librmt.la
-LIBDM = @libdm@
LIBXFS = @libxfs@
LIBATTR = @libattr@
LIBUUID = @libuuid@
Index: xfs/xfsdump/debian/control
===================================================================
--- xfs.orig/xfsdump/debian/control 2006-08-04 15:44:59.345076705 -0500
+++ xfs/xfsdump/debian/control 2006-08-04 15:45:06.637983169 -0500
@@ -2,7 +2,7 @@
Section: admin
Priority: optional
Maintainer: Nathan Scott <nathans@debian.org>
-Build-Depends: xfslibs-dev (>= 2.6.4), uuid-dev, libdm0-dev, libattr1-dev (>= 2.4.14), libncurses-dev, autoconf, debhelper (>= 5), gettext, libtool
+Build-Depends: xfslibs-dev (>= 2.6.4), uuid-dev, libattr1-dev (>= 2.4.14), libncurses-dev, autoconf, debhelper (>= 5), gettext, libtool
Standards-Version: 3.5.9
Package: xfsdump
Index: xfs/xfsdump/m4/package_dmapidev.m4
===================================================================
--- xfs.orig/xfsdump/m4/package_dmapidev.m4 2006-08-04 15:46:39.293496665 -0500
+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -1,26 +0,0 @@
-AC_DEFUN([AC_PACKAGE_NEED_XFS_DMAPI_H],
- [ AC_CHECK_HEADERS([xfs/dmapi.h])
- if test "$ac_cv_header_xfs_dmapi_h" != yes; then
- echo
- echo 'FATAL ERROR: could not find a valid DMAPI library header.'
- echo 'Install the data migration API (dmapi) development package.'
- echo 'Alternatively, run "make install-dev" from the dmapi source.'
- exit 1
- fi
- ])
-
-AC_DEFUN([AC_PACKAGE_NEED_MAKEHANDLE_LIBDM],
- [ AC_CHECK_LIB(dm, dm_make_handle,, [
- echo
- echo 'FATAL ERROR: could not find a valid DMAPI base library.'
- echo 'Install the data migration API (dmapi) library package.'
- echo 'Alternatively, run "make install" from the dmapi source.'
- exit 1
- ])
- libdm="-ldm"
- test -f `pwd`/../dmapi/libdm/libdm.la && \
- libdm="`pwd`/../dmapi/libdm/libdm.la"
- test -f ${libexecdir}${libdirsuffix}/libdm.la && \
- libdm="${libexecdir}${libdirsuffix}/libdm.la"
- AC_SUBST(libdm)
- ])
Index: xfs/xfsdump/debian/shlibs.local
===================================================================
--- xfs.orig/xfsdump/debian/shlibs.local 2006-08-04 15:47:45.321698050 -0500
+++ xfs/xfsdump/debian/shlibs.local 2006-08-04 15:47:50.806379180 -0500
@@ -1,3 +1,2 @@
-libdm 0 libdm0 (>= 2.1.0)
libattr 1 libattr1 (>= 2.0.0)
libhandle 1 xfsprogs (>= 2.6.30)
Index: xfs/xfsdump/restore/Makefile
===================================================================
--- xfs.orig/xfsdump/restore/Makefile 2006-08-04 15:48:11.880996211 -0500
+++ xfs/xfsdump/restore/Makefile 2006-08-04 15:48:21.402178453 -0500
@@ -95,7 +95,7 @@
HFILES = $(LOCALINCL) $(COMMINCL) $(INVINCL)
LINKS = $(COMMINCL) $(COMMON) $(INVINCL) $(INVCOMMON)
LDIRT = $(LINKS)
-LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBDM) $(LIBRMT)
+LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT)
LTDEPENDENCIES = $(LIBRMT)
LCFLAGS = -DRESTORE -DRMT -DBASED -DDOSOCKS -DINVCONVFIX -DPIPEINVFIX \
Index: xfs/xfsdump/build/rpm/xfsdump.spec.in
===================================================================
--- xfs.orig/xfsdump/build/rpm/xfsdump.spec.in 2006-08-04 16:02:28.743149991 -0500
+++ xfs/xfsdump/build/rpm/xfsdump.spec.in 2006-08-04 16:02:36.688132300 -0500
@@ -5,7 +5,7 @@
Distribution: @pkg_distribution@
Packager: Silicon Graphics, Inc. <http://www.sgi.com/>
BuildRoot: @build_root@
-Requires: xfsprogs >= 2.6.30, dmapi >= 2.0.0, attr >= 2.0.0
+Requires: xfsprogs >= 2.6.30, attr >= 2.0.0
Source: @pkg_name@-@pkg_version@.src.tar.gz
License: GPL
Vendor: Silicon Graphics, Inc.
Index: xfs/xfsdump/configure.in
===================================================================
--- xfs.orig/xfsdump/configure.in 2006-08-04 15:49:23.473884494 -0500
+++ xfs/xfsdump/configure.in 2006-08-04 15:49:37.967683519 -0500
@@ -31,9 +31,6 @@
AC_PACKAGE_NEED_XFS_HANDLE_H
AC_PACKAGE_NEED_OPEN_BY_FSHANDLE
-AC_PACKAGE_NEED_XFS_DMAPI_H
-AC_PACKAGE_NEED_MAKEHANDLE_LIBDM
-
AC_PACKAGE_NEED_ATTRIBUTES_H
AC_PACKAGE_NEED_ATTRIBUTES_MACROS
AC_PACKAGE_NEED_ATTRGET_LIBATTR
Index: xfs/xfsdump/m4/Makefile
===================================================================
--- xfs.orig/xfsdump/m4/Makefile 2006-08-04 16:03:15.648948927 -0500
+++ xfs/xfsdump/m4/Makefile 2006-08-04 16:03:21.013612090 -0500
@@ -8,7 +8,6 @@
LSRCFILES = \
manual_format.m4 \
package_attrdev.m4 \
- package_dmapidev.m4 \
package_globals.m4 \
package_ncurses.m4 \
package_utilies.m4 \
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 14:10 ` Dean Roehrich
2006-08-04 15:36 ` Russell Cattelan
@ 2006-08-07 0:00 ` Vlad Apostolov
1 sibling, 0 replies; 18+ messages in thread
From: Vlad Apostolov @ 2006-08-07 0:00 UTC (permalink / raw)
To: Dean Roehrich; +Cc: Russell Cattelan, xfs
Dean Roehrich wrote:
> On Fri, Aug 04, 2006 at 02:18:13PM +1000, Vlad Apostolov wrote:
>
>> Hi Russel,
>>
>> I don't understand in details the build changes but they seam to be fine.
>>
>
> Vlad, why do they seem fine?
>
Well, I patiently waited with the hope that someone more knowledgeable
on the topic would
do the review. No one responded in time and I thought that either no
one cares about the
change or no one fully understands it. As I am supposed to support
DMAPI, I had to take
the review and after consulting locally with xfs developers I did the
review. Now I see
that there are people interested and knowing better than me what needs
to be done.
>> In summary if the build system can find the DMAPI lib installed it will
>> use hsmapi_noop.c otherwise hsmapi.c.
>> The return code of HsmInitFileContext() stub probably should be non zero.
>>
>> It is looking good.
>>
>
> So this is determined at build time...so when you're using a version of
> xfsdump/xfsrestore how do you know you're _not_ using one that is DMAPI-aware
> _before_ you get into trouble with an invalid dump?
>
> Assuming that issue is addressed, here's another: The libdm is a shared
> object, so why not take advantage of that and load it with dlopen? Then the
> issue is determined at runtime rather than build time. This is easy, and even
> DMF does it this way.
>
> Dean
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-04 21:59 ` Bill Kendall
@ 2006-08-07 15:03 ` Dean Roehrich
2006-08-07 15:30 ` Russell Cattelan
0 siblings, 1 reply; 18+ messages in thread
From: Dean Roehrich @ 2006-08-07 15:03 UTC (permalink / raw)
To: Bill Kendall; +Cc: Russell Cattelan, Vlad Apostolov, xfs
On Fri, Aug 04, 2006 at 04:59:45PM -0500, Bill Kendall wrote:
> -#define DMF_EV_BITS ( (1<<DM_EVENT_DESTROY) | \
> - (1<<DM_EVENT_READ) | \
> - (1<<DM_EVENT_WRITE) | \
> - (1<<DM_EVENT_TRUNCATE) )
> +#define DMF_EV_BITS ( (1<<16) | (1<<17) | (1<<18) | (1<<20) )
Don't do that.
Granted, those bits can never be changed else all of your customers will start
a lynch mob and come after you.
At the very least, don't allow those bits to be anonymous--copy that whole
enum from the dmapi header. Even that I object to, but at least the bits will
_be_ something.
Dean
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-07 15:03 ` Dean Roehrich
@ 2006-08-07 15:30 ` Russell Cattelan
2006-08-07 15:52 ` Chris Wedgwood
0 siblings, 1 reply; 18+ messages in thread
From: Russell Cattelan @ 2006-08-07 15:30 UTC (permalink / raw)
To: Dean Roehrich; +Cc: Bill Kendall, Vlad Apostolov, xfs
Dean Roehrich wrote:
> On Fri, Aug 04, 2006 at 04:59:45PM -0500, Bill Kendall wrote:
>
>
>> -#define DMF_EV_BITS ( (1<<DM_EVENT_DESTROY) | \
>> - (1<<DM_EVENT_READ) | \
>> - (1<<DM_EVENT_WRITE) | \
>> - (1<<DM_EVENT_TRUNCATE) )
>> +#define DMF_EV_BITS ( (1<<16) | (1<<17) | (1<<18) | (1<<20) )
>>
>
> Don't do that.
>
> Granted, those bits can never be changed else all of your customers will start
> a lynch mob and come after you.
>
> At the very least, don't allow those bits to be anonymous--copy that whole
> enum from the dmapi header. Even that I object to, but at least the bits will
> _be_ something.
>
I'll second that.
It seems rather dangerous to have a #define floating around that could
potentially get out of sync with the original, especially if you
transport the
number and not the enum table. (It make it really hard for cscope to
find :-)
Other than that the rest of the patch seem reasonable, it satisfies the goal
of not requiring libdmapi.
> Dean
>
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-07 15:30 ` Russell Cattelan
@ 2006-08-07 15:52 ` Chris Wedgwood
2006-08-07 16:51 ` Dean Roehrich
0 siblings, 1 reply; 18+ messages in thread
From: Chris Wedgwood @ 2006-08-07 15:52 UTC (permalink / raw)
To: Russell Cattelan; +Cc: Dean Roehrich, Bill Kendall, Vlad Apostolov, xfs
On Mon, Aug 07, 2006 at 10:30:15AM -0500, Russell Cattelan wrote:
> It seems rather dangerous to have a #define floating around that
> could potentially get out of sync with the original, especially if
> you transport the number and not the enum table. (It make it really
> hard for cscope to find :-)
If it saves a header I don't see any harm in the original approach
with a comment preceding it explain what the bits are and why not to
screw them up.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-07 15:52 ` Chris Wedgwood
@ 2006-08-07 16:51 ` Dean Roehrich
2006-08-07 19:13 ` Bill Kendall
0 siblings, 1 reply; 18+ messages in thread
From: Dean Roehrich @ 2006-08-07 16:51 UTC (permalink / raw)
To: Chris Wedgwood; +Cc: Russell Cattelan, Bill Kendall, Vlad Apostolov, xfs
On Mon, Aug 07, 2006 at 08:52:48AM -0700, Chris Wedgwood wrote:
> On Mon, Aug 07, 2006 at 10:30:15AM -0500, Russell Cattelan wrote:
>
> > It seems rather dangerous to have a #define floating around that
> > could potentially get out of sync with the original, especially if
> > you transport the number and not the enum table. (It make it really
> > hard for cscope to find :-)
>
> If it saves a header I don't see any harm in the original approach
> with a comment preceding it explain what the bits are and why not to
> screw them up.
I agree with Russell that you want cscope to tell you about every place those
bits are being used, so you want those defines or at least those symbols to
show up here. Having them in a comment won't help cscope.
Dean
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-07 16:51 ` Dean Roehrich
@ 2006-08-07 19:13 ` Bill Kendall
2006-08-07 19:25 ` Dean Roehrich
0 siblings, 1 reply; 18+ messages in thread
From: Bill Kendall @ 2006-08-07 19:13 UTC (permalink / raw)
To: Dean Roehrich; +Cc: Chris Wedgwood, Russell Cattelan, Vlad Apostolov, xfs
On 08/07/06 11:51, Dean Roehrich wrote:
> On Mon, Aug 07, 2006 at 08:52:48AM -0700, Chris Wedgwood wrote:
>> On Mon, Aug 07, 2006 at 10:30:15AM -0500, Russell Cattelan wrote:
>>
>>> It seems rather dangerous to have a #define floating around that
>>> could potentially get out of sync with the original, especially if
>>> you transport the number and not the enum table. (It make it really
>>> hard for cscope to find :-)
>> If it saves a header I don't see any harm in the original approach
>> with a comment preceding it explain what the bits are and why not to
>> screw them up.
>
> I agree with Russell that you want cscope to tell you about every place those
> bits are being used, so you want those defines or at least those symbols to
> show up here. Having them in a comment won't help cscope.
>
> Dean
I'll put these defines in hsmapi.c, and revert DMF_EV_BITS back to using
these symbols:
/* DM_EVENT_* are defined in <xfs/dmapi.h>. Trying to avoid a dmapi dependency
* in xfsdump since dmapi is not commonly used, yet this code needs to know some
* of the event bits.
*/
#define DM_EVENT_READ 16
#define DM_EVENT_WRITE 17
#define DM_EVENT_TRUNCATE 18
#define DM_EVENT_DESTROY 20
Bill
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: review: Simple patch to remove the dmapi support from xfsdump
2006-08-07 19:13 ` Bill Kendall
@ 2006-08-07 19:25 ` Dean Roehrich
0 siblings, 0 replies; 18+ messages in thread
From: Dean Roehrich @ 2006-08-07 19:25 UTC (permalink / raw)
To: Bill Kendall; +Cc: Chris Wedgwood, Russell Cattelan, Vlad Apostolov, xfs
On Mon, Aug 07, 2006 at 02:13:38PM -0500, Bill Kendall wrote:
> I'll put these defines in hsmapi.c, and revert DMF_EV_BITS back to using
> these symbols:
I guess I'd favor copying in the whole enum. But I'm a bit more concerned
about losing parts of a story than other people.
Dean
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2006-08-07 19:26 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-02 20:48 review: Simple patch to remove the dmapi support from xfsdump Russell Cattelan
2006-08-04 4:18 ` Vlad Apostolov
2006-08-04 14:10 ` Dean Roehrich
2006-08-04 15:36 ` Russell Cattelan
2006-08-04 15:58 ` Dean Roehrich
2006-08-04 16:45 ` Bill Kendall
2006-08-04 17:08 ` Dean Roehrich
2006-08-04 17:33 ` Eric Sandeen
2006-08-04 18:08 ` Russell Cattelan
2006-08-04 21:59 ` Bill Kendall
2006-08-07 15:03 ` Dean Roehrich
2006-08-07 15:30 ` Russell Cattelan
2006-08-07 15:52 ` Chris Wedgwood
2006-08-07 16:51 ` Dean Roehrich
2006-08-07 19:13 ` Bill Kendall
2006-08-07 19:25 ` Dean Roehrich
2006-08-07 0:00 ` Vlad Apostolov
2006-08-04 14:24 ` Bill Kendall
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox