рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрдврд╝рдирд╛ рд╕реАрдЦрдирд╛

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?



рдЫрд╡рд┐



рд╣рдо рдЕрдХрд╛рджрдорд┐рдХ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдУрдПрд╕ рдХреЛрд░реНрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред



рдкрд┐рдЫрд▓реА рдмрд╛рд░, рд╣рдордиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдХреЛрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдордиреЗ рд▓реЛрдбреЗрдмрд▓ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдПрдХ рд╕рд░рд▓ "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!" рд▓рд┐рдЦрд╛ред рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд╕рд░рд▓ рдФрд░ рдмреЗрдХрд╛рд░ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдЦрд╛ред рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред



рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдбрд┐рд╕реНрдХ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрдврд╝рд╛рдирд╛ рд╣реИред рдЕрдм рддрдХ, рд╡рд╣ рдХреЗрд╡рд▓ рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА (рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдбреНрд╕) рдкрдврд╝реЗрдЧреА, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрднреА рднреА рдХрд╛рдлреА рдХрдард┐рди рд╣реИред



рдЗрддрдирд╛ рдХрдо рдХреНрдпреЛрдВ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣рдореЗрдВ рдЕрдкрдиреА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рдВрд░рдЪрдирд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдпрд╣ рдбрд┐рд╕реНрдХ рдкрд░ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕реЗ рдХрд┐ SLAB рдФрд░ RCUред рдпрд╣ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╢рдмреНрдж рдФрд░ рдереЛрдбрд╝рд╛ рдХреЛрдб, рдЗрд╕рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪрдордХрджрд╛рд░ рд╣реЛрдЧреАред







рдмреЛрд░рд┐рдВрдЧ рд╢реБрд░реВ





рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рд╕рд░рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рд╣реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:







рдЪрд▓реЛ рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:







рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рди рдбрд┐рд╕реНрдХ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ext2 / 3 рдореЗрдВ рдмреНрд▓реЙрдХ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдПрдХ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдХреЗрд╡рд▓ ext2 / 3 рдРрд╕реЗ рдХрдИ рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЦреБрдж рдХреЛ рдПрдХ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд▓реЗрдВрдЧреЗред рдпрд╣ рдкреНрд░рд╛рд░реВрдк рдЕрдкреНрд░рдЪрд▓рд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдирдИ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБ рдЗрд╕рд╕реЗ рджреВрд░ рдЬрд╛ рд░рд╣реА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, btrfs рдПрдХ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд╛рд░ рдкрд░ рдХрдИ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рднреЗрдбрд╝реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗ рдЖрдУред



рд╣рдордиреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдмреНрд▓реЙрдХ / рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдбреНрд╕ рдХреЗ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдФрд░ рдмрд┐рдЯрдореИрдкреНрд╕ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкрд╣рд▓реЗ рддреАрди рдмреНрд▓реЙрдХреЛрдВ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдбреНрд╕ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХрд┐рддрдиреА рд╣реИ? рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдЗрд╕ рдорд╛рди рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ; рдпрд╣ рджреГрдврд╝рддрд╛ рд╕реЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЫреЛрдЯрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рд╕реЗ рдкрд╣рд▓реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдиреЛрдбреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рдПрдВрдЧреЗред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реА рдЫреЛрдЯреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЯреЗрдмрд▓ рдХреЗ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрдиреЗ рдкрд░ рдлреНрд░реА рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдбреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХрд╛ рдореМрдХрд╛ рд╣реИред



Mke2fs рдЙрдкрдпреЛрдЧрд┐рддрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ ext2 / 3 рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЗрдВ -i рд╕реНрд╡рд┐рдЪ рд╣реЛрддрд╛ рд╣реИ , рдЬреЛ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрджрд┐ рдЖрдк -38 1638 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ 16obytes рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдб рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред рдореИрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ - рдореИрдВ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд┐рдирд╛ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ 16 Kb рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдиреЛрдб рдмрдирд╛рдКрдВрдЧрд╛ (рдЕрдм рдХрдо рд╕реЗ рдХрдо)ред



рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рдЕрдВрддрд┐рдо рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рдВрджреБ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ 512, 1024, 2048 рдФрд░ 4096 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реВрдВрдЧрд╛ - рдЕрд╕рд╛рдорд╛рдиреНрдп рдХреБрдЫ рднреА рдирд╣реАрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкреГрд╖реНрда рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ (рд╣рдо рдЗрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рд▓реМрдЯреЗрдВрдЧреЗ), рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрдбрд╝реЗ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреНрд▓рд╛рд╕рд┐рдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдЪреБрдирдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╖рдп рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдПрд╕ рдкрд░ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдкреБрд╕реНрддрдХ рдореЗрдВ , рдЬрд╛рдирдХрд╛рд░реА рджреА рдЧрдИ рд╣реИ рдХрд┐ 4 рдХреЗрдмреА рдХреЗ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде, 60 - 70% рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рд░рдЦреА рдЬрд╛рдПрдВрдЧреАред рдЕрдзрд┐рдХ рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИрдВ, рдХрдо рд╡рд┐рдЦрдВрдбрди, рдЙрдЪреНрдЪ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рднреА рдмрд░реНрдмрд╛рдж рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдореБрдЦреНрдп рд╕реАрдордХ рд╣реИ - 4 рдХреЗрдмреА рдХреЗ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде, рдореБрдлреНрдд рдмреНрд▓реЙрдХ рдХрд╛ рдПрдХ рдмрд┐рдЯрдореИрдк рдХреЗрд╡рд▓ 128 рдПрдордмреА рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдХрд╡рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред



