Zfs: рдлрд╝рд╛рдЗрд▓ рдЧреБрдг

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдордИ 2011  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: openzfs/zfs

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

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@behlendorf рдХреНрдпрд╛ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдпрд╛ рдореИрдиреБрдЕрд▓ рд╣реИ рдЬреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ рдФрд░ рд╡реЗ ZFS рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ?

рд╕рднреА 12 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдлрдПрд╕_*_рдПрдлрдПрд▓ рд╕реНрдкреЗрд╕ рдореЗрдВ рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдЬреИрд╕реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп, рдХреЗрд╡рд▓ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ, рдЖрджрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реЛрд▓рд╛рд░рд┐рд╕ рдЯреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдВред рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЗрди рдЭрдВрдбреЗ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lsattr/chattr ioctl() рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ рдХреЛ (рд▓рдЧрднрдЧ) рд╕рдордХрдХреНрд╖ рдСрди-рдбрд┐рд╕реНрдХ рдорд╛рдиреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред

FS_*_FL рдореЗрдВ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рд╡реЗ рдЖрдо рддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕реЛрд▓рд╛рд░рд┐рд╕ рдХреЗ рдкрд╛рд╕ рдХреМрди рд╕реЗ рдЧреБрдг рд╣реИрдВ рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдирд╣реАрдВ рд╣реИ), рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╣ рд╕реНрдерд╛рди рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ .

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

 /*
 * рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓ рд╕реНрддрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ, рдЬреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ
 * zp_flags рдХреЗ рдКрдкрд░реА рднрд╛рдЧ рдореЗрдВ
 */
 #рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ ZFS_READONLY 0x0000000100000000ull
 #ZFS_HIDDEN 0x0000000200000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #ZFS_SYSTEM 0x0000000400000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #ZFS_ARCHIVE 0x0000000800000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #ZFS_IMMUTABLE 0x0000001000000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #ZFS_NOUNLINK 0x0000002000000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #ZFS_APP рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВENDONLY 0x0000004000000000ull
 #ZFS_NODUMP 0x0000008000000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #ZFS_OPAQUE 0x0000010000000000 рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ ZFS_AV_QUARANTINED 0x0000020000000000ull
 #ZFS_AV_MODIFIED 0x0000040000000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #ZFS_REPARSE 0x0000080000000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #ZFS_OFFLINE 0x0000100000000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 #ZFS_SPARSE 0x0000200000000000ull рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рдФрд░ рдореИрдкрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЬрд┐рддрдирд╛ рдЙрдЪрд┐рдд рд╕рдордЭреЗрдВ рдЙрддрдирд╛ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рд╕реНрдкрд╖реНрдЯ рдореИрдкрд┐рдВрдЧ:
ZFS_IMMUTABLE <-> FS_IMMUTABLE_FL
ZFS_APPENDONLY <-> FS_APPEND_FL
ZFS_NODUMP <-> FS_NODUMP_FL

рд╕рдВрдЧрддрддрд╛ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░:
рдпрджрд┐ ZFS_IMMUTABLE рдХрднреА рднреА рд╕реЗрдЯ рд╣реЛ, рддреЛ ZFS_NOUNLINK рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ ZFS_NOUNLINK рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛: chattr +i FILE ; chattr -i FILE

рдкрд╛рдЧрд▓ рд╡рд┐рдЪрд╛рд░ 1:
рдПрдХ рд╕рд╛рдВрдмрд╛-рд╕рдВрдЧрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП ZFS_READONLY, ZFS_HIDDEN, ZFS_SYSTEM, рдФрд░ ZFS_ARCHIVE рдФрд░ crtime рдХреЛ рдореИрдк рдХрд░реЗрдВред DOSATTRIB xattrред

