Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-6]: src/doc Tickets 438, 483, 484



details:   https://anonhg.NetBSD.org/src/rev/c073a7128c8f
branches:  netbsd-6
changeset: 774411:c073a7128c8f
user:      martin <martin%NetBSD.org@localhost>
date:      Sun Aug 12 13:19:14 2012 +0000

description:
Tickets 438, 483, 484

diffstat:

 doc/CHANGES-6.0 |  179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 178 insertions(+), 1 deletions(-)

diffs (190 lines):

diff -r f472b791012c -r c073a7128c8f doc/CHANGES-6.0
--- a/doc/CHANGES-6.0   Sun Aug 12 13:13:20 2012 +0000
+++ b/doc/CHANGES-6.0   Sun Aug 12 13:19:14 2012 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-6.0,v 1.1.2.175 2012/08/10 12:16:13 jdc Exp $
+# $NetBSD: CHANGES-6.0,v 1.1.2.176 2012/08/12 13:19:14 martin Exp $
 
 A complete list of changes from the initial NetBSD 6.0 branch on 15 Feb 2012
 until the 6.0 release:
@@ -6973,3 +6973,180 @@
        Fix the check of the device type in last commit.
        Reported by Thomas Klausner.
        [msaitoh, ticket #471]
+
+sys/fs/adosfs/adlookup.c                       1.16
+sys/fs/cd9660/cd9660_lookup.c                  1.20
+sys/fs/efs/efs_vnops.c                         1.26
+sys/fs/filecorefs/filecore_lookup.c            1.14
+sys/fs/hfs/hfs_vnops.c                         1.26
+sys/fs/msdosfs/msdosfs_lookup.c                        1.24
+sys/fs/nilfs/nilfs_vnops.c                     1.18
+sys/fs/ntfs/ntfs_vnops.c                       1.52
+sys/fs/puffs/puffs_node.c                      1.25
+sys/fs/puffs/puffs_vnops.c                     1.168
+sys/fs/smbfs/smbfs_vnops.c                     1.80
+sys/fs/tmpfs/tmpfs_vnops.c                     1.98
+sys/fs/udf/udf_vnops.c                         1.72
+sys/fs/unionfs/unionfs_vnops.c                 1.6
+sys/kern/vfs_cache.c                           1.89
+sys/nfs/nfs_vnops.c                            1.295
+sys/ufs/chfs/chfs_vnops.c                      1.8
+sys/ufs/ext2fs/ext2fs_lookup.c                 1.70
+sys/ufs/ufs/ufs_lookup.c                       1.117
+
+       Move some the test for MAKEENTRY into the cache_enter(9).  Make some
+       variables in vfs_cache.c static, __read_mostly, etc.
+
+       [manu, ticket #484]
+
+lib/libp2k/p2k.c                               1.56
+
+       libpuffs and libp2k both use the cookie to different structure,
+       which now leads to struct p2k_node corruption now that libpuffs
+       used pn_nlookup field in struct puffs_node to avoid race
+       conditions.
+
+       Attempt to fix that by adding a struct puffs_node at the
+       beginning of struct p2k_node. This seems to fix kern/46734
+       [manu, ticket #483]
+
+lib/libperfuse/debug.c                         1.12
+lib/libperfuse/ops.c                           1.59
+lib/libperfuse/perfuse.c                       1.29
+lib/libperfuse/perfuse.c                       1.30
+lib/libperfuse/perfuse_if.h                    1.20
+lib/libperfuse/perfuse_priv.h                  1.31
+lib/libperfuse/subr.c                          1.19
+lib/libpuffs/dispatcher.c                      1.42
+lib/libpuffs/dispatcher.c                      1.43
+lib/libpuffs/puffs.3                           1.53
+lib/libpuffs/puffs.3                           1.54
+lib/libpuffs/puffs.h                           1.123
+lib/libpuffs/puffs_ops.3                       1.31
+sys/fs/puffs/puffs_msgif.c                     1.90
+sys/fs/puffs/puffs_msgif.c                     1.91
+sys/fs/puffs/puffs_msgif.c                     1.92
+sys/fs/puffs/puffs_msgif.h                     1.79
+sys/fs/puffs/puffs_msgif.h                     1.80
+sys/fs/puffs/puffs_sys.h                       1.80
+sys/fs/puffs/puffs_sys.h                       1.81
+sys/fs/puffs/puffs_sys.h                       1.82
+sys/fs/puffs/puffs_vfsops.c                    1.102
+sys/fs/puffs/puffs_vfsops.c                    1.103
+sys/fs/puffs/puffs_vfsops.c                    1.105
+sys/fs/puffs/puffs_vnops.c                     1.167
+sys/fs/puffs/puffs_vnops.c                     1.171
+sys/fs/puffs/puffs_vnops.c                     1.172
+sys/fs/puffs/puffs_vnops.c                     1.173
+sys/fs/puffs/puffs_vnops.c                     1.174
+usr.sbin/perfused/msg.c                                1.21
+usr.sbin/perfused/perfused.c                   1.24
+
+       - Fix same vnodes associated with multiple cookies
+       The scheme used to retreive known nodes on lookup was flawed, as
+       it only used parent and name. This produced a different cookie
+       for the same file if it was renamed, when looking up ../ or when
+       dealing with multiple files associated with the same name
+       through link(2).
+
+       We therefore abandon the use of node name and introduce hashed
+       lists of inodes. This causes a huge rewrite of reclaim code,
+       which do not attempt to keep parents allocated until all their
+       children are reclaimed
+
+       - Fix race conditions in reclaim
+       There are a few situations where we issue multiple FUSE
+       operations for a PUFFS operation. On reclaim, we therefore have
+       to wait for all FUSE operation to complete, not just the current
+       exchanges. We do this by introducing node reference count with
+       node_ref() and node_rele().
+
+       - Detect data loss caused by FAF
+       VOP_PUTPAGES causes FAF writes where the kernel does not check
+       the operation result. At least issue a warning on error.
+
+       - Enjoy FAF shortcut on setattr
+       No need to wait for the result if the kernel does not want it.
+       There is however an exception for setattr that touch the size,
+       we need to wait for completion because we have other operations
+       queued for after the resize.
+
+       - Fix fchmod() on write-open file
+       fchmod() on a node open with write privilege will send setattr
+       with both mode  and size set. This confuses some FUSE
+       filesystem. Therefore we send two FUSE  operations, one for
+       mode, and one for size.
+
+       - Remove node TTL handling for netbsd-5 for simplicity sake. The
+       code still builds on netbsd-5 but does not have the node TTL
+       feature anymore. It works fine with kernel support on netbsd-6.
+       
+       - Improve PUFFS_KFLAG_CACHE_FS_TTL by reclaiming older inactive nodes.
+
+       The normal kernel behavior is to retain inactive nodes in the
+       freelist until it runs out of vnodes. This has some merit for
+       local filesystems, where the cost of an allocation is about the
+       same as the cost of a lookup. But that situation is not true for
+       distributed filesystems. On the other hand, keeping inactive
+       nodes for a long time hold memory in the file server process,
+       and when the kernel runs out of vnodes, it produce reclaim
+       avalanches that increase lattency for other operations.
+
+       We do not reclaim inactive vnodes immediatly either, as they may
+       be looked up again shortly. Instead we introduce a grace time
+       and we reclaim nodes that have been inactive beyond the grace
+       time.
+
+       - Fix lookup/reclaim race condition.
+
+       The above improvement undercovered a race condition between
+       lookup and reclaim. If we reclaimed a vnode associated with a
+       userland cookie while a lookup returning that same cookiewas
+       inprogress, then the kernel ends up with a vnode associated with
+       a cookie that has been reclaimed in userland. Next operation on
+       the cookie will crash (or at least confuse) the filesystem.
+
+       We fix this by introducing a lookup count in kernel and
+       userland. On reclaim, the kernel sends the count, which enable
+       userland to detect situation where it initiated a lookup that is
+       not completed in kernel. In such a situation, the reclaim must
+       be ignored, as the node is about to be looked up again.
+       
+       Fix hang unmount bug introduced by last commit.
+
+       We introduced a slow queue for delayed reclaims, while the
+       existing queue for unmount, flush and exist has been renamed
+       fast queue. Both queues had timestamp for when an operation
+       should be done, but it was useless for the fast queue, which is
+       always used to run an operation ASAP. And the timestamp test had
+       an error that turned ASAP into "at next tick", but nobody what
+       there to wake the thread at next tick, hence the hang. The fix
+       is to remove the useless and buggy timestamp test for fast
+       queue.
+       
+       Rename slow sopreq queue into node sopreq queue, to refet the
+       fact that is only intended for postponed node reclaims. When
+       purging the node sopreq queue, do not call puffs_msg_sendresp(),
+       as it makes no sense.
+
+       Fix race condition between (create|mknod|mkdir|symlino) and
+       reclaim, just like we did it between lookup and reclaim.
+       
+       Missing bit in previous commit (prevent race between
+       create|mknod|mkdir|symlink and reclaim)
+       
+       Bump date for previous.
+       New sentence, new line; remove trailing whitespace; fix typos;
+       punctuation nits.
+       
+       Add PUFFS_KFLAG_CACHE_DOTDOT so that vnodes hold a reference on their
+       parent, keeping them active, and allowing to lookup .. without sending
+       a request to the filesystem.
+
+       Enable the featuure for perfused, as this is how FUSE works.
+       
+       Missing bit in previous commit (PUFFS_KFLAG_CACHE_DOTDOT option
+       to avoid looking up ..)
+       [manu, ticket #438]
+
+



Home | Main Index | Thread Index | Old Index