рд╡рд╛рдкрд╕ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП





рдпрд╣ рдХреБрдЫ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЖрдЗрдП рд╣рдо рдЙрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рдирдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:



struct aufs_disk_super_block { __be32 dsb_magic; __be32 dsb_block_size; __be32 dsb_root_inode; __be32 dsb_inode_blocks; };
      
      







рд╕реБрдкрд░ рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ 0 рдмреНрд▓реЙрдХ рдбрд┐рд╕реНрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдпрд╣ рдПрдХ рдЬрд╛рджреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ aufs рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ (рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛)ред



рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░реЛрдВ (рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╕реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗ, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рд╕ рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ dsb_block_size рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реВрдЪрдХрд╛рдВрдХ рдиреЛрдбреНрд╕ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмреНрд▓реЙрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ dsb_inode_blocks рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ - рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



Dsb_root_inode рдлрд╝реАрд▓реНрдб рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдмрд╕ рд░реВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕рдВрд░рдЪрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдЧреА, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдпрд╣ рдЕрдзрд┐рдХ рдареЛрд╕ рд▓рдЧрддрд╛ рд╣реИред



рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдкреНрд░рдХрд╛рд░ рдЦреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ "рдЬреИрд╕рд╛ рд╣реИ" рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦреЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдХрд╛рд░ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдЕрднреА рднреА рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдмрдбрд╝реЗ рдПрдВрдбрд┐рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЯрд╛рдЗрдк рдирд╛рдо (__be32) рдХрд╣рддрд╛ рд╣реИред



рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджреЗрддрд╛ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рддрдп рд╣реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд░рд╛рдп рд╣реИ рдХрд┐ рдереЛрдбрд╝рд╛ рдПрдВрдбрд┐рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рд╡реНрдпрд╛рдкрд╛рд░ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред



__Be32 рдкреНрд░рдХрд╛рд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, uint32_t рдХрд╛ рдПрдХ рдкрд░реНрдпрд╛рдп рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдирд╛рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЪрд░ рдмрдбрд╝реЗ рдПрдВрдбрд┐рдпрди (рдПрдХ рддрд░рд╣ рдХреА рдкреНрд░рд▓реЗрдЦрди рд╡рд┐рдзрд┐) рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдереЛрдбрд╝рд╛ рдПрдВрдбрд┐рдпрди рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рд╣реИред



рдЕрдм рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ - рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдб:



 struct aufs_disk_inode { __be32 di_first; __be32 di_blocks; __be32 di_size; __be32 di_gid; __be32 di_uid; __be32 di_mode; __be64 di_ctime; };
      
      







рд╕реВрдЪрдХрд╛рдВрдХ рдиреЛрдб рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдмрд╣реБрдд рд╡рд┐рд╡рд┐рдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдПрдХ рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдПрдХреНрд╕реНрдЯреЗрдВрдЯ - рдбрд┐рд╕реНрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рдЕрдиреБрдХреНрд░рдо, рдЕрд░реНрдерд╛рдд, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдПрдХ рд╕рддрдд рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред Di_first рдФрд░ di_blocks рдлрд╝реАрд▓реНрдб рдХреНрд░рдорд╢рдГ рдкрд╣рд▓реЗ рдмреНрд▓реЙрдХ рдФрд░ рдмреНрд▓реЙрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВред



рдпрд╣рд╛рдВ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕реА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреИрд╕реЗ? рджрд░рдЕрд╕рд▓, рдЗрд╕ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдердб рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ / рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╕рд╛рдЗрдЬ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рдСрдкрд░реЗрд╢рдВрд╕ рдХрд╛ рдкреВрд░рд╛-рдкреВрд░рд╛ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдПрдХ рд╕рд┐рд░рджрд░реНрдж рд╣реИ (рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ), рдЗрд╕рд▓рд┐рдП рд╣рдо рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдкреВрд░рд╛-рдкреВрд░рд╛ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдЖрд░реНрдЯрд┐рдХрд▓ рдореЗрдВ рдЗрд╕рд╕реЗ рднреА рдЬреНрдпрд╛рджрд╛ред



рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдВрдЧрдарди рдХреЗ рдХреБрдЫ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИрдВ - рдлрд╛рдЗрд▓реЗрдВ рдЦрдВрдбрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдкрд░ рдЕрдЪреНрдЫрд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдИрдПрд╕рдУ 9660 рдореЗрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝рд╛рдЗрд▓ рд╡рд┐рдЦрдВрдбрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ)ред



рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ extents рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕рд┐рдХ рдЯреНрд░реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде, рд╡реЗ рдЦрдВрдбрд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдмрдирддреЗ рд╣реИрдВред



рдбрд┐рд╕реНрдХ рдкрд░ рдЬрдЧрд╣ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реВрдЪрдХрд╛рдВрдХ рдиреЛрдб di_size рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреЛ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐, рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред



Di_gid рдФрд░ di_uid рдлрд╝реАрд▓реНрдб рд╕рдореВрд╣ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ; рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рд▓рд╛ред



