14
14
----------------------------------------------------------------------
17
- two bugfixes(pinning and dlgt) and local tests for them are completed.
18
- bugfix (fs/aufs25 only, currently): pin the hierarchy on lower branch
19
and new ignore scheme for inotify (completed).
20
+ adjust the lock subclass in au_ren_pin_init().
21
+ change the dinfo lock subclass in au_test_and_cpup_dirs() from
23
+ change the lock subclass from AuLsc_I_PARENT2 to AuLsc_I_CHILD.
24
+ change the lock subclass from AuLsc_I_PARENT to AuLsc_I_CHILD.
25
+ change the name of a lock subclass NEW to NEW_CHILD.
26
+ do not set inotify for whiteouted dirs (SHWH mode).
27
+ ignore a dead child dentry.
28
+ ignoring inotify events for creating/removing the default xino
29
files, introduce new member si_xino_def_br.
30
* reset si_xino_def_br when the removed branch is added again in
32
* unset si_xino_def_br when the branch is deleted in au_br_del().
33
+ ignore the old whiteout when it was moved.
34
+ initialize dinfo lock by AuLsc_DI_CHILD instead of AuLsc_DI_PARENT.
35
+ lock iinfo in xino_do_trunc().
36
+ make the type of au_pin() and au_do_pin() void. this fix may be
37
reverted since a tiny bug can cause a deadlock.
38
+ remove a function au_hi_lock().
39
+ remove a member unpinned from struct au_link_args.
40
+ remove a parameter parent from au_xino_create().
41
+ remove dlgt test in au_wkq_run(), with this fix the fix for dlgt is
43
+ replace the inode lock subclass AuLsc_I_PARENT2 by AuLsc_I_CHILD in
45
+ restore the function au_hin_resume().
46
+ revert the inotify watch when an error occured.
47
+ set ignore info at re-initializing whiteout for a branch.
48
+ set ignore info in an error case in au_do_cpup_regular().
49
+ set noinline_for_stack to cpup_regular() and au_do_cpup_regular().
50
+ simplify vfsub_create(), vfsub_symlink(), vfsub_mknod(),
51
vfsub_mkdir(), vfsub_link(), vfsub_rename(), vfsub_rmdir(),
52
vfsub_write_k() and vfsub_splice_from().
53
+ switch the inode lock subclass in au_cp_dirs(), AuLsc_I_PARENT2 and
55
+ verify the child-parent relationship in call_rmdir_whtmp().
56
- bugfix: replace "${TgtPath}/Kconfig" by "aufs/Kconfig", reported and
57
patched by Paulius Zaleckas.
58
- bugfix: prepend CONFIG_ to ccflags-$(AUFS_WORKAROUND_FUSE).
59
- minor optimization: compare the read buffer with a zeroed page to
60
detect a hole in a file. this may be reverted in the future since this
61
optimization consumes one memory page.
62
- minor optimization in is_sb_shared().
63
- replace MmTree macro by CONFIG_AUFS_UNIONFS22_PATCH and
64
CONFIG_AUFS_UNIONFS23_PATCH.
65
- remove MmTree macro.
66
- kmalloc() some large structures in au_dpri_sb() (completed).
67
+ replace GFP_NOFS by GFP_ATOMIC.
70
- new scheme to pin the hierarchy on lower branch (introduced in last
71
Monday release) is still in testing phase. after its completions, the
72
fix will be backported to fs/aufs (linux-2.6.24 and earlier).
73
- some other bugfixes are made in this release. they will be backported
74
to fs/aufs too when I have time.
75
- bugfix (fs/aufs25 only, currently): pin the hierarchy on lower branch
76
and new ignore scheme for inotify (still testing).
77
+ add a prefix 'au_' to struct link_args, cpup_before_link() and
79
+ aufs_link() allocates some large variables dynamically.
80
+ au_do_pin() never returns until all locks and verifications are
82
+ call au_pin() from lock_hdir_create_wh() instead of several manual
84
+ call au_pin utility functions from aufs_unlink() and aufs_rmdir().
85
+ call di_downgrade_lock() from aufs_write(), aufs_splice_write(),
86
aufs_mmap() and aufs_fsync_nondir().
87
+ make au_do_unpin() global.
88
+ make au_pin_gp() as CONFIG_AUFS_HINOTIFY local.
89
+ move au_unpin() from i_op.c to inode.h and make it inlined.
90
+ move au_unpin_gp() from i_op.c to hinotify.c.
91
+ new inline functions au_pin_do_set_parent_lflag(),
92
au_pin_set_parent_lflag() and au_pin_set_gparent_lflag().
93
+ refine au_cpup_before_link() by using au_pin/unpin().
94
+ rename lsc_i to lsc_hi.
95
+ remove some parameters frome rename functions by passing struct
97
+ rename struct rename_args to au_ren_args, add some members to reduce
99
+ simplify aufs_d_revalidate() by write_lock + downgrade_lock.
100
+ simplify au_hi_lock() by removing some parameters.
101
+ simplify do_coo() and au_ready_to_write() by removing some
103
+ simplify lock_hdir_create_wh(), aufs_unlink() and aufs_rmdir() by
104
removing some variables.
105
+ simplify lock_hdir_lkup_wh(), add_simple(), struct au_link_args,
106
au_cpup_or_link() and aufs_mkdir() by removing some variables.
107
+ simplify struct au_icpup_args, au_lock_and_icpup() and
108
aufs_setattr() by removing/adding some members.
109
+ split do_rename() into some small functions.
110
- bugfix (fs/aufs25 only, currently): lock child dentry first in
111
aufs_lookup(), and unlock the parent as soon as possible.
112
this fix will be backported to fs/aufs too.
113
- bugfix (fs/aufs25 only, currently): stop locking child inode in
115
this fix will be backported to fs/aufs too.
116
- bugfix (fs/aufs25 only, currently): revert the timestamps of the
117
parent dir at flushing pseudo-links.
118
this fix will be backported to fs/aufs too.
119
- declare copyright 2005-2008 in all files, because I was told it should
120
be done per software instead of per file even in the files which I
121
didn't change this year.
122
- enhancement for CONFIG_4KSTACKS, allocate a large structure
123
dynamically in au_wkq_run() instead of stack.
124
- minor optimization, use unsigned long long pointer for testing a hole
126
- call kzalloc() instead of kmalloc() + memset(,0,).
127
- unset noinline_for_stack to epilog(), lock_hdir_lkup_wh() and
129
- unset noinline_for_stack to cpup_regular() and au_do_cpup_regular().
130
- unset noinline_for_stack to decode_by_dir_ino().
131
- reduce the stack size.
134
- bugfix (fs/aufs25 only, currently): pin the hierarchy on lower branch
135
and new ignore scheme for inotify (still debugging).
136
under heavy i/o (including rename(2)), aufs may misunderstand
137
the child-parent relationship. new structure au_pin locks both parent-
138
child and verifies them.
139
additionally, when udba=inotify is specified, aufs sets inotify watch
140
internally for the parent (and grand parent) dir in cache, and ignores
141
the events triggered by aufs internal activity. this was done by
142
locking the lower dir and setting 0 to the event mask for the lower
143
dir, but it might ignore the event fired by other process, for example
144
write(2) to the lower file.
145
the new method stops setting 0 to the mask, and ignores the event made
147
this fix is not backported to fs/aufs yet since it is still
148
debugging. so the old behaviour is taken on the older kernels.
149
people will call it crazy due to many locks.
150
+ add a parameter au_pin to au_ready_to_write(), and it doesn't lock
152
+ add a parameter bindex to au_wh_init().
153
+ add a parameter bindex to epilog().
154
+ add a parameter dir to do_revert().
155
+ add a parameter dst_parent to au_sio_cpup_single().
156
+ add a parameter dst_parent to cpup_entry() and au_cpup_single(), and
158
+ add a parameter hdir and replace h_dst by dst and bindex of
159
cpup_iattr(), and set ignore info.
160
+ add a parameter hdir to au_copy_file().
161
+ add a parameter hdir to au_cpdown_attr().
162
+ add a parameter hdir to cpup_regular() and au_do_cpup_regular().
163
+ add a parameter hdir to vfsub_sio_notify_change().
164
+ add a parameter hinode to au_dtime_store() and struct au_dtime.
165
+ add a parameter parent to au_sio_cpup_single().
166
+ add a parameter pin to lock_hdir_lkup_wh().
167
+ add list, pid, handled events to struct au_hinode.
168
+ add new inline functions vfsub_lock_rename_mutex(),
169
vfsub_unlock_rename_mutex() and au_verify_parent().
170
+ add parameters dlgt and hdir to clean_wh(), clean_plink() and
172
+ append a lock subclass id AuLsc_DI_PARENT4 and
173
di_read/write_lock_parent4().
174
+ append a new lock subclass id AuLsc_DI_PARENT4.
175
+ append a new lock subclass id AuLsc_I_(PARENT|CHILD)[34].
176
+ aufs_fsync_dir() and aufs_readdir() unlock both dinfo and iinfo.
177
+ aufs_read(), aufs_write(), aufs_splice_read(), aufs_splice_write(),
178
aufs_mmap(), aufs_poll(), aufs_fsync_nondir() and aufs_fasync()
179
unlock both dinfo and iinfo.
180
+ call au_dbg_hin_list() from call_rename(), vfsub_rename(),
181
call_rmdir(), vfsub_rmdir(), call_write_k(), vfsub_write_u(),
182
vfsub_write_k(), call_splice_from() and vfsub_splice_from().
183
+ call au_pin() from do_coo().
184
+ call au_pin/unpin() from au_lock_and_icpup() and aufs_setattr().
185
+ call au_pin/unpin() from lock_hdir_lkup_wh(), add_simple(),
186
aufs_link() and aufs_mkdir().
187
+ call vfsub_ignore(), vfsub_unignore() and au_dbg_hin_list() from
188
call_create(), call_symlink(), call_mknod(), call_mkdir(),
189
call_link(), vfsub_create(), vfsub_symlink(), vfsub_mknod(),
190
vfsub_mkdir() and vfsub_link().
191
+ call vfsub_unignore() from call_write_k(), vfsub_write_u() and
192
vfs_write_k() when vfs_write() returns 0.
193
+ convert the parameter dir of do_unlink_wh() to hdir.
194
+ convert the parameter dir of vfsub_sio_mkdir() and vfsub_sio_rmdir()
196
+ convert the parameter h_dentry of au_whtmp_ren() to dentry, remove
197
the parameter noself from au_whtmp_ren().
198
+ convert the parameter h_dentry of au_whtmp_ren() to dentry.
199
+ convert the parameter h_dir of au_wh_unlink_dentry() to struct
200
au_hinode, and remove the parameter dir.
201
+ convert the type of au_test_subdir struct dentry* from int.
202
+ move AuInMask from hinotify.c to hinode.h.
203
+ new bit-flags VFSLOCK and PINNED.
204
+ new functions au_do_pinned_h_parent(), au_do_unpin(), au_unpin(),
205
au_unpin_gp(), au_do_pin(), au_pin_init() and au_pin().
206
+ new functions au_hin_list_del() and au_dbg_hin_list() for debugging.
207
+ new functions au_hin_test_ignore() and au_dbg_hin_list().
208
+ new functions au_pin_init(), au_pin(), au_do_pin(), au_unpin(),
209
au_unpin_gp(), au_do_pinned_hdir(), au_do_pinned_h_parent(),
210
au_do_pinned_parent(), au_do_pinned_h_dir(), au_pin_do_set_parent(),
211
au_pin_do_set_h_dir(), au_pinned_hdir(), au_pinned_hgdir(),
212
au_pinned_h_parent(), au_pinned_parent(), au_pinned_gparent(),
213
au_pinned_h_dir(), au_pinned_h_gdir(), au_pin_set_parent(),
214
au_pin_set_gparent(), au_pin_set_h_dir() and au_pin_set_h_gdir().
215
+ new functions au_ren_pin_init(), au_ren_fake_pin(), au_ren_pin4(),
216
au_ren_pin3(), au_ren_pin(), au_ren_unlock() and au_ren_lock().
217
+ new members h_locked[], gparent[], pin[], ign[], and vargs in struct
219
+ new structures au_pin1 and au_pin.
220
+ remove AuCacheX() macro.
221
+ remove au_do_hdir_lock(), au_hdir_unlock(), au_hdir_lock_rename(),
222
au_hdir_unlock_rename(), au_hdir_lock() and au_hdir2_lock().
223
+ remove au_hdir[2]_lock/unlock(), and replace them by
225
+ remove au_hdir_lock/unlock_rename() and replace them by
226
au_ren_lock/unlock().
227
+ remove au_hgdirs().
228
+ remove au_hin_nignore.
229
+ remove the parameter dir from au_wh_create().
230
+ remove the parameter dir from unlink_wh_name().
231
+ remove the parameter inode from del_wh_children().
232
+ remove the parameter noself from au_whtmp_ren().
233
+ remove the parameters inode and noself from au_whtmp_kick_rmdir().
234
+ remove the parameters inode and noself from au_whtmp_rmdir() and
235
au_whtmp_kick_rmdir().
236
+ remove the parameters inode and noself from au_whtmp_rmdir().
237
+ remove the unused functions au_hin_ignore() and au_hin_unignore().
238
+ remove vfsub_ign_inode().
239
+ rename au_reval_and_lock_finfo() to au_reval_and_lock_fdi() since it
240
becomes to lock dinfo and iinfo in addition to finfo.
241
+ rename ctl_hinotify() to au_hin_ctl() and make it global, new inline
242
function au_hin_suspend(), remove suspend_hinotify() and
243
resume_hinotify() macros.
244
+ rename ctl_hinotify() to au_hin_ctl() and make it global, new inline
245
function au_hin_suspend().
246
+ reorder the parameters of link_or_create_wh().
247
+ replace hin_ignore array by spinlock and list in struct au_hinotify.
248
+ replace the parameter dlgt of au_do_cpup_symlink(), vfsub_symlink(),
249
au_h_create(), vfsub_mkdir(), vfsub_mknod() and vfsub_link() by
251
+ replace the parameter dlgt of au_h_create() and vfsub_create() by
253
+ replace the parameter dlgt of au_h_create(), vfsub_symlink(),
254
vfsub_mknod(), vfsub_link(), vfsub_unlink() and vfsub_mkdir() by
256
+ replace the parameter dlgt of au_h_create().
257
+ replace the parameter dlgt of vfsub_create() by vargs.
258
+ replace the parameter dlgt of vfsub_create(), vfsub_symlink(),
259
vfsub_mknod(), vfsub_mkdir() and vfsub_link() by vargs.
260
+ replace the parameter dlgt of vfsub_link() by vargs.
261
+ replace the parameter dlgt of vfsub_mkdir() by vargs.
262
+ set ignore info for both of parent and grand parent dir in
264
+ set ignore info in add_simple(), cpup_or_link(), aufs_link() and
266
+ set ignore info in au_copy_file().
267
+ set ignore info in au_cpup_wh().
268
+ set ignore info in au_wh_init().
269
+ set ignore info in au_whtmp_ren().
270
+ set ignore info in au_whtmp_rmdir().
271
+ set ignore info in aufs_unlink().
272
+ set ignore info in clean_wh(), clean_plink() and plink_dir().
273
+ set ignore info in do_rename().
274
+ set ignore info in do_unlink_wh().
275
+ set ignore info in link_or_create_wh().
276
+ set ignore info in vfsub_sio_mkdir(), vfsub_sio_rmdir(),
277
vfsub_sio_notify_change() and call_unlink().
278
+ stop touching the lock of dinfo and iinfo in refresh_file_by_inode().
279
+ use au_pin in cpup_before_link().
280
+ a new debug print macro au_dbg_blocked().
281
- bugfix (fs/aufs25): revert resetting xinoe->ino when noxino option is
282
specified, regression on 2008/06/02.
283
- bugfix (fs/aufs, fs/aufs25): a race condition between rename(2) and
284
others, linux-2.6.19 and later.
285
+ call d_move() from aufs_rename().
286
+ set FS_RENAME_DOES_D_MOVE to fs_flags.
287
- bugfix (fs/aufs, fs/aufs25): select CONFIG_AUFS_SPLICE_PATCH
288
automatically when CONFIG_AUFS_UNIONFS23_PATCH is enabled on
289
linux-2.6.23 and later, reported by Barry Kauler.
290
+ add a note about unionfs patch v2.3 in the splice patch section.
291
- possible bugfix (fs/aufs, fs/aufs25): convert all GFP_TEMPORARY and
292
GFP_KERNEL into GFP_NOFS.
293
- prohibit sysfs and procfs branch (fs/aufs, fs/aufs25)
294
+ append SYSFS_MAGIC value.
295
+ new function au_unsupported_fs().
296
- kmalloc() some large structures in au_dpri_sb() (still testing).
297
- kmalloc() some large structures in aufs_setattr().
298
- kmalloc struct completion in au_wkq_run().
299
- set noinline_for_stack to cpup_or_link().
300
- set noinline_for_stack to epilog() and lock_hdir_lkup_wh().
301
- set noinline_for_stack for decode_by_dir_ino() and decode_by_path().
302
- unset noinline_for_stack to dump_opts(), verify_opts().
303
- unset noinline_for_stack for au_do_cpup_symlink() and au_do_cpup_wh().
304
- unset noinline_for_stack to simple_reval_dpath().
305
- unset noinline_for_stack for aufs_decode_fh().
306
- make au_cpup_simple() and au_cpup_single() static.
312
- bugfix (fs/aufs, fs/aufs25): introduce a new mutex to prevent a new
313
inode number for hardlinks under different parnet dir from a race
315
+ (fs/aufs25) a new structure au_xino_file.
316
- bugfix (fs/aufs, fs/aufs25): support an error case of opening a dir.
317
- bugfix (fs/aufs, fs/aufs25): support a race condition between open and
319
- bugfix: struct kset should be a dynamic object.
320
- enhance CONFIG_AUFS_STAT, an abstraction by au_wkq_max_busy_init().
321
- a note about procfs and sysfs.
322
- remove some unnecessary code.
323
- a new debug macro, ForceBrs.
17
326
- bugfix: #if condition for CONFIG_AUFS_UNIONFS22_PATCH and mm tree.
18
327
- bugfix in DLGT mode (fs/aufs, fs/aufs25)