|
��������
fs - ������ ����, ����������� �������� �������
���������
#include <sys/types.h> #include <sys/param.h> #include <sys/filsys.h>
��������
�� ���� ����� �������� ������� �������� � �����������
������� ������������ �������� ������ ����������. ������
��� (������� ����������) �������� �� ��������� ���������� ��������, ������� ����� 1024 ����. ������ ����
������ ������, � ���������� ������� ����� ���������.
������������� ������������ ���������� BUFSIZ, ������
������� �������. ��� ���������� �� ���������� �����
<stdio.h>. ���������� ������� � � ���, ��� �������
cpio(1), fsdb(1M) � ����� ������������� �������� � 512
�������� �������. ��� ������� ������������ �������
�������������� ����/�����. �������� ����� �� ������������ 512-������� �����, ��� ��� ��� ������������� ������� dd(1) ���� ��������� ������ ������ ������� ���������. ������, ��� ��������� ������ �������� �����/������ ��-�������� ������� �� 512-��������.
������ 512 ���� ������� 0 ����� ��������� ���������� �� �������������� ��������. ������ �������� ������� 0 ���������� �����������.
������ 1 �� ������������. � ��������, ������� �� �������, ������������� ��������� ������ � ���������� �����. ��������� ��� �� �������� ��������� ��������� ��������.
��������� ����� ��������� ������:
struct filsys { ushort s_isize; /* ������ ������ ���������� ������ � ������ */ daddr_t s_fsize; /* ������ ����� ���� � ������ */ short s_nfree; /* ���������� ������� � ������� s_free */ daddr_t s_free[NICFREE]; /* ������ ��������� ������ */ short s_ninode; /* ���-�� ���������� ���- ��� � ����. s_inode */ ino_t s_inode[NICINOD]; /* ������ ��������� �����- ����� ������ */ char s_flock; /* ������. ��� ����. �� ������� ����. ������ */ char s_ilock; /* ������. ��� ����. �� ������� ����. ������ */ char s_fmod; /* ���� ����������� �����- ����� */ char s_ronly; /* ���� ������������ ������ �� ������ */ time_t s_time; /* ����� ���������� �����- ����� ���������� */ short s_dinfo[4]; /* ���������� �� ���������� */ daddr_t s_tfree; /* ���-�� ��������� ������ */ ino_t s_tinode; /* ���-�� ��������� �����- ����� ������ */ char s_fname[6]; /* ��� �������� ������� */ char s_fpack[6]; /* ��� ���� */ long s_fill[14]; /* �����������, ����� sizeof(filsys)==512 */ long s_state; /* ��������� �������� ���- ���� */ long s_magic; /* ���. ����� ����� (���- ��� V.3) ����. ����. */ long s_type; /* ��� ����� �������� ���- ���� */ }; #define FsMAGIC 0xfd187e20 /* �������� s_magic */ #define Fs1b 1 /* ���� �� 512 ���� */ #define Fs2b 2 /* ���� �� 1024 ����� */ #define FsOKAY 0x7c269d38 /* s_state: ���������� */ #define FsACTIVE 0x5e72d81a /* s_state: �������� */ #define FsBAD 0xcb096f43 /* s_state: ����.������ */ #define FsBADBLK 0xbadbc14b /* s_state: ���� ������ ����� */
���� s_type ���������� ��� �������� �������. � ��������� ����� �������������� ��� ���� �������� ������: ������, � 512-�������� ����������� ������� � �����, ����������, � 1024-�������� �������. ���� s_magic ������������ ��� ����, ����� �������� ������ 512-������� ������� �� �����. ���� �������� ����� ���� �� ��������� � ���������� ������ FsMAGIC, �� ��� �������� ������� ����������� ������ Fs1b, �� ���� ������� ��������� ������; � ��������� ������ ������������ �������� s_type. ������������ ������� ��������� � ������������ �������������� ������� ���������� ������ � ������ ���������� ��������.
���� s_state ���������� ��������� �������� �������. ��� ������� ����������������, �������������� �������� ������� s_state ����� �������� FsOKAY. ����� ����, ��� ������� ���� ������������ � ����� �������� ���������, ��������� ���������� �� FsACTIVE. ��-������� �������������� �������� �������� �������. ���� �� ����� �������� �� ��������������, ��� �������� �������� ������� ����������, ��� �����������, �� ���������� ��������� FsBAD. �����, ����� ����, ��� ��� ����� ��������������, ����� ����������� ��������� FsOKAY.
���� s_isize ������ ����� ������� ����� ������ ����� ������ ���������� ������; ��� ������ ���������� ���������� �� ������� �����. ����� �������, ������ ���������� ������ ����� ����� s_isize-2 �����. �������� s_fsize ���� ������ ����, ������� ������������ ���������� ��� ���������� ������. ��� ��� ����� ������������ �������� ��� ��������� ������ ������� ������; ���� �������� ����� ����� ���������� �� ������ ��������� ������ ���, ��������, �������������, �� �� ��������� ������� ��������� ��������������� ���������. ����� ����, ������ ��������� ������ ���������, ����� ������������� ���������� ��������� ������� ������ �� �������� ������������� ������.
������ ���������� ������������ ��� ������� ���� ������� ��������� �������. ������ s_free �������� �� 50 ������� ��������� ������ s_free [0], ..., s_free [s_nfree - 1]. ���� � ������� s_free [0] �������� ��������� ��������� ������ ���������� ������������. ������� ����� (������� �����) � ���� ����� �������� ���������� (�� 50) ������� ��������� ������, ��������� � ����������� 50 ������, ������ ������ ����� ������������ ������ ������� �� ��������� ������� ������ ���������� ������������ � ����������� ����������. ����� �������, ������ ������� ������ ���������� ������������ ������������� � ������ ���������� ����� � ������� ��� ��, ��� ���� ����� s_nfree � s_free, �������� ���� ��������� ������.
����� ������ ��������� ����, ���� ��������� �������� s_nfree � �������� ���� � ������� s_free [s_nfree]. ���� ����� ����������� ����� ����� 0, ��� ��������, ��� �� ���� ��� ��������� ������, �� ���� ����� ����� ������. ���� �������� s_nfree ����� �������, ����� ��������� ���������� ����, ��������� ��� ������� ����� � ���� s_nfree, � ����������� 50 ���� - � ������ s_free.
��� ������������ �����, ���� �������� s_nfree ����� 50, ������� ����������� ���� ����� s_nfree � s_free � ������ ����� �����, �������� ���� � ���������� s_nfree ������ 0. � ����� ������, ����� �������������� ����� ���������� � ������� ������� s_free [s_nfree], ����� ���� ���� s_nfree ������������� �� 1.
���� s_tfree ������ ����� ���������� ��������� ������, ��������� �������� �������.
���� s_ninode ������ ���������� ������� ��������� ���������� ������ � ������� s_inode. ����� ������ ��������� ��������� ����� � ������, ����� s_ninode ������ 0, ��� ���� ������� ��������� �� 1 � �������� ��������� � ������� s_inode [s_ninode]. ���� �� �������� s_ninode ����� 0, ����� ��������� ��������� ������ � ������ ��������� (�� ����� 100) ��������� � ������ s_inode, ����� ���� ����� ���������� �������� ���������.
��� ������������ ���������, ���� �������� s_ninode ������ 100, ����� ��������� ������� ��������� � ������� ������� s_inode [s_ninode] � ��������� ���� s_ninode �� 1. ���� �� �������� s_ninode ����� 100, �� ����� ���������� � ����������� ����� ������������. ���� � ���, ��� ������� ������� ��������� ���������� ������������� ������ ��� ��������� �� ������; � ����� ��������� ���� �������, �������� �� ��� �����.
�������� s_tinode ���� ����� ���������� ��������� ���������� ������, ��������� �������� �������.
����� s_flock � s_ilock �������������� ������ � ����� �������� ������� � ����������� ������; �� �������� �� ����� �� ����������. �������� ����� s_fmod �� ����� ����� �� ��������������; ���� ���� ����������, ��� ��������� ��� ������� � ������ ���� ������� �� ���� �� ����� ���������� ���������� ���������� � �������� �������.
���� s_ronly �������� ������ �� ������.
���� s_time ���� ����� ��������� ����������� ���������� �������� �������. ��� ���������� ����������� ������, ��������� � 00:00:00 1 ������ 1970�. (�� ��������).
���� s_fname ���� ��� �������� �������, � s_fpack - ��� ����.
������ ���������� ������ ���������� � 1. ����� ��������� ���������� 64 �����. ��������� ����� 1 � ��������� ����� �� ������������. ��������� ����� 2 �������������� ��� ��������� �������� �������� �������. ������ ��������� �� ����� ����������������� ����������. ������ ��������� ������������� ������ �����. ������ ��������� ����� ��. � inode(4).
�����
/usr/include/sys/fs/*
��. �����
mount(2), inode(4).
finito(1M), fsck(1M), fsdb(1M), mkfs(1M) � �����������
��������������.
|