Ejemplo n.º 1
0
status_t dlist_add(nspace *vol, ino_t vnid)
{
	DPRINTF(0, ("dlist_add vnid %Lx\n", vnid));

	ASSERT(IS_DIR_CLUSTER_VNID(vnid));
	ASSERT(dlist_find(vol, CLUSTER_OF_DIR_CLUSTER_VNID(vnid)) == -1LL);
	ASSERT(vnid != 0);

	if (vol->dlist.entries == vol->dlist.allocated) {
		if (dlist_realloc(vol, vol->dlist.allocated + DLIST_ENTRY_QUANTUM) < 0)
			return -ENOMEM;
	}
	vol->dlist.vnid_list[vol->dlist.entries++] = vnid;

	return B_OK;
}
Ejemplo n.º 2
0
status_t
dlist_add(nspace *vol, ino_t vnid)
{
	DPRINTF(0, ("dlist_add vnid %" B_PRIdINO "\n", vnid));

	ASSERT(IS_DIR_CLUSTER_VNID(vnid) || IS_ARTIFICIAL_VNID(vnid));
	ASSERT(vnid != 0);
	// XXX: check for duplicate entries

	if (vol->dlist.entries == vol->dlist.allocated) {
		if (dlist_realloc(vol, vol->dlist.allocated + DLIST_ENTRY_QUANTUM) < 0)
			return B_ERROR;
	}
	vol->dlist.vnid_list[vol->dlist.entries++] = vnid;

	return B_OK;
}
Ejemplo n.º 3
0
status_t
dlist_remove(nspace *vol, ino_t vnid)
{
	uint32 i;

	DPRINTF(0, ("dlist_remove vnid %" B_PRIdINO "\n", vnid));

	for (i=0;i<vol->dlist.entries;i++)
		if (vol->dlist.vnid_list[i] == vnid)
			break;
	ASSERT(i < vol->dlist.entries);
	if (i == vol->dlist.entries)
		return ENOENT;
	for (;i<vol->dlist.entries-1;i++)
		vol->dlist.vnid_list[i] = vol->dlist.vnid_list[i+1];
	vol->dlist.entries--;

	if (vol->dlist.allocated - vol->dlist.entries > 2*DLIST_ENTRY_QUANTUM)
		return dlist_realloc(vol, vol->dlist.allocated - DLIST_ENTRY_QUANTUM);

	return B_OK;
}
Ejemplo n.º 4
0
status_t dlist_remove(nspace *vol, ino_t vnid)
{
	int i;

	DPRINTF(0, ("dlist_remove vnid %Lx\n", vnid));
	ASSERT(IS_DIR_CLUSTER_VNID(vnid));

	for (i=0;i<vol->dlist.entries;i++)
		if (vol->dlist.vnid_list[i] == vnid)
			break;
	ASSERT(i < vol->dlist.entries);
	if (i == vol->dlist.entries)
		return -ENOENT;
	for (;i<vol->dlist.entries-1;i++)
		vol->dlist.vnid_list[i] = vol->dlist.vnid_list[i+1];
	vol->dlist.entries--;

	if (vol->dlist.allocated - vol->dlist.entries > 2*DLIST_ENTRY_QUANTUM)
		return dlist_realloc(vol, vol->dlist.allocated - DLIST_ENTRY_QUANTUM);

	return B_OK;
}