Di_mode рдлрд╝реАрд▓реНрдб - рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд╛рдореА рд╕рдореВрд╣, рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд╛рдореА рдФрд░ рдЕрдиреНрдп рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рд╕рдореВрд╣ рдФрд░ рдорд╛рд▓рд┐рдХ рдХреЛ рдмрдЪрд╛рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Di_mode рдЙрд╕ рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдиреЛрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд╛рд╣реЗ рд╡рд╣ рд╡рд╕реНрддреБ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдпрд╛ рдлрд╝рд╛рдЗрд▓ рд╣реЛред



рдЕрдВрдд рдореЗрдВ, di_ctime рдлрд╝реАрд▓реНрдб рдЙрд╕ рддрд╛рд░реАрдЦ рдХреЛ рд░рдЦрддреА рд╣реИ рдЬрдм рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЧрдИ рдереАред рдЖрдорддреМрд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЕрдВрддрд┐рдо рд╕рдВрд╢реЛрдзрди рдФрд░ рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрди рдкрд░ рд╣рдереМрдбрд╝рд╛ рдорд╛рд░реЗрдВрдЧреЗред



рдкреНрд░рд╛рд░реВрдк рдбрд┐рд╕реНрдХ





рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╣рдордиреЗ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬреЛ рдбрд┐рд╕реНрдХ рдХреЛ рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд╛рдПрдЧрд╛ред рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдПрдХ рдбрд┐рд╕реНрдХ рд╕рд┐рд░реНрдл рдПрдХ рдлрд╛рдЗрд▓ рд╣реИ (рдпрд╣рд╛рдВ рдкреНрд░рд╕рд┐рджреНрдз рдпреВрдирд┐рдХреНрд╕ рдбрд┐рдЬрд╛рдЗрди рд╕рдорд╛рдзрд╛рди рдХреЛ рдпрд╛рдж рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ)ред рдЗрд╕рд▓рд┐рдП рдбрд┐рд╕реНрдХ рд╕реНрд╡рд░реВрдкрдг рдХреЗрд╡рд▓ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕реБрдкрд░рдмреНрд▓реЙрдХ, рдмрд┐рдЯрдореИрдкреНрд╕ рдФрд░ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА (рдЕрдм рддрдХ рдЦрд╛рд▓реА) рд╣реИред



рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХреЛ C ++ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рд▓рд┐рдиреБрд╕ рдХреЗ рд░рд╡реИрдпреЗ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреЛ рдЪрд╛рд▓реВ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдЦреБрдж рд╕реЗ рдирд┐рдкрдЯреЗрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдореБрдЦреНрдп рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдЧреБрдЬрд░реЗрдВ:







рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЖрдкрдХреЛ -s рдпрд╛ --block_size рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдФрд░ рдмреНрд▓реЙрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП -b рдпрд╛ --blocks рдХреБрдВрдЬреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдПрдЧреАред



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рдкрд░рд┐рд╖реНрдХреГрдд рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдбрд┐рд╕реНрдХ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рд┐рдЦрд╛рдПрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╣рдо рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред рд▓реЗрдХрд┐рди, рд╣рдорд╛рд░реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдПрдХ рдбрд┐рд╕реНрдХ рдХреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдлрд╝рд╛рдЗрд▓реЛрдВ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдорд┐рд▓реЗрдЧреАред



рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╡рд╛рдкрд╕





рдЕрдм рд╣рдорд╛рд░реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рд╣рдо рдбрд┐рд╕реНрдХ рд╕реЗ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдкрдврд╝рдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЪрд▓реЛ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:



 struct aufs_super_block { uint32_t asb_magic; uint32_t asb_inode_blocks; uint32_t asb_block_size; uint32_t asb_root_inode; uint32_t asb_inodes_in_block; };
      
      







рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧреАред рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ - рд╣рдо рдбрд┐рд╕реНрдХ рд╕реЗ aufs_disk_super_block рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрд╛рдЗрдЯ рдХреНрд░рдо рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдХреЗ aufs_super_block рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, asb -inodes_in_block)ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдХрд┐рд╕реА рднреА рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЬрдЧрд╣ рд╣реИред



рдЕрдВрддрд┐рдо рдкреЛрд╕реНрдЯ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ:







рджреЛ рд╕рдВрд░рдЪрдирд╛рдПрдВ - рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рддреАрд╕рд░реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рд╣рдорд╛рд░реЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╕реБрдкрд░_рдмреНрд▓реЙрдХ (рдЗрдиреЛрдб рдХреА рддрд░рд╣, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреА рддрд░рд╣) рдореЗрдВ рд╡реЗ рд╕рднреА рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд╛рднрд┐рдХ рдХреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП?



рдХрд░реНрдиреЗрд▓ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рд╢реНрддреЗ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ (рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ рд░рдЪрдирд╛ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдХрд╣рддреЗ рд╣реИрдВ)ред рд╕реБрдкрд░ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХрд░реНрдиреЗрд▓ рд╕реЗ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд╕реБрдкрд░_рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХреНрд╖реЗрддреНрд░ рд╣реИ:



 struct super_block { ... void *s_fs_info; ... };
      
      







рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣рдо рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╣рд╛рдБ рд╣рдо рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ aufs_super_block рдХреЛ рд╕реЗрд╡ рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЬрд╣рд╛рдБ рднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ super_block рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рд╣рдо aufs_super_block рд╕рдВрд░рдЪрдирд╛ рддрдХ рднреА рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рд╛рдБ рдпрд╣ рд╕рднреА рдЧреАрдд рд╣реИрдВ, рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдбрд┐рд╕реНрдХ рд╕реЗ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдкрдврд╝рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ:



 static struct aufs_super_block *aufs_super_block_read(struct super_block *sb) { struct aufs_super_block *asb = (struct aufs_super_block *)kzalloc(sizeof(struct aufs_super_block), GFP_NOFS); struct aufs_disk_super_block *dsb = NULL; struct buffer_head *bh = NULL; if (!asb) { pr_err("aufs cannot allocate super block\n"); return NULL; } bh = sb_bread(sb, 0); if (!bh) { pr_err("cannot read 0 block\n"); goto free_memory; } dsb = (struct aufs_disk_super_block *)bh->b_data; aufs_super_block_fill(asb, dsb); brelse(bh); if (asb->asb_magic != AUFS_MAGIC) { pr_err("wrong magic number %u\n", (unsigned)asb->asb_magic); goto free_memory; } return asb; free_memory: kfree(asb); return NULL; }
      
      







рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрд░реАрдХреЗ рд╣реИрдВ; kzalloc (рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде kmalloc ) рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдореЙрд▓реЛрдХ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЭрдВрдбреЗ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрдЬрд╝рд▓реЛрдХ рдФрд░ рдХрд┐рдореАрд▓реЛрдХ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдПрдХ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рднрд░рддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рдХрд┐рдореАрд▓реИрдХ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдзреНрд╡рдЬ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдмрд▓рддрд╛ рд╣реИ)ред



рдореИрдВрдиреЗ рдЭрдВрдбреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛, рд╡реЗ рдХреНрдпреЛрдВ рд╣реИрдВ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрд╛рд░рдВрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЖрдк рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдбреАрдПрдордП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдЬрдЧрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП "рдЯреНрдпреВрдирд┐рдВрдЧ" рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, GFP_NOFS рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрдЯрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЯреВрд▓ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧрд╛, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред



рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рдирд╣реАрдВ рднреВрд▓рддреЗ рд╣реИрдВ рдХрд┐ рдореЗрдореЛрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдереАред



рдЕрдЧрд▓рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдмрд┐рдВрджреБ sb_bread рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЙрд▓ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдбрд┐рд╕реНрдХ рд╕реЗ рдкрдврд╝ рд░рд╣рд╛ рд╣реИ! рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдФрд░ рдмреНрд▓реЙрдХ рдирдВрдмрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ - рдХрд╛рдлреА рд╕рд░рд▓ред рдлрд╝рдВрдХреНрд╢рди рдмрдлрд░_рд╣реЗрдб рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдмреНрд▓реЙрдХ рдбреЗрдЯрд╛ рд╕реНрд╡рдпрдВ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ b_data рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реИред



рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рди рднреВрд▓реЗрдВ рдХрд┐ рдкрдврд╝рдирд╛ рд╕рдлрд▓ рдерд╛ред



рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЪрд╛рд░реНрдЯ рдореЗрдВ рдмрджрд▓рдХрд░ рдкреЙрдЗрдВрдЯрд░ рдХреЛ aufs_disk_super_block рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред Aufs_super_block_fill рдлрд╝рдВрдХреНрд╢рди aufs_super_block рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдХрд┐рдП рдмрд┐рдирд╛ aufs_disk_super_block рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд░рддрд╛ рд╣реИ:



 static inline void aufs_super_block_fill(struct aufs_super_block *asb, struct aufs_disk_super_block const *dsb) { asb->asb_magic = be32_to_cpu(dsb->dsb_magic); asb->asb_inode_blocks = be32_to_cpu(dsb->dsb_inode_blocks); asb->asb_block_size = be32_to_cpu(dsb->dsb_block_size); asb->asb_root_inode = be32_to_cpu(dsb->dsb_root_inode); asb->asb_inodes_in_block = asb->asb_block_size / sizeof(struct aufs_disk_inode); }
      
      







рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, be32_to_cpu рдлрд╝рдВрдХреНрд╢рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдВрдмрд░ рдХреЛ рдзрд░реНрдорд╛рдиреНрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред



рдЬрдм рд╣рдордиреЗ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╡рд╛рдж рдХрд╛рд░реНрдп рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдШрдЯрд╛рддрд╛ рд╣реИред рдПрдХ рдмреНрд▓реЙрдХ рдХреЛ рддреБрд░рдВрдд рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕реЗ рд╣реА рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ 0 рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ - рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЧрдВрднреАрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдмреНрд▓реЙрдХ рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рд╕реЗ рд░реАрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдПрдХ рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░реАрдб рдмреНрд▓реЙрдХ рдХрд╛ рдХреИрд╢ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЙрд╕реА рдмреНрд▓реЙрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рд░реАрдб рдмреНрд▓реЙрдХ рд▓реМрдЯрд╛рдПрдВ (рдпрджрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЕрднреА рднреА рдХреИрд╢ рдореЗрдВ рд╣реИ)ред



рдЖрдЦрд┐рд░реА рдЪреАрдЬ рдЬреЛ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдЬрд╛рджреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ aufs рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред



рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдЧреЛрдЯреЛ рджреЗрдЦрд╛ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдЧреЛрдЯреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХрд╛рдлреА рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП - рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдореБрдЦреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдкрде рдФрд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд╛рдлреА рдЖрдХрд░реНрд╖рдХ рд╣реИ, рдлрд┐рд░ рдЧреЛрдЯреЛ рд╣рдорд╛рд░реЗ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреЛрдЯреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ - рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдпрд╣рд╛рдВ рдбрд╛рд▓рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд░реНрдиреЗрд▓ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧреЛрдЯреЛ рд╣реЗрдЯрд░реНрд╕ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдРрд╕реЗ рд╕реНрдерд╛рди рд╣реИрдВ рдЬреЛ рджреБрд░реНрд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдЪреМрдХрд╕ рдкрд╛рдардХ рдиреЗ рд╢рд╛рдпрдж рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рднрд┐рдиреНрди рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдиреЗ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рддреЛ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдкрдврд╝рддреЗ рд╕рдордп sb_bread рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕ рдЖрдХрд╛рд░ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ? рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдмреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ (рдХрд┐рддрдиреЗ рдмреНрд▓реЙрдХ ...) рдкрд░ рд╕реЗрдЯ рд╣реИред рдФрд░ рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣реИред



рд╣рдордиреЗ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛, рд╣рдо рдЗрд╕реЗ aufs_fill_super (рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рджреЗрдЦреЗрдВ) рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ, рдЕрдм рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



 static int aufs_fill_sb(struct super_block *sb, void *data, int silent) { struct inode *root = NULL; struct aufs_super_block *asb = aufs_super_block_read(sb); if (!asb) return -EINVAL; sb->s_magic = asb->asb_magic; sb->s_fs_info = asb; sb->s_op = &aufs_super_ops; if (sb_set_blocksize(sb, asb->asb_block_size) == 0) { pr_err("device does not support block size %u\n", (unsigned)asb->asb_block_size); return -EINVAL; } root = aufs_inode_get(sb, asb->asb_root_inode); if (IS_ERR(root)) return PTR_ERR(root); sb->s_root = d_make_root(root); if (!sb->s_root) { pr_err("aufs cannot create root\n"); return -ENOMEM; } return 0; }
      
      







рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдо рд╕реВрдЪрдХ рдХреЛ a_s_super_block рдХреЛ s_fs_info рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо sb_set_blocksize рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╕рд╣реА рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднреАрддрд░ рдХрд╣рддреА рд╣реИ, рдмреНрд▓реЙрдХ рдХрд╛ рдЖрдХрд╛рд░ 512 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдкреЗрдЬ рдХреЗ рдЖрдХрд╛рд░ рддрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░реЛрдВ рдХреА рд╣рдорд╛рд░реА рдкрд╕рдВрдж рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдПрдХ рдмрдбрд╝реЗ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдирд╣реАрдВ)ред



рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдореЗрдВ aufs_super_block рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдореБрдХреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдВрддрд┐рдо рдкреЛрд╕реНрдЯ рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



 static void aufs_put_super(struct super_block *sb) { struct aufs_super_block *asb = (struct aufs_super_block *)sb->s_fs_info; if (asb) kfree(asb); sb->s_fs_info = NULL; pr_debug("aufs super block destroyed\n"); }
      
      







рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЗрдлреНрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ kmalloc рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдпреБрдЧреНрдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рднреА, рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХрдИ kfree рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ (рдЕрднреА рднреА рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ ), рд▓реЗрдХрд┐рди рд╣рдо рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЧрдПред



Aufs_fill_sb рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди aufs_inode_get рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣реИред рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдбрдореА рдЗрдиреЛрдб рдмрдирд╛рдпрд╛, рдЕрдм рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдбрд┐рд╕реНрдХ рд╕реЗ рдХреИрд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдПред



рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ - IS_ERR рдФрд░ PTR_ERR рдЬреЛрдбрд╝реА рдкрд░ рдЦреАрдВрдЪрддрд╛ рд╣реВрдБ ред рдпреЗ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд░рд▓ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рдХрд░реНрдиреЗрд▓ рдХреЛ рдЕрдкрдиреА рдореЗрдореЛрд░реА рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рд╕реВрдЪрдХ рдХреЗ рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕реВрдЪрдХ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ; рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ, рдФрд░ рди рдХреЗрд╡рд▓ рдХрд░реНрдиреЗрд▓ рдореЗрдВ ред



рд╣рдо рд╕реБрдкрд░ рдиреЛрдбреНрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╣рдордиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдореБрд▓рд╛рдХрд╛рдд рдХреА рдереАред рдЕрдм рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рднрд░реЗрдВрдЧреЗ:



 static struct super_operations const aufs_super_ops = { .alloc_inode = aufs_inode_alloc, .destroy_inode = aufs_inode_free, .put_super = aufs_put_super, };
      
      







рд╣рдордиреЗ aufs_inode_alloc рдФрд░ aufs_inode_free рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рдВрдХреЗрдд рдЬреЛрдбрд╝реЗред рдЗрдиреЛрдб рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╣реИрдВ, рдпрд╣рд╛рдВ рд╣рдо SLAB (рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдЬрд╛рдирд╡рд░ рдХреЛ kmalloc рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ) рдФрд░ RCU (рдХрд╛рдлреА рдереЛрдбрд╝рд╛) рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗред



рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХрд╛ рдЖрд╡рдВрдЯрди рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ - рдореЗрдореЛрд░реА рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реБрдП (рдЬреИрд╕рд╛ рдХрд┐ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдерд╛):



 struct aufs_inode { struct inode ai_inode; uint32_t ai_block; };
      
      







