*
* You should have received a copy of the GNU General Public License
* version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
*
* GPL HEADER END
*/
rc = fld_index_lookup(env, fld, new_range->lsr_start, range);
if (rc == 0) {
/* In case of duplicate entry, the location must be same */
- LASSERT((range_compare_loc(new_range, range) == 0));
+ LASSERT((lu_seq_range_compare_loc(new_range, range) == 0));
GOTO(out, rc = -EEXIST);
}
/* Check for merge case, since the fld entry can only be increamental,
* so we will only check whether it can be merged from the left. */
if (new_range->lsr_start == range->lsr_end && range->lsr_end != 0 &&
- range_compare_loc(new_range, range) == 0) {
+ lu_seq_range_compare_loc(new_range, range) == 0) {
range_cpu_to_be(tmp, range);
rc = dt_declare_delete(env, fld->lsf_obj,
(struct dt_key *)&tmp->lsr_start, th);
}
if (new_range->lsr_start == range->lsr_end && range->lsr_end != 0 &&
- range_compare_loc(new_range, range) == 0) {
+ lu_seq_range_compare_loc(new_range, range) == 0) {
range_cpu_to_be(tmp, range);
rc = dt_delete(env, fld->lsf_obj,
(struct dt_key *)&tmp->lsr_start, th);
rc = fld_cache_lookup(fld->lsf_cache, seq, fld_rec);
if (rc == 0) {
- *range = *fld_rec;
- if (range_within(range, seq))
- rc = 0;
- else
- rc = -ENOENT;
+ *range = *fld_rec;
+ if (lu_seq_range_within(range, seq))
+ rc = 0;
+ else
+ rc = -ENOENT;
}
- CDEBUG(D_INFO, "%s: lookup seq = "LPX64" range : "DRANGE" rc = %d\n",
+ CDEBUG(D_INFO, "%s: lookup seq = %#llx range : "DRANGE" rc = %d\n",
fld->lsf_name, seq, PRANGE(range), rc);
RETURN(rc);
const struct lu_seq_range *range)
{
struct thandle *th;
+ struct dt_device *dt = lu2dt_dev(fld->lsf_obj->do_lu.lo_dev);
int rc;
ENTRY;
LASSERT(mutex_is_locked(&fld->lsf_lock));
- th = dt_trans_create(env, lu2dt_dev(fld->lsf_obj->do_lu.lo_dev));
+ if (dt->dd_rdonly)
+ RETURN(0);
+
+ th = dt_trans_create(env, dt);
if (IS_ERR(th))
RETURN(PTR_ERR(th));
GOTO(out, rc);
}
- rc = dt_trans_start_local(env, lu2dt_dev(fld->lsf_obj->do_lu.lo_dev),
- th);
+ rc = dt_trans_start_local(env, dt, th);
if (rc)
GOTO(out, rc);
if (rc == -EEXIST)
rc = 0;
out:
- dt_trans_stop(env, lu2dt_dev(fld->lsf_obj->do_lu.lo_dev), th);
+ dt_trans_stop(env, dt, th);
RETURN(rc);
}
EXPORT_SYMBOL(fld_insert_entry);
LASSERT(dt_obj != NULL);
if (!dt_object_exists(dt_obj)) {
- lu_object_put(env, &dt_obj->do_lu);
+ dt_object_put(env, dt_obj);
dt_obj = dt_find_or_create(env, dt, &fid, &dof, attr);
fld->lsf_new = 1;
if (IS_ERR(dt_obj)) {
if (rc < 0) {
if (dt_obj != NULL)
- lu_object_put(env, &dt_obj->do_lu);
+ dt_object_put(env, dt_obj);
fld->lsf_obj = NULL;
}
RETURN(rc);
ENTRY;
if (fld->lsf_obj != NULL) {
if (!IS_ERR(fld->lsf_obj))
- lu_object_put(env, &fld->lsf_obj->do_lu);
+ dt_object_put(env, fld->lsf_obj);
fld->lsf_obj = NULL;
}
EXIT;