рдкрд╛рдЧрд▓ рд╡рд┐рдЪрд╛рд░ 2:
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ FS_TOPDIR_FL рд╕реЗрдЯ рдХрд░рдирд╛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ mkdir() рд╕рдВрдЪрд╛рд▓рди рдирдП ZFS рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдирд╛ рд╕рдХреЗред рдпрд╣/рдШрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдлрд┐рд░ рдЖрдкрдХреЛ ZFS рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ Linux рдкрд░ useradd рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ext[234] рдкрд░ chattr +T /home рд▓рд┐рдП рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк FS_TOPDIR_FL рдХреЛ рдЗрд╕рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рднреА рдЗрд╕ рдЖрд╢рдп рдХреА ZFS рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╡рд┐рдЪрд╛рд░ /рдШрд░ рдкрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдирдорд╕реНрддреЗ,

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

рд╢реБрдХреНрд░рд┐рдпрд╛!

@cyberius0 рдлрд┐рд▓рд╣рд╛рд▓ рдЗрд╕ рдкрд░ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдЪрд╛рд╣реЗ рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ рддреЛ рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЪрд╛рд╣рд┐рдПред

+1

@rlaager рдХрд╛ рдХреНрд░реЗрдЬреА рдЖрдЗрдбрд┐рдпрд╛ 2 рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЪреАрдЬ рдмрди рдЬрд╛рдПред

+1

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Linux рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ TOCTOU рджреМрдбрд╝ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИ рдЬреЛ Solaris рдкрд░ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╕реЛрд▓рд╛рд░рд┐рд╕ рдФрд░ рд▓рд┐рдирдХреНрд╕ рджреЛрдиреЛрдВ рдкрд░ рдпреВрдЬрд░рд▓реИрдВрдб рдЯреВрд▓реНрд╕ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмрд┐рдЯ рдорд╛рд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрди-рдХреЛрд░ рдФрд░ рдСрди-рдбрд┐рд╕реНрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╛рдирддрд╛рдПрдВ рд╡рд╣реАрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВред

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

zfsonlinux/zfs#1693 рдиреЗ Linux рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ Solaris рдХреЗ ZFS рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмреАрдЪ рдХреБрдЫ рдЕрдиреБрд╡рд╛рдж рдХреЛрдб рд▓рд╛рдЧреВ рдХрд░рдХреЗ ZFSOnLinux рдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдмрдирд╛ рджрд┐рдпрд╛ред рд╢реБрдХреНрд░ рд╣реИ, рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдРрд╕рд╛ рддреЗрдЬреА рд╕реЗ рд╕рдВрд╢реЛрдзрди рджреБрд░реНрд▓рдн рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдЬрдм рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддрдм рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рдерд╛ред рдЬрдм рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдВрд╢реЛрдзрди рдЙрдкрдХрд░рдг рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реЛрд▓рд╛рд░рд┐рд╕ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреА рддрд░реНрдЬ рдкрд░ рд╣рдореЗрдВ рдПрдХ рдкрд░рдорд╛рдгреБ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд▓рд┐рдирдХреНрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реНрдкрд╖реНрдЯ рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ 0.6.3 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛ред

  • ZFS_IMMUTABLE <-> FS_IMMUTABLE_FL
  • ZFS_APPENDONLY <-> FS_APPEND_FL
  • ZFS_NODUMP <-> FS_NODUMP_FL

рдЗрд╕рдореЗрдВ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ Linux рдкрд░ рдореМрдЬреВрдж рд╣реИрдВ рд▓реЗрдХрд┐рди Illumos рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдорд╛рдорд▓реЗ-рджрд░-рдорд╛рдорд▓реЗ рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

9d31779 рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░реЗрдВ
3b4f425 рд░рд┐рдлреИрдХреНрдЯрд░ inode_owner_or_capable() рдСрдЯреЛрдЯреВрд▓ рдЪреЗрдХ

@behlendorf рдХреНрдпрд╛ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдпрд╛ рдореИрдиреБрдЕрд▓ рд╣реИ рдЬреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ рдФрд░ рд╡реЗ ZFS рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

adamdmoss picture adamdmoss  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pcd1193182 picture pcd1193182  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mailinglists35 picture mailinglists35  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cinterloper picture cinterloper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

FransUrbo picture FransUrbo  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