#define DEBUG_SUBSYSTEM S_OSD
-#include <lustre_ver.h>
#include <libcfs/libcfs.h>
#include <obd_support.h>
#include <lustre_net.h>
{ .oid = FLD_INDEX_OID, .name = "fld" },
{ .oid = MDD_LOV_OBJ_OID, .name = LOV_OBJID },
{ .oid = OFD_HEALTH_CHECK_OID, .name = HEALTH_CHECK },
- { .oid = ACCT_USER_OID, .name = "acct_usr_inode" },
- { .oid = ACCT_GROUP_OID, .name = "acct_grp_inode" },
- { .oid = ACCT_PROJECT_OID, .name = "acct_prj_inode" },
{ .oid = REPLY_DATA_OID, .name = REPLY_DATA },
{ .oid = 0 }
};
la->la_valid = LA_MODE | LA_UID | LA_GID;
la->la_mode = S_IFDIR | S_IRUGO | S_IWUSR | S_IXUGO;
la->la_uid = la->la_gid = 0;
- rc = __osd_attr_init(env, o, sa_hdl, tx, la, parent);
+ rc = __osd_attr_init(env, o, sa_hdl, tx, la, parent, NULL);
sa_handle_destroy(sa_hdl);
if (rc)
goto commit;
uint64_t zapid;
LASSERT(fid);
+ LASSERT(!fid_is_acct(fid));
+
if (zdn != NULL)
*zdn = NULL;
zapid = osd->od_root;
if (buf)
strncpy(buf, name, bufsize);
- if (fid_is_acct(fid))
- zapid = MASTER_NODE_OBJ;
} else {
zapid = osd_get_idx_for_fid(osd, fid, buf, NULL);
}
fid_oid(fid) == OSD_FS_ROOT_OID;
}
-static inline int osd_oid(struct osd_device *dev, __u32 local_oid,
- uint64_t *oid)
-{
- switch (local_oid) {
- case ACCT_USER_OID:
- *oid = dev->od_iusr_oid;
- return 0;
- case ACCT_GROUP_OID:
- *oid = dev->od_igrp_oid;
- return 0;
- case ACCT_PROJECT_OID:
- /* TODO: real oid */
- CERROR("unsupported quota oid: %#x\n", local_oid);
- return -ENOTSUPP;
- }
-
- LASSERTF(0, "invalid oid: %u for quota type", local_oid);
- return -ENOTSUPP;
-}
-
int osd_fid_lookup(const struct lu_env *env, struct osd_device *dev,
const struct lu_fid *fid, uint64_t *oid)
{
if (OBD_FAIL_CHECK(OBD_FAIL_SRV_ENOENT))
RETURN(-ENOENT);
- if (unlikely(fid_is_acct(fid))) {
- rc = osd_oid(dev, fid_oid(fid), oid);
- if (rc)
- RETURN(rc);
- } else if (unlikely(fid_is_fs_root(fid))) {
+ LASSERT(!fid_is_acct(fid));
+
+ if (unlikely(fid_is_fs_root(fid))) {
*oid = dev->od_root;
} else {
zapid = osd_get_name_n_idx(env, dev, fid, buf,
static int
osd_oi_init_compat(const struct lu_env *env, struct osd_device *o)
{
- uint64_t odb, sdb;
- int rc;
+ uint64_t sdb;
+ int rc;
ENTRY;
rc = osd_oi_find_or_create(env, o, o->od_root, "O", &sdb);
- if (rc)
- RETURN(rc);
-
- o->od_O_id = sdb;
-
- /* Create on-disk indexes to maintain per-UID/GID inode usage.
- * Those new indexes are created in the top-level ZAP outside the
- * namespace in order not to confuse ZPL which might interpret those
- * indexes as directories and assume the values are object IDs */
- rc = osd_oi_find_or_create(env, o, MASTER_NODE_OBJ,
- oid2name(ACCT_USER_OID), &odb);
- if (rc)
- RETURN(rc);
- o->od_iusr_oid = odb;
-
- rc = osd_oi_find_or_create(env, o, MASTER_NODE_OBJ,
- oid2name(ACCT_GROUP_OID), &odb);
- if (rc)
- RETURN(rc);
- o->od_igrp_oid = odb;
+ if (!rc)
+ o->od_O_id = sdb;
RETURN(rc);
}
struct osd_idmap_cache *idc;
int rc;
+ LASSERT(!fid_is_acct(fid));
+
idc = osd_idc_find(env, osd, fid);
if (idc != NULL)
return idc;