рдЗрд╕ рдмрд╛рд░ рд╣рдо рд░рдЪрдирд╛ рдХреЗ рдмрдЬрд╛рдп "рд╡рд┐рд░рд╛рд╕рдд" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред C рдореЗрдВ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд▓рдЧрддрд╛ (рдЬреЛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ C рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╕ aufs_inode рд╕рдВрд░рдЪрдирд╛ рдХреА рдкрд╣рд▓реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЖрдзрд╛рд░ рд╕рдВрд░рдЪрдирд╛ (рдмреЗрд╕ рдХреНрд▓рд╛рд╕) рдмрдирд╛рддреЗ рд╣реИрдВ - рдЗрдиреЛрдб рд╕рдВрд░рдЪрдирд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, aufs_inode рдХреЗ рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд (рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рд╕реВрдЪрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ aufs_inode рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ)ред



рд░рдЪрдирд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ "рд╡рд┐рд░рд╛рд╕рдд" рдХреЛ рдХрд░реНрдиреЗрд▓ рд╕реЗ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рд▓рд╛рднрджрд╛рдпрдХ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП рджреЛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЖрд╡рдВрдЯрди рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдорд╛рдорд▓рд╛ рдерд╛)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд▓рдЧрднрдЧ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдиреЛрдб рдХреЗ рдЕрдВрджрд░ рдореМрдЬреВрдж рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рдирд┐рдпрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдкрд╡рд╛рдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдбрд┐рд╕реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред



рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо SLAB рдПрд▓реЛрдХреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред SLAB рдПрд▓реЛрдХреЗрдЯрд░ - рдПрдХ рдХреИрд╢рд┐рдВрдЧ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреЗ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рдХрд╛рд░рдг, рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред SLAB рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдореЗрдореЛрд░реА рдХреЗ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП OS рдкрд░ рд╕рд╡рд╛рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрд░реЛрдз рдкрд░ рдХреНрд░рдорд╢рдГ рдЙрдирд╕реЗ рдЫреЛрдЯреЗ рдЦрдВрдб рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ, OS рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрдо рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рддреЗрдЬреА рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред



рд▓реЗрдХрд┐рди рд╢реБрд░реВ рдореЗрдВ, рдПрд╕рдПрд▓рдПрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдЧрддрд┐ рдореЗрдВ рд▓рд╛рдн рд╕рд░рд▓ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХреЗ рдХрд╛рд░рдг рди рдХреЗрд╡рд▓ (рдФрд░ рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ) рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдореЗрдореЛрд░реА рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдореЗрдВ рдХрдореА рдХреЗ рдХрд╛рд░рдгред рджрд░рдЕрд╕рд▓, SLAB рдПрд▓реЛрдХреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рди рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдореГрддрд┐ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЖрд░рдВрдн рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореНрдпреВрдЯреЗрдХреНрд╕, рд╕реНрдкрд┐рдирд▓реЙрдХ рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдЬрдм рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ "рд╕рд╣реА" рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдкреБрди: рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╡рд┐рд╡рд░рдг рдФрд░ рдорд╛рдк рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдореВрд▓ рд▓реЗрдЦ рджреЗрдЦреЗрдВ ред



рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ SLAB рдПрд▓реЛрдХреЗрдЯрд░ рд╣реИрдВ - SLAB, SLUB рдФрд░ SLOBред рд╣рдо рдЙрдирдХреЗ рдмреАрдЪ рдорддрднреЗрджреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ, рд╡реЗ рдПрдХ рд╣реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рддреЛ, рдПрдХ SLAB рдПрд▓реЛрдХреЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:



 int aufs_inode_cache_create(void) { aufs_inode_cache = kmem_cache_create("aufs_inode", sizeof(struct aufs_inode), 0, (SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD), aufs_inode_init_once); if (aufs_inode_cache == NULL) return -ENOMEM; return 0; }
      
      







