RETURN(0);
}
+ if (conf != NULL && conf->loc_flags & LOC_F_NEW)
+ GOTO(out, rc = 0);
+
rc = osd_fid_lookup(env, osd, lu_object_fid(l), &oid);
if (rc == 0) {
LASSERT(obj->oo_db == NULL);
/* Default to max data size covered by a level-1 indirect block */
static unsigned long osd_sync_destroy_max_size =
1UL << (DN_MAX_INDBLKSHIFT - SPA_BLKPTRSHIFT + SPA_MAXBLOCKSHIFT);
-CFS_MODULE_PARM(osd_sync_destroy_max_size, "ul", ulong, 0444,
- "Maximum object size to use synchronous destroy.");
+module_param(osd_sync_destroy_max_size, ulong, 0444);
+MODULE_PARM_DESC(osd_sync_destroy_max_size, "Maximum object size to use synchronous destroy.");
static inline void
osd_object_set_destroy_type(struct osd_object *obj)
if (unlikely(qsd == NULL))
return 0;
- LASSERT(qtype >= 0 && qtype < MAXQUOTAS);
+ LASSERT(qtype >= 0 && qtype < LL_MAXQUOTAS);
qi->lqi_type = qtype;
/* inode accounting */
if (!S_ISREG(dt->do_lu.lo_header->loh_attr))
valid &= ~(LA_SIZE | LA_BLOCKS);
+ if (valid & LA_CTIME && la->la_ctime == obj->oo_attr.la_ctime)
+ valid &= ~LA_CTIME;
+
+ if (valid & LA_MTIME && la->la_mtime == obj->oo_attr.la_mtime)
+ valid &= ~LA_MTIME;
+
+ if (valid & LA_ATIME && la->la_atime == obj->oo_attr.la_atime)
+ valid &= ~LA_ATIME;
+
if (valid == 0)
GOTO(out, rc = 0);
fid_seq_is_local_file(fid_seq(fid))))
type = DMU_OTN_UINT8_METADATA;
- /* Create a new DMU object. */
- oid = dmu_object_alloc(osd->od_os, type, 0,
- DMU_OT_SA, DN_MAX_BONUSLEN, tx);
+ /* Create a new DMU object using the default dnode size. */
+ oid = osd_dmu_object_alloc(osd->od_os, type, 0, 0, tx);
rc = -sa_buf_hold(osd->od_os, oid, osd_obj_tag, dbp);
LASSERTF(rc == 0, "sa_buf_hold "LPU64" failed: %d\n", oid, rc);
transaction group. */
LASSERT(tx->tx_txg != 0);
- oid = zap_create_flags(osd->od_os, 0, flags | ZAP_FLAG_HASH64,
- DMU_OT_DIRECTORY_CONTENTS,
- 14, /* == ZFS fzap_default_block_shift */
- DN_MAX_INDBLKSHIFT, /* indirect block shift */
- DMU_OT_SA, DN_MAX_BONUSLEN, tx);
+ oid = osd_zap_create_flags(osd->od_os, 0, flags | ZAP_FLAG_HASH64,
+ DMU_OT_DIRECTORY_CONTENTS,
+ 14, /* == ZFS fzap_default_blockshift */
+ DN_MAX_INDBLKSHIFT, /* indirect blockshift */
+ 0, tx);
rc = -sa_buf_hold(osd->od_os, oid, osd_obj_tag, zap_dbp);
if (rc)
struct lu_attr *la, uint64_t parent,
struct osd_thandle *oh)
{
- dmu_buf_t *db;
- int rc;
+ const struct lu_fid *fid = lu_object_fid(&obj->oo_dt.do_lu);
+ dmu_buf_t *db;
+ int rc;
struct osd_device *osd = osd_obj2dev(obj);
LASSERT(S_ISREG(la->la_mode));
* blocksize is selected based on the file size rather than the
* making broad assumptions based on the osd type.
*/
- if (!lu_device_is_md(osd2lu_dev(osd))) {
+ if ((fid_is_idif(fid) || fid_is_norm(fid)) && osd->od_is_ost) {
rc = -dmu_object_set_blocksize(osd->od_os, db->db_object,
osd->od_max_blksz, 0, oh->ot_tx);
if (unlikely(rc)) {
LASSERT(osd_invariant(obj));
rc = osd_init_lma(env, obj, fid, oh);
- if (rc) {
+ if (rc != 0)
CERROR("%s: can not set LMA on "DFID": rc = %d\n",
osd->od_svname, PFID(fid), rc);
- /* ignore errors during LMA initialization */
- rc = 0;
- }
out:
up_write(&obj->oo_guard);