Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys
Hello,
> Module Name: src
> Committed By: reinoud
> Date: Sat Sep 27 13:01:07 UTC 2008
>
> Modified Files:
> src/sys/conf: files
> src/sys/kern: vfs_init.c
> Added Files:
> src/sys/kern: vfs_dirhash.c
> src/sys/sys: dirhash.h
>
> Log Message:
> Add generic FS agnostic directory hashing support. Currently only in use by
> UDF. Future users could be msdosfs, ufs, nilfs2 (when ready), cd9660 etc.
It would be nice to see UFS using this in future! I have few comments:
- Locking in vfs_dirhash.c is not clear, it does not describe which and who
protects the structures, nor how synchronisation is done. It looks like some
parts are protected by caller, some by dirhashmutex. KASSERTs do not explain
that either.
- In dirhash_purge_entries() memory is freed (pool_put() called) while lock
is held (dirhashmutex) - that reduces the concurrency. Also, if caller
holds some lock, API might need to be adjusted to free the structures later.
- It looks like hash(9) and hashinit(9) interfaces could be used for hashing
part, instead of re-implementation of them.
- These could be static, thought: dirhashmutex, maxdirhashsize, dirhashsize,
dirhash_queue.
- It would be good to add prefixes for the members of dirhash_entry and
dirhash structures, like dh_* and dhe_*. No need to name arguments in
function prototypes. Also, header needs #ifndef _SYS_DIRHASH_H_ macros
to avoid double inclusion.
- Please create sysctl()s dynamically, that is, using CTL_CREATE, instead of
CURDIRHASHSIZE_SYSCTLOPT and MAXDIRHASHSIZE_SYSCTLOPT.
- Having minimal comments about functions or dirhash(9) man page would help
to understand the interface better too. :)
Thanks.
--
Best regards,
Mindaugas
www.NetBSD.org
Home |
Main Index |
Thread Index |
Old Index