module-dist-hook:
if [ -d CVS -o -d .git ]; then \
- perl lustre/scripts/make_META.pl > $(distdir)/META; \
- cp $(distdir)/META $(distdir)/ldiskfs/META; \
+ perl lustre/scripts/make_META.pl > $(distdir)/META; \
elif [ -f META ]; then \
- cp META $(distdir)/META; \
- cp $(distdir)/META $(distdir)/ldiskfs/META; \
+ cp META $(distdir)/META; \
else \
- echo -e "I have no idea how to create a META file in $(distdir).\nPlease file a bug at http://bugzilla.lustre.org/"; \
- exit 1; \
+ echo -e "I have no idea how to create a META file in $(distdir).\nPlease file a bug at http://bugzilla.lustre.org/"; \
+ exit 1; \
+ fi
+if LDISKFS_ENABLED
+ if [ -f $(distdir)/META -a -d $(distdir)/ldiskfs ]; then \
+ cp $(distdir)/META $(distdir)/ldiskfs/META; \
fi
+endif
AC_INIT([Lustre], [LUSTRE_VERSION], [http://bugs.whamcloud.com/], [lustre])
sinclude(lustre/autoconf/lustre-version.ac)
-# Overridden by --with-ldiskfs/--with-zfs configure options
+# Overridden by --without-ldiskfs/--with-zfs configure options
AM_CONDITIONAL(LDISKFS_ENABLED, true)
AM_CONDITIONAL(ZFS_ENABLED, false)
echo '%attr(-, root, root) %{_libdir}/liblustre.so' >>lustre.files
fi
-if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/utils/libiam.c ] ; then
+if [ -f $RPM_BUILD_ROOT%{_libdir}/libiam.a ] ; then
echo '%attr(-, root, root) %{_libdir}/libiam.a' >>lustre.files
fi
subdir-m += fid
subdir-m += lvfs
subdir-m += obdclass
-subdir-m += lov
subdir-m += ptlrpc
-subdir-m += osc
subdir-m += obdecho
subdir-m += mgc
-@SERVER_TRUE@subdir-m += mds obdfilter ost mgs mdt cmm mdd ofd
-@SERVER_TRUE@subdir-m += quota osp lod
-@CLIENT_TRUE@subdir-m += mdc lmv llite fld
-@LDISKFS_ENABLED_TRUE@subdir-m += osd-ldiskfs
+@SERVER_TRUE@subdir-m += mds ost mgs mdt cmm mdd ofd quota osp lod
+@CLIENT_TRUE@subdir-m += lov osc mdc lmv llite fld
+@LDISKFS_ENABLED_TRUE@subdir-m += obdfilter osd-ldiskfs
@ZFS_ENABLED_TRUE@subdir-m += osd-zfs
@OSDADDON@
AUTOMAKE_OPTIONS = foreign
# also update lustre/autoconf/lustre-core.m4 AC_CONFIG_FILES
-ALWAYS_SUBDIRS = include lvfs obdclass ldlm ptlrpc osc lov obdecho \
+ALWAYS_SUBDIRS = include lvfs obdclass ldlm ptlrpc obdecho \
mgc fid fld doc utils tests scripts autoconf contrib conf
SERVER_SUBDIRS = obdfilter ost mds mgs mdt cmm mdd ofd osd-zfs osd-ldiskfs \
quota osp lod
-CLIENT_SUBDIRS = mdc lmv llite lclient
+CLIENT_SUBDIRS = mdc lmv llite lclient lov osc
LIBLUSTRE_SUBDIRS = liblustre
EXIT;
}
-/**
- * setup CONFIG_ORIG context, used to access local config log.
- * this may need to be rewrite as part of llog rewrite for lu-api.
- */
-static int mdt_obd_llog_setup(struct obd_device *obd,
- struct lustre_sb_info *lsi)
-{
- int rc;
-
- return 0;
-
- LASSERT(obd->obd_fsops == NULL);
-
- obd->obd_fsops = fsfilt_get_ops(lsi->lsi_fstype);
- if (IS_ERR(obd->obd_fsops))
- return PTR_ERR(obd->obd_fsops);
-
- rc = fsfilt_setup(obd, lsi->lsi_srv_mnt->mnt_sb);
- if (rc) {
- fsfilt_put_ops(obd->obd_fsops);
- return rc;
- }
-
- OBD_SET_CTXT_MAGIC(&obd->obd_lvfs_ctxt);
- obd->obd_lvfs_ctxt.pwdmnt = lsi->lsi_srv_mnt;
- obd->obd_lvfs_ctxt.pwd = lsi->lsi_srv_mnt->mnt_root;
- obd->obd_lvfs_ctxt.fs = get_ds();
-
- rc = llog_setup(NULL, obd, &obd->obd_olg, LLOG_CONFIG_ORIG_CTXT, obd,
- &llog_lvfs_ops);
- if (rc) {
- CERROR("llog_setup() failed: %d\n", rc);
- fsfilt_put_ops(obd->obd_fsops);
- }
-
- return rc;
-}
-
-static void mdt_obd_llog_cleanup(struct obd_device *obd)
-{
- struct llog_ctxt *ctxt;
-
- return;
-
- ctxt = llog_get_context(obd, LLOG_CONFIG_ORIG_CTXT);
- if (ctxt)
- llog_cleanup(NULL, ctxt);
-
- if (obd->obd_fsops) {
- fsfilt_put_ops(obd->obd_fsops);
- obd->obd_fsops = NULL;
- }
-}
-
static void mdt_fini(const struct lu_env *env, struct mdt_device *m)
{
struct md_device *next = m->mdt_child;
mdt_stop_ptlrpc_service(m);
mdt_llog_ctxt_unclone(env, m, LLOG_CHANGELOG_ORIG_CTXT);
- mdt_obd_llog_cleanup(obd);
obd_exports_barrier(obd);
obd_zombie_barrier();
if (rc)
GOTO(err_capa, rc);
- rc = mdt_obd_llog_setup(obd, lsi);
- if (rc)
- GOTO(err_fs_cleanup, rc);
-
mdt_adapt_sptlrpc_conf(obd, 1);
next = m->mdt_child;
-
rc = next->md_ops->mdo_iocontrol(env, next, OBD_IOC_GET_MNTOPT, 0,
&mntopts);
if (rc)
m->mdt_identity_cache = NULL;
err_llog_cleanup:
mdt_llog_ctxt_unclone(env, m, LLOG_CHANGELOG_ORIG_CTXT);
- mdt_obd_llog_cleanup(obd);
-err_fs_cleanup:
mdt_fs_cleanup(env, m);
err_capa:
cfs_timer_disarm(&m->mdt_ck_timer);
LASSERT(olg == &obd->obd_olg);
+#ifdef HAVE_LDISKFS_OSD
rc = llog_setup(NULL, obd, olg, LLOG_CONFIG_ORIG_CTXT, tgt,
&llog_lvfs_ops);
if (rc)
RETURN(rc);
+#endif
rc = llog_setup(NULL, obd, olg, LLOG_CONFIG_REPL_CTXT, tgt,
&llog_client_ops);
return rc;
}
+#ifdef HAVE_LDISKFS_OSD
+
+/*
+ * XXX: mgc_copy_llog() does not support osd-based llogs yet
+ */
+
/* identical to mgs_log_is_empty */
static int mgc_llog_is_empty(struct obd_device *obd, struct llog_ctxt *ctxt,
char *name)
OBD_FREE(temp_log, strlen(logname) + 1);
RETURN(rc);
}
+#endif
/* local_only means it cannot get remote llogs */
static int mgc_process_cfg_log(struct obd_device *mgc,
int local_only)
{
struct llog_ctxt *ctxt, *lctxt = NULL;
+#ifdef HAVE_LDISKFS_OSD
struct client_obd *cli = &mgc->u.cli;
+#endif
struct lvfs_run_ctxt *saved_ctxt;
struct lustre_sb_info *lsi = NULL;
int rc = 0, must_pop = 0;
lctxt = llog_get_context(mgc, LLOG_CONFIG_ORIG_CTXT);
+#ifdef HAVE_LDISKFS_OSD
+ /*
+ * XXX: at the moment mgc_copy_llog() works with lvfs-based llogs
+ */
/* Copy the setup log locally if we can. Don't mess around if we're
running an MGS though (logs are already local). */
if (lctxt && lsi && IS_SERVER(lsi) &&
llog_ctxt_put(ctxt);
ctxt = lctxt;
lctxt = NULL;
- } else if (local_only) { /* no local log at client side */
+ } else
+#endif
+ if (local_only) { /* no local log at client side */
GOTO(out_pop, rc = -EIO);
}
sources:
-obdclass-all-objs := llog.o llog_cat.o llog_lvfs.o llog_obd.o llog_swab.o
+obdclass-all-objs := llog.o llog_cat.o llog_obd.o llog_swab.o
+@LDISKFS_ENABLED_TRUE@ obdclass-all-objs += llog_lvfs.o
obdclass-all-objs += class_obd.o debug.o genops.o uuid.o llog_ioctl.o
obdclass-all-objs += lprocfs_status.o lprocfs_jobstats.o lustre_handles.o lustre_peer.o
obdclass-all-objs += llog_osd.o local_storage.o
}
EXPORT_SYMBOL(llog_ioctl);
+#ifdef HAVE_LDISKFS_OSD
int llog_catalog_list(struct obd_device *obd, int count,
struct obd_ioctl_data *data)
{
}
EXPORT_SYMBOL(llog_catalog_list);
+#endif
#
if MODULES
+if LDISKFS_ENABLED
modulefs_DATA = obdfilter$(KMODEXT)
endif
+endif
MOSTLYCLEANFILES := @MOSTLYCLEANFILES@
}
-static struct llog_operations osc_size_repl_logops = {
- lop_cancel: llog_obd_repl_cancel
-};
-
-static struct llog_operations osc_mds_ost_orig_logops;
-
-static int __osc_llog_init(struct obd_device *obd, struct obd_llog_group *olg,
- struct obd_device *tgt, struct llog_catid *catid)
-{
- struct llog_ctxt *ctxt = NULL;
- struct llog_handle *lgh;
- int rc;
-
- ENTRY;
-
- osc_mds_ost_orig_logops = llog_lvfs_ops;
- osc_mds_ost_orig_logops.lop_obd_add = llog_obd_origin_add;
- osc_mds_ost_orig_logops.lop_connect = llog_origin_connect;
- rc = llog_setup(NULL, obd, &obd->obd_olg, LLOG_MDS_OST_ORIG_CTXT, tgt,
- &osc_mds_ost_orig_logops);
- if (rc)
- RETURN(rc);
-
- ctxt = llog_get_context(obd, LLOG_MDS_OST_ORIG_CTXT);
- LASSERT(ctxt);
-
- /* context might be initialized already */
- if (ctxt->loc_handle != NULL) {
- /* sanity check for valid loc_handle */
- LASSERT(ctxt->loc_handle->lgh_ctxt == ctxt);
- GOTO(out, rc = 0);
- }
-
- /* first try to open existent llog by ID */
- if (likely(catid->lci_logid.lgl_oid != 0)) {
- rc = llog_open(NULL, ctxt, &lgh, &catid->lci_logid, NULL,
- LLOG_OPEN_EXISTS);
- /* re-create llog if it is missing */
- if (rc == -ENOENT)
- catid->lci_logid.lgl_oid = 0;
- else if (rc < 0)
- GOTO(out_cleanup, rc);
- }
- /* create new llog if llog ID is not specified or llog is missed */
- if (unlikely(catid->lci_logid.lgl_oid == 0)) {
- rc = llog_open_create(NULL, ctxt, &lgh, NULL, NULL);
- if (rc < 0)
- GOTO(out_cleanup, rc);
- catid->lci_logid = lgh->lgh_id;
- }
-
- ctxt->loc_handle = lgh;
-
- rc = llog_cat_init_and_process(NULL, lgh);
- if (rc)
- GOTO(out_close, rc);
-
- rc = llog_setup(NULL, obd, &obd->obd_olg, LLOG_SIZE_REPL_CTXT, tgt,
- &osc_size_repl_logops);
- if (rc)
- GOTO(out_close, rc);
-out:
- llog_ctxt_put(ctxt);
- RETURN(0);
-out_close:
- llog_cat_close(NULL, lgh);
-out_cleanup:
- llog_cleanup(NULL, ctxt);
- CERROR("%s: fail to init llog #"LPX64"#"LPX64"#%08x tgt '%s': "
- "rc = %d\n", obd->obd_name, catid->lci_logid.lgl_oid,
- catid->lci_logid.lgl_oseq, catid->lci_logid.lgl_ogen,
- tgt->obd_name, rc);
- return rc;
-}
-
static int osc_llog_init(struct obd_device *obd, struct obd_llog_group *olg,
struct obd_device *disk_obd, int *index)
{
- struct llog_catid catid;
- static char name[32] = CATLIST;
- int rc;
- ENTRY;
-
- LASSERT(olg == &obd->obd_olg);
-
- cfs_mutex_lock(&olg->olg_cat_processing);
- rc = llog_get_cat_list(disk_obd, name, *index, 1, &catid);
- if (rc) {
- CERROR("rc: %d\n", rc);
- GOTO(out, rc);
- }
-
- CDEBUG(D_INFO, "%s: Init llog for %d - catid "LPX64"/"LPX64":%x\n",
- obd->obd_name, *index, catid.lci_logid.lgl_oid,
- catid.lci_logid.lgl_oseq, catid.lci_logid.lgl_ogen);
-
- rc = __osc_llog_init(obd, olg, disk_obd, &catid);
- if (rc) {
- CERROR("rc: %d\n", rc);
- GOTO(out, rc);
- }
-
- rc = llog_put_cat_list(disk_obd, name, *index, 1, &catid);
- if (rc) {
- CERROR("rc: %d\n", rc);
- GOTO(out, rc);
- }
-
- out:
- cfs_mutex_unlock(&olg->olg_cat_processing);
-
- return rc;
+ /* this code is not supposed to be used with LOD/OSP
+ * to be removed soon */
+ LBUG();
+ return 0;
}
static int osc_llog_finish(struct obd_device *obd, int count)
fi
fi
export LL_DECODE_FILTER_FID=${LL_DECODE_FILTER_FID:-"$LUSTRE/utils/ll_decode_filter_fid"}
- [ ! -f "$LL_DECODE_FILTER_FID" ] && export LL_DECODE_FILTER_FID=$(which ll_decode_filter_fid)
+ [ ! -f "$LL_DECODE_FILTER_FID" ] && export LL_DECODE_FILTER_FID="ll_decode_filter_fid"
export MKFS=${MKFS:-"$LUSTRE/utils/mkfs.lustre"}
- [ ! -f "$MKFS" ] && export MKFS=$(which mkfs.lustre)
+ [ ! -f "$MKFS" ] && export MKFS="mkfs.lustre"
export TUNEFS=${TUNEFS:-"$LUSTRE/utils/tunefs.lustre"}
- [ ! -f "$TUNEFS" ] && export TUNEFS=$(which tunefs.lustre)
+ [ ! -f "$TUNEFS" ] && export TUNEFS="tunefs.lustre"
export CHECKSTAT="${CHECKSTAT:-"checkstat -v"} "
export LUSTRE_RMMOD=${LUSTRE_RMMOD:-$LUSTRE/scripts/lustre_rmmod}
[ ! -f "$LUSTRE_RMMOD" ] &&
# mount only finds helpers in /sbin
rootsbin_PROGRAMS = mount.lustre
-sbin_PROGRAMS = mkfs.lustre tunefs.lustre lctl wiretest \
- l_getidentity llverfs llverdev \
+sbin_PROGRAMS = lctl wiretest l_getidentity llverfs llverdev \
llog_reader lr_reader lshowmount lustre_rsync \
ll_recover_lost_found_objs ltrack_stats ll_decode_filter_fid
+if SERVER
+sbin_PROGRAMS += mkfs.lustre tunefs.lustre
+endif
if LIBPTHREAD
sbin_PROGRAMS += loadgen
endif
sbin_SCRIPTS = $(sbin_scripts)
endif # UTILS
-lib_LIBRARIES = liblustreapi.a libiam.a
+lib_LIBRARIES = liblustreapi.a
+if LDISKFS_ENABLED
+lib_LIBRARIES += libiam.a
+endif
noinst_LIBRARIES = liblustreapitmp.a
lctl_SOURCES = lustre_lfsck.c obd.c lustre_cfg.c lctl.c obdctl.h
else :; fi; \
done
+if LDISKFS_ENABLED
libiam_a_SOURCES = libiam.c
+endif
wirecheck_SOURCES = wirecheck.c
wirecheck_CPPFLAGS = -DCC="\"$(CC)\""
lr_reader_SOURCES = lr_reader.c
mount_lustre_SOURCES = mount_lustre.c mount_utils.c mount_utils.h
-mount_lustre_SOURCES += mount_utils_ldiskfs.c
mount_lustre_LDADD := $(LIBPTLCTL)
mount_lustre_DEPENDENCIES := $(LIBPTLCTL)
+if LDISKFS_ENABLED
+mount_lustre_SOURCES += mount_utils_ldiskfs.c
+endif
if ZFS_ENABLED
mount_lustre_SOURCES += mount_utils_zfs.c
mount_lustre_CPPFLAGS = -DHAVE_IOCTL_IN_UNISTD_H
endif
mkfs_lustre_SOURCES = mkfs_lustre.c mount_utils.c mount_utils.h
-mkfs_lustre_SOURCES += mount_utils_ldiskfs.c
mkfs_lustre_CPPFLAGS = -UTUNEFS $(AM_CPPFLAGS)
-mkfs_lustre_LDADD := libiam.a $(LIBPTLCTL)
-mkfs_lustre_DEPENDENCIES := $(LIBPTLCTL) libiam.a
+mkfs_lustre_LDADD := $(LIBPTLCTL)
+mkfs_lustre_DEPENDENCIES := $(LIBPTLCTL)
+if LDISKFS_ENABLED
+mkfs_lustre_SOURCES += mount_utils_ldiskfs.c
+mkfs_lustre_LDADD += libiam.a
+mkfs_lustre_DEPENDENCIES += $(LIBPTLCTL)
+endif
if ZFS_ENABLED
mkfs_lustre_SOURCES += mount_utils_zfs.c
mkfs_lustre_CPPFLAGS += -DHAVE_IOCTL_IN_UNISTD_H
endif
tunefs_lustre_SOURCES = mkfs_lustre.c mount_utils.c mount_utils.h
-tunefs_lustre_SOURCES += mount_utils_ldiskfs.c
tunefs_lustre_CPPFLAGS = -DTUNEFS $(AM_CPPFLAGS)
tunefs_lustre_LDADD := $(mkfs_lustre_LDADD)
tunefs_lustre_DEPENDENCIES := $(mkfs_lustre_DEPENDENCIES)
+if LDISKFS_ENABLED
+tunefs_lustre_SOURCES += mount_utils_ldiskfs.c
+endif
if ZFS_ENABLED
tunefs_lustre_SOURCES += mount_utils_zfs.c
tunefs_lustre_CPPFLAGS += -DHAVE_IOCTL_IN_UNISTD_H
static int print_only = 0;
static int upgrade_to_18 = 0;
+#ifdef HAVE_LDISKFS_OSD
#define FSLIST_LDISKFS "ldiskfs"
#define HAVE_FSLIST
+#else
+ #define FSLIST_LDISKFS ""
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
#ifdef HAVE_FSLIST
#define FSLIST_ZFS "|zfs"
mop->mo_ldd.ldd_magic = LDD_MAGIC;
mop->mo_ldd.ldd_config_ver = 1;
mop->mo_ldd.ldd_flags = LDD_F_NEED_INDEX | LDD_F_UPDATE | LDD_F_VIRGIN;
+#ifdef HAVE_LDISKFS_OSD
mop->mo_ldd.ldd_mount_type = LDD_MT_LDISKFS;
+#else
+ mop->mo_ldd.ldd_mount_type = LDD_MT_ZFS;
+#endif
mop->mo_ldd.ldd_svindex = INDEX_UNASSIGNED;
mop->mo_mgs_failnodes = 0;
mop->mo_stripe_count = 1;
int ret;
switch (ldd->ldd_mount_type) {
+#ifdef HAVE_LDISKFS_OSD
case LDD_MT_LDISKFS:
case LDD_MT_LDISKFS2:
ret = ldiskfs_write_ldd(mop);
break;
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
case LDD_MT_ZFS:
ret = zfs_write_ldd(mop);
int ret;
switch (ldd->ldd_mount_type) {
+#ifdef HAVE_LDISKFS_OSD
case LDD_MT_LDISKFS:
case LDD_MT_LDISKFS2:
ret = ldiskfs_read_ldd(dev, ldd);
break;
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
case LDD_MT_ZFS:
ret = zfs_read_ldd(dev, ldd);
{
vprint("checking for existing Lustre data: ");
+#ifdef HAVE_LDISKFS_OSD
if (ldiskfs_is_lustre(dev, mount_type)) {
vprint("found\n");
return 1;
}
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
if (zfs_is_lustre(dev, mount_type)) {
vprint("found\n");
int ret;
switch (ldd->ldd_mount_type) {
+#ifdef HAVE_LDISKFS_OSD
case LDD_MT_LDISKFS:
case LDD_MT_LDISKFS2:
ret = ldiskfs_make_lustre(mop);
break;
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
case LDD_MT_ZFS:
ret = zfs_make_lustre(mop);
int ret;
switch (ldd->ldd_mount_type) {
+#ifdef HAVE_LDISKFS_OSD
case LDD_MT_LDISKFS:
case LDD_MT_LDISKFS2:
ret = ldiskfs_prepare_lustre(mop,
default_mountopts, default_len,
always_mountopts, always_len);
break;
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
case LDD_MT_ZFS:
ret = zfs_prepare_lustre(mop,
int ret;
switch (ldd->ldd_mount_type) {
+#ifdef HAVE_LDISKFS_OSD
case LDD_MT_LDISKFS:
case LDD_MT_LDISKFS2:
ret = ldiskfs_tune_lustre(dev, mop);
break;
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
case LDD_MT_ZFS:
ret = zfs_tune_lustre(dev, mop);
int ret;
switch (ldd->ldd_mount_type) {
+#ifdef HAVE_LDISKFS_OSD
case LDD_MT_LDISKFS:
case LDD_MT_LDISKFS2:
ret = ldiskfs_label_lustre(mop);
break;
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
case LDD_MT_ZFS:
ret = zfs_label_lustre(mop);
{
int ret = 0;
+#ifdef HAVE_LDISKFS_OSD
ret = ldiskfs_init();
if (ret)
return ret;
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
ret = zfs_init();
/* we want to be able to set up a ldiskfs-based filesystem w/o
void osd_fini(void)
{
+#ifdef HAVE_LDISKFS_OSD
ldiskfs_fini();
+#endif /* HAVE_LDISKFS_OSD */
#ifdef HAVE_ZFS_OSD
zfs_fini();
#endif /* HAVE_ZFS_OSD */