Date: Sun, 09 Jan 2000 16:12:48 -0800 From: Kirk McKusick <mckusick@flamingo.McKusick.COM> To: Matthew Dillon <dillon@apollo.backplane.com> Cc: dg@root.com, fs@freebsd.org Subject: Soft Update Checkin Message-ID: <200001100012.QAA13394@flamingo.McKusick.COM>
next in thread | raw e-mail | index | archive | help
I have completed the checkin of the performance changes in the state that you have been testing. They should show up on your next system update. I enclose the log summary below. ~Kirk =-=-=-=-=-= SCCS/s.ffs_softdep.c: D 9.46 00/01/09 14:58:20 mckusick 86 85 00245/00103/04371 Several performance improvements for soft updates have been added: 1) Fastpath deletions. When a file is being deleted, check to see if it was so recently created that its inode has not yet been written to disk. If so, the delete can proceed to immediately free the inode. 2) Background writes: No file or block allocations can be done while the bitmap is being written to disk. To avoid these stalls, the bitmap is copied to another buffer which is written thus leaving the original available for futher allocations. 3) Link count tracking. Constantly track the difference in i_effnlink and i_nlink so that inodes that have had no change other than i_effnlink need not be written. 4) Identify buffers with rollback dependencies so that the buffer flushing daemon can choose to skip over them. D 9.45 00/01/09 14:40:48 mckusick 85 84 00023/00021/04451 Keep tighter control of removal dependencies by limiting the number of dirrem structure rather than the collaterally created freeblks and freefile structures. Limit the rate of buffer dirtying during periods of intense file removal. D 9.44 00/01/09 14:19:25 mckusick 84 83 00021/00025/04451 Reorganize softdep_fsync so that it only does the inode-is-flushed check before the inode is unlocked while grabbing its parent directory. Once it is unlocked, other operations may slip in that could make the inode-is-flushed check fail. Allowing other writes to the inode before returning from fsync does not break the semantics of fsync since we have flushed everything that was dirty at the time of the fsync call. D 9.43 00/01/09 13:44:42 mckusick 83 82 00017/00011/04459 Make static non-exported functions D 9.42 00/01/09 13:34:14 mckusick 82 81 00001/00001/04469 The function request_cleanup() had a tsleep() with PCATCH. It is quite dangerous, since the process may hold locks at the point, and if it is stopped in that tsleep the machine may hang. Because the sleep is so short, the PCATCH is not required here, so it has been removed. From Dmitrij Tejblum <tejblum@arc.hq.cti.ru> D 9.41 00/01/09 13:32:38 mckusick 81 80 00179/00141/04291 Conversion from BSD/OS to FreeBSD code base To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-fs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001100012.QAA13394>