Zaprezentowana zostanie wersja ialloc z systemu plików Ext2. Algorytm ten realizuje funkcja ext2_new_inode().

Funkcja ext2_new_inode() tworzy dyskowy i-węzeł Ext2, zwracając adres odpowiedniej struktury i-węzła (albo NULL, jeżeli wystąpi błąd). Funkcja ta korzysta z dwóch parametrów: adresu dir struktury i-węzła, dotyczącej katalogu, do którego ma być wstawiony nowy i-węzeł, oraz parametru mode, określającego rodzaj tworzonego i-węzła.

Funkcja wykonuje następujące działania:
1. Wywołuje get_empty_inode() w celu zaalokowania nowej struktury i-węzła i zainicjowania jego pola i_sb na adres superbloku (przechowywany w polu dir->i_sb).
2. Wywołuje lock_super() w celu otrzymania wyłącznego dostępu do struktury superbloku. Funkcja ta testuje i ustawia wartość pola s_lock i, jeśli to konieczne, usypia aktualny proces do czasu, aż flaga przyjmie wartość 0.
3. Jeżeli nowym i-węzłem jest katalog, próbuje umieścić go tak, aby katalogi były równomiernie rozłożone pomiędzy częściowo wypełnione grupy bloków. Nowy katalog jest alokowany w grupie bloków, mającej zarówno dużo wolnego miejsca, jak i mały współczynnik katalogów w stosunku do i-węzłów. Jeśli nie ma takiej grupy, jest alokowany w grupie mającej największą liczbę wolnych bloków wśród wszystkich grup, mających większą od średniej liczbę wolnych i-węzłów. (Średnia to całkowita liczba wolnych i-węzłów, podzielona przez liczbę grup bloków).
4. Jeżeli nowy i-węzeł nie jest katalogiem, funkcja alokuje go w grupie bloków z wolnym i-węzłem. Grupa jest wybierana tak, że funkcja szuka jej zaczynając od katalogu nadrzędnego i odchodzi od niego coraz dalej (haszowanie kwadratowe).
5. Wywołuje load_inode_bitmap() w celu pobrania mapy bitowej i-węzłów wybranej grupy bloków i wyszukuje w niej pierwszy pusty bit, uzyskując numer pierwszego wolnego i-węzła dyskowego.
6. Alokuje i-węzeł dyskowy: ustawia odpowiedni bit w mapie bitowej i-węzłów i zaznacza bufor zawierający mapę bitową jako "brudną". Oprócz tego, jeżeli system plików został zamontowany z flagą MS_SYNCHRONOUS, wywołuje ll_rw_block() i czeka na zakończenie operacji zapisu.
7. Zmniejsza pole bg_free_inodes_count deskryptora grupy bloku. Jeżeli nowy i-węzeł jest katalogiem, zwiększa bg_used_dir_count. Oznacza jako brudny bufor zawierający deskryptor grupy.
8. Zmniejsza pole s_free_inodes_count superbloku dysku i zaznacza zawierający go bufor jako brudny. Ustawia pole s_dirt struktury superbloku VFS na 1.
9. Inicjuje pola struktury i-węzła. W szczególności ustawia numer i-węzła i_no i kopiuje wartość xtime.tv_sec do i_atime, i_mtime i i_c_time. Ładuje także do pola i_block_group w strukturze ext2_inode_info indeks grupy bloków.
10. Wstawia nową strukturę i-węzła do inode_hashtable.
11. Wywołuje funkcję mark_inode_dirty() w celu przesunięcia struktury i-węzła do listy brudnych i-węzłów superbloku.
12. Wywołuje funkcję unlock_super() w celu odblokowania struktury superbloku.
13. Zwraca adres nowego struktury i-węzła.