SLAB рдмрдирд╛рддреЗ рд╕рдордп, kmem_cache_create рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо, рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдлрд╝рдВрдХреНрд╢рди (рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдкрд╣рд▓реА рдмрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдореИрдВ рдЗрд╕рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рднреА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ SLAB рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ - рдЕрдВрддрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред



рд╣рдо рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп aufs_inode_cache_create рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдЬреЛрдбрд╝реА рдлрд╝рдВрдХреНрд╢рди рднреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдореЙрдбреНрдпреВрд▓ рдЕрдирд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ:



 void aufs_inode_cache_destroy(void) { rcu_barrier(); kmem_cache_destroy(aufs_inode_cache); aufs_inode_cache = NULL; }
      
      







Kmem_cache_destroy рдлрд╝рдВрдХреНрд╢рди SLAB рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИредрд╡рд┐рдирд╛рд╢ рдХреЗ рд╕рдордп рддрдХ, рдЗрд╕ рдХреИрд╢ рд╕реЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рдПрдХ рдЕрдкреНрд░рд┐рдп рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рд╣рд╛рд░реНрдб-рдЯреВ-рдХреИрдЪ рдореБрд╕реАрдмрддреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ред



рдЕрдм рдЖрд░рд╕реАрдпреВ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реНрдкрд░реНрд╢ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, RCU рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рддрдВрддреНрд░ рд╣реИ (рд╕рд╛рде рд╣реА рд▓реЙрдХ-рдлреНрд░реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрдореЛрд░реА рд░рд┐рд▓реАрдЬрд╝)ред RCU рд╣реА рд╣рдХрджрд╛рд░ Habr├й рдкрд░ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд╣реИ рдЗрд╕ рддрд░рд╣ рдХреЗ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛, рдФрд░ рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ RCU рдЕрдиреБрд░рдХреНрд╖рдХ рдиреЗ рдПрдХ рдкреВрд░реА рдкреБрд╕реНрддрдХ рд▓рд┐рдЦреА рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреА рдЙрдкрдЬ рдХреЛ рднреА рдЫреБрдЖред



рд▓реЗрдХрд┐рди рдЖрд░рд╕реАрдпреВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреВрд░реЗ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рд╕реЗ рд╣рдореЗрдВ рдХреЗрд╡рд▓ rcu_barrier (рдЬреИрд╕реЗ kfree рдХреЗ рд╕рд╛рде, рдпрд╣рд╛рдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ) рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдпрджрд┐ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рддреЛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╕рдВрд░рдХреНрд╖рд┐рдд рдЖрд░рд╕реАрдпреВ рдбреЗрдЯрд╛ рдкрд░ рд╕рднреА рд▓рдВрдмрд┐рдд рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд▓реМрдЯрд╛ рджреЗрдЧрд╛, рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ рдЕрд╡рд░реБрджреНрдз рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╣рд╛ рд╣реИред рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рд╣рдо рдереЛрдбрд╝рд╛ рдХрдо рджреЗрдЦреЗрдВрдЧреЗред



рд╕реНрдореГрддрд┐ рдЖрдмрдВрдЯрди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВ, рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:



 struct inode *aufs_inode_alloc(struct super_block *sb) { struct aufs_inode *const i = (struct aufs_inode *) kmem_cache_alloc(aufs_inode_cache, GFP_KERNEL); if (!i) return NULL; return &i->ai_inode; }
      
      







рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП SLAB рдПрд▓реЛрдХреЗрдЯрд░ ( kmem_cache_alloc рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрдиреЛрдб рдореЗрдВ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ - рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рд▓реАрдЬрд╝ рдлрд╝рдВрдХреНрд╢рди рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ:



 void aufs_inode_free(struct inode *inode) { call_rcu(&inode->i_rcu, aufs_free_callback); }
      
      







рдпрд╣рд╛рдВ рд╣рдо рдлрд┐рд░ рд╕реЗ рдЖрд░рд╕реАрдпреВ рдХреЗ рд╕рд╛рде рд╣реИрдВред рдпрд╣рд╛рдВ рд▓реЙрдХ-рдлреНрд░реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рддрд╛рд▓реЗ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдзрд╛рдЧреЗ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рджреВрд╕рд░рд╛ рдзрд╛рдЧрд╛ рдХрд┐рд╕реА рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реЗред рдЗрд╕рд▓рд┐рдП, рд▓реЙрдХ-рдлреНрд░реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ, рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЖрд░рд╕реАрдпреВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред Call_rcu рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, aufs_free_callback рд░рд┐рд▓реАрдЬрд╝ рдлрд╝рдВрдХреНрд╢рди) рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджреЗрд░реА рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рди рд╣реЛ рдЬрд╛рдПред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦрд┐рдд rcu_barrier рд╕рднреА рд▓рдВрдмрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред



рдХреНрдпрд╛ рдЖрдк рдердХреЗ рд╣реБрдП рд╣реИрдВ?рдпрд╣ рдареАрдХ рд╣реИ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рдкрди рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪ рд░рд╣реЗ рд╣реИрдВред рдЕрдм рд╣рдо рдбрд┐рд╕реНрдХ рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдб рдХреЛ рдкрдврд╝реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓рд┐рдЦрд┐рдд aufs_inode_get рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рд╣реИ:



 struct inode *aufs_inode_get(struct super_block *sb, uint32_t no) { struct aufs_super_block const *const asb = AUFS_SB(sb); struct buffer_head *bh = NULL; struct aufs_disk_inode *di = NULL; struct aufs_inode *ai = NULL; struct inode *inode = NULL; uint32_t block = 0, offset = 0; inode = iget_locked(sb, no); if (!inode) return ERR_PTR(-ENOMEM); if (!(inode->i_state & I_NEW)) return inode; ai = AUFS_INODE(inode); block = aufs_inode_block(asb, no); offset = aufs_inode_offset(asb, no); pr_debug("aufs reads inode %u from %u block with offset %u\n", (unsigned)no, (unsigned)block, (unsigned)offset); bh = sb_bread(sb, block); if (!bh) { pr_err("cannot read block %u\n", (unsigned)block); goto read_error; } di = (struct aufs_disk_inode *)(bh->b_data + offset); aufs_inode_fill(ai, di); brelse(bh); unlock_new_inode(inode); return inode; read_error: pr_err("aufs cannot read inode %u\n", (unsigned)no); iget_failed(inode); return ERR_PTR(-EIO); }
      
      







рдореИрдВ рд╕рд░рд▓ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ - AUFS_SB рдФрд░ AUFS_INODE рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдХреНрд░рдорд╢рдГ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╕реЗ рд╕реБрдкрд░_рдмреНрд▓реЙрдХ рдФрд░ рдЗрдиреЛрдб рдореЗрдВ aufs_super_block рдФрд░ aufs_inode рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдореИрдВ рдЙрдирдХрд╛ рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛ (рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ), рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпреЗ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдХреИрд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВред



Aufs_inode_block рдФрд░ aufs_inode_offset рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЖрдкрдХреЛ рдмреНрд▓реЙрдХ рдирдВрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдб рдирдВрдмрд░ рджреНрд╡рд╛рд░рд╛ рдмреНрд▓реЙрдХ рдХреЗ рднреАрддрд░ рдСрдлрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ - рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ, рд╕рд╛рдзрд╛рд░рдг рдЕрдВрдХрдЧрдгрд┐рдд, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрди рдкрд░ рднреА рдирд╣реАрдВ рдЬреАрддрд╛ред



рдФрд░ рдЕрдм рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП - iget_locked рдФрд░ unlock_new_inode рдлрд╝рдВрдХреНрд╢рди рдХреА рдПрдХ рдЬреЛрдбрд╝реАред рдЬреИрд╕рд╛ рдХрд┐ рдмреНрд▓реЙрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд░реНрдиреЗрд▓ рдЗрдиреЛрдб рдХреИрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рди рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдбрд┐рд╕реНрдХ рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдб рдХреЛ рди рдкрдврд╝реЗрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдПрдХ рд╕рд╛рде рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрди рд╕рднреА рдХреЛ рдПрдХ рдЗрдирдХреЛрдб рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реЛ рд╕рдХреЗрдВред рдЗрд╕реА рддрд░рд╣ рдХрд╛ рддрд░реНрдХ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рднреА рдЬреНрдпрд╛рджрд╛ рдпрд╣ рдмреНрд▓реЙрдХ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред



рддреЛ idet_locked рдлрд╝рдВрдХреНрд╢рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХреИрд╢ рдореЗрдВ рдЗрдиреЛрдб рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрдиреЛрдб рдирд╣реАрдВ рдорд┐рд▓рдиреЗ рдкрд░ рдПрдХ рдирдП рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреИрд╢ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛, рддреЛ I_NEW рдзреНрд╡рдЬ i_state рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕ рдиреЛрдб рдХрд╛ рд╕реНрдкрд┐рдирд▓реЙрдХ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (i_lock рдлрд╝реАрд▓реНрдб)ред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ i_state рдлрд╝реАрд▓реНрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ I_NEW рдзреНрд╡рдЬ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ рдХреИрд╢реНрдб рдЗрдирдХреЛрдб рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рд╣рдореЗрдВ рдЗрдиреЛрдб рднрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдбрд┐рд╕реНрдХ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдмреНрд▓реЙрдХ рдкрдврд╝рддреЗ рд╣реИрдВ (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд sb_bread рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред



Aufs_inode_fill рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдлрд┐рд▓рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ:



 static void aufs_inode_fill(struct aufs_inode *ai, struct aufs_disk_inode const *di) { ai->ai_block = be32_to_cpu(di->di_first); ai->ai_inode.i_mode = be32_to_cpu(di->di_mode); ai->ai_inode.i_size = be32_to_cpu(di->di_size); ai->ai_inode.i_blocks = be32_to_cpu(di->di_blocks); ai->ai_inode.i_ctime.tv_sec = be64_to_cpu(di->di_ctime); ai->ai_inode.i_mtime.tv_sec = ai->ai_inode.i_atime.tv_sec = ai->ai_inode.i_ctime.tv_sec; ai->ai_inode.i_mtime.tv_nsec = ai->ai_inode.i_atime.tv_nsec = ai->ai_inode.i_ctime.tv_nsec = 0; i_uid_write(&ai->ai_inode, (uid_t)be32_to_cpu(di->di_uid)); i_gid_write(&ai->ai_inode, (gid_t)be32_to_cpu(di->di_gid)); }
      
      







рдлрд┐рд░, рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ, рд╕рд┐рд╡рд╛рдп i_uid_write рдФрд░ i_gid_write рдлрд╝рдВрдХреНрд╢рди рдХреА рдЬреЛрдбрд╝реА рдХреЗ ред рд▓реЗрдХрд┐рди рд╡реЗ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рд╡реЗ рдмрд╕ рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЯрд╛рдЗрдордкрд╛рд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордп рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реВрдВрдЧрд╛ , рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдЬреЛрдбрд╝реА - рд╕реЗрдХрдВрдб рдФрд░ рдиреИрдиреЛрд╕реЗрдХрдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣реА рд╣реИ, рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдордп рдХреЛ рдХрд╛рдлреА рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдЕрдВрдд рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рд╕реНрдкрд┐рдирд▓реЙрдХ рдХреЛ рдореБрдХреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо unlock_new_inode рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред



рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп





рдпрд╣ рдкреЛрд╕реНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдбрд╝реА рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдореИрдВрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рднреА рдкреНрд░рдореБрдЦ рднрд╛рдЧреЛрдВ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред



рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдм рджреЛ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИрдВ - рдХреЗрд░реНрди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрдб рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ - рд╕реНрд╡рд░реВрдкрдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдХреЛрдбред рдХреЛрдб рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдбрд╝реА рд╣реЛ рдЧрдИ рд╣реИ - рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ, рд╕реБрдзрд╛рд░, рдХрд┐рд╕реА рднреА рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред



рдмрдврд╝рддреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 dd bs=1M count=100 if=/dev/zero of=image ./mkfs.aufs ./image
      
      







рдЕрдм рдЖрдк рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред



рд╣рдордиреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдирдореВрдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рднрдВрдбрд╛рд░ рд╕реЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ dmesg рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



All Articles