AC_DEFINE(HAVE_DMU_OBJSET_DISOWN_3ARG, 1,
[Have dmu_objset_disown() with 3 args])
])
- dnl #
- dnl # ZFS 0.7.2 adds new method dmu_tx_mark_netfree
- dnl #
- LB_CHECK_COMPILE([if ZFS has 'dmu_tx_mark_netfree'],
- dmu_tx_mark_netfree, [
- #include <sys/dmu.h>
- ],[
- dmu_tx_t *tx = NULL;
- dmu_tx_mark_netfree(tx);
- ],[
- AC_DEFINE(HAVE_DMU_TX_MARK_NETFREE, 1,
- [Have dmu_tx_mark_netfree])
- ])
])
AS_IF([test "x$enable_zfs" = xyes], [
}
tx = dmu_tx_create(osd->od_os);
- dmu_tx_mark_netfree(tx);
dmu_tx_hold_free(tx, oid, 0, DMU_OBJECT_END);
osd_tx_hold_zap(tx, osd->od_unlinked->dn_object, osd->od_unlinked,
FALSE, NULL);
&osd->od_index_backup_stop, backup);
}
-#ifndef HAVE_DMU_TX_MARK_NETFREE
-#define dmu_tx_mark_netfree(tx)
-#endif
-
#endif /* _OSD_INTERNAL_H */
/* declare we'll free some blocks ... */
if (start < obj->oo_attr.la_size) {
read_unlock(&obj->oo_attr_lock);
- dmu_tx_mark_netfree(oh->ot_tx);
dmu_tx_hold_free(oh->ot_tx, obj->oo_dn->dn_object, start, len);
} else {
read_unlock(&obj->oo_attr_lock);
oh = container_of0(th, struct osd_thandle, ot_super);
LASSERT(oh->ot_tx != NULL);
- dmu_tx_mark_netfree(oh->ot_tx);
-
/* declare that we'll remove object from fid-dnode mapping */
zapid = osd_get_name_n_idx(env, osd, fid, NULL, 0, &dn);
osd_tx_hold_zap(oh->ot_tx, zapid, dn, FALSE, NULL);
}
run_test 804 "verify agent entry for remote entry"
-cleanup_805() {
- do_facet $SINGLEMDS zfs set quota=$old $fsset
- unlinkmany $DIR/$tdir/f- 1000000
- trap 0
-}
-
-test_805() {
- local zfs_version=$(do_node $SINGLEMDS cat /sys/module/zfs/version)
- [ "$(facet_fstype mds1)" != "zfs" ] &&
- skip "ZFS specific test" && return
- [ $(version_code $zfs_version) -lt $(version_code 0.7.2) ] &&
- skip "netfree not implemented before 0.7" && return
- [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.57) ]] ||
- { skip "Need MDS version at least 2.10.57" && return 0; }
-
- local fsset
- local freekb
- local usedkb
- local old
- local quota
- local pref="osd-zfs.lustre-MDT0000."
-
- # limit available space on MDS dataset to meet nospace issue
- # quickly. then ZFS 0.7.2 can use reserved space if asked
- # properly (using netfree flag in osd_declare_destroy()
- fsset=$(do_facet $SINGLEMDS lctl get_param -n $pref.mntdev)
- old=$(do_facet $SINGLEMDS zfs get -H quota $fsset | \
- gawk '{print $3}')
- freekb=$(do_facet $SINGLEMDS lctl get_param -n $pref.kbytesfree)
- usedkb=$(do_facet $SINGLEMDS lctl get_param -n $pref.kbytestotal)
- let "usedkb=usedkb-freekb"
- let "freekb=freekb/2"
- if let "freekb > 5000"; then
- let "freekb=5000"
- fi
- do_facet $SINGLEMDS zfs set quota=$(((usedkb+freekb)*1024)) $fsset
- trap cleanup_805 EXIT
- mkdir $DIR/$tdir
- $LFS setstripe -E 1M -L mdt $DIR/$tdir || error "DoM not working"
- createmany -m $DIR/$tdir/f- 1000000 && error "ENOSPC wasn't met"
- rm -rf $DIR/$tdir || error "not able to remove"
- do_facet $SINGLEMDS zfs set quota=$old $fsset
- trap 0
-}
-run_test 805 "ZFS can remove from full fs"
-
#
# tests that do cleanup/setup should be run at the end
#
if (strlen(mop->mo_mkfsopts) != 0)
snprintf(str, len, " -o %s", mop->mo_mkfsopts);
- if (mop->mo_device_kb)
- snprintf(str, len, " -o quota=%llu",
- mop->mo_device_kb * 1024);
return str;
}