static unsigned
lqe64_hash_hash(struct cfs_hash *hs, const void *key, unsigned mask)
{
- return cfs_hash_u64_hash(*((__u64 *)key), mask);
+ return cfs_hash_64(*((__u64 *)key), 0) & mask;
}
static void *lqe64_hash_key(struct hlist_node *hnode)
"freed:%lu, repeat:%u\n", hash,
d.lid_inuse, d.lid_freed, repeat);
repeat++;
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(cfs_time_seconds(1));
+ schedule_timeout_interruptible(cfs_time_seconds(1));
goto retry;
}
EXIT;
*/
struct lquota_site *lquota_site_alloc(const struct lu_env *env, void *parent,
bool is_master, short qtype,
- struct lquota_entry_operations *ops)
+ const struct lquota_entry_operations *ops)
{
struct lquota_site *site;
char hashname[15];
*
* \param env - the environment passed by the caller
* \param lqe - is the quota entry to refresh
+ * \param find - don't create entry on disk if true
*/
-static int lqe_read(const struct lu_env *env, struct lquota_entry *lqe)
+static int lqe_read(const struct lu_env *env,
+ struct lquota_entry *lqe, bool find)
{
struct lquota_site *site;
int rc;
LQUOTA_DEBUG(lqe, "read");
- rc = site->lqs_ops->lqe_read(env, lqe, site->lqs_parent);
+ rc = site->lqs_ops->lqe_read(env, lqe, site->lqs_parent, find);
if (rc == 0)
/* mark the entry as up-to-date */
lqe->lqe_uptodate = true;
* \param env - the environment passed by the caller
* \param site - lquota site which stores quota entries in a hash table
* \param qid - is the quota ID to be found/created
+ * \param find - don't create lqe on disk in case of ENOENT if true
*
* \retval 0 - success
* \retval -ve - failure
*/
-struct lquota_entry *lqe_locate(const struct lu_env *env,
- struct lquota_site *site, union lquota_id *qid)
+struct lquota_entry *lqe_locate_find(const struct lu_env *env,
+ struct lquota_site *site,
+ union lquota_id *qid,
+ bool find)
{
struct lquota_entry *lqe, *new = NULL;
int rc = 0;
lqe_init(new);
/* read quota settings from disk and mark lqe as up-to-date */
- rc = lqe_read(env, new);
+ rc = lqe_read(env, new, find);
if (rc)
GOTO(out, lqe = ERR_PTR(rc));