root/branches/pvfs-2-8-branch/ChangeLog @ 8233

Revision 8233, 77.2 KB (checked in by slang, 3 years ago)

word smithing.

Line 
1-----------------------
2PVFS2 Release ChangeLog
3-----------------------
4
5pvfs-2.8.2
6=============
7
8* Support for the latest kernels, including 2.6.29 - 2.6.32.
9* Performance improvement for small, serial I/O workloads
10* Performance improvement for many (10k) close operations in parallel
11* This release includes a number of minor bug fixes, including fixes for:
12        - trove direct I/O mode for syncing file size
13        - cancelation of I/O on timeout
14        - permission checking for truncate
15        - acl checking return value (should be EACCES)
16        - group permission checking
17        - double free in create cleanup path
18        - unstuff code path for read operations
19        - allow creating a file with just a single datafile
20        - flow deadlock occurring for large I/O
21* Minor memory leak fixes on server shutdown
22
23pvfs-2.8.1
24=============
25
26* Fixes for trove migration with pre-existing
27  storage that contains empty files
28* Bug fixes to build of Infiniband BMI module
29* Build fixes for using --enable-shared
30* Update to heartbeat example
31* Fixes to tcp BMI for multiple threads calling testcontext
32
33pvfs-2.8.0
34=============
35
36* Many bug fixes.
37* Support for the latest kernel releases, including 2.6.28.
38* Support for the latest releases of Berkeley DB, including 4.7.25.
39* New Direct I/O mode for enterprise storage backends.
40* Optimizations for small file workloads, including inode-stuffing
41  and object pre-creation.
42* Improved performance for directory listing (readdir).
43* Better integration with high-availability environments.
44* New tracing component to integrated with TAU trace logs.
45* Support for creating and building BMI only packages.
46* Experimental support for a PVFS FUSE module.
47
48pvfs-2.7.1
49==============
50
51* support for the latest kernel versions
52
53* kernel module:
54   - fixes to kernel dcache revalidate for multiple clients
55   - fixes to kernel getattr update race conditions
56   - modified kernel slot timeout to be separate (and much longer) from
57     the upcall timeout
58
59* bmi-ib: fixes to infiniband double free bugs
60* bmi-tcp: fixes to eager mode for slower client platforms
61
62* fixes to state machine processing.
63* fixes for the migration utility to work with single config file.
64* memory corruption fixes.
65* improved support for multithreaded system interface usage
66
67* performance:
68    - removed unecessary locks in server metadata operations
69    - better caching of long-term attributes for IO
70    - improved pvfs2-lsplus and readdirplus() performance
71
72* configuration:
73    --enable-threaded-kmod configure time option replaces -threaded run time
74      option to pvfs2-client
75    - segfault backtraces enabled by default
76    - HA script examples updated for use with Heartbeat 2.1.2 and newer
77
78
79pvfs-2.7.0
80==============
81* ib: free cached registrations when out of space (openib only)
82
83* HEC posix extensions now supported by PVFS.
84* HEC posix extensions patches to the vfs are provided in the patches subdir.
85* Support for immutible (read-only) files set by xattr and vfs caching of
86read-only files through the vfs.
87* ib: optimistic buffer registration to avoid segmented memory registration
88* ib: redesign and streamline credit-based flow control scheme
89* ib: cache explict BMI_memalloc registrations; huge latency improvement
90* bmi: avoid gettimeofday() to determine poll vs block for multi-method
91    scenario
92* ib: rely on bmi to make poll vs block decision
93* ib: only check for new connections and async events during blocking periods
94
95* state machine changes:
96        - cleanup codegen to use structs instead of unions/arrays
97        - provide a universal smcb (state machine control block) for
98          all state machine actions
99        - add support for concurrent state machines
100
101* portals: new BMI implementation
102* make/configure: support Cray XT3/XT4 compute node build environment
103
104* Added a RootSquashExceptions config option
105
106* support for Linux kernels 2.6.22 and 2.6.23
107
108* New layout parameter to PVFS_[i]sys_create.
109
110* Immutable file support, allowing client caching of files.
111
112* Added a new two-dimensional distribution for incast scenarios.
113
114* MX: new BMI implementation
115
116* Fixes to:
117        - servers running over an extended period of time.
118        - kernel module for simul workloads
119        - readdir handling of tokens
120        - alt aio cleanup path
121
122pvfs-2.6.3
123==============
124
125* fix to metadata coalescing that caused file corruption by writing to invalid
126file handles.  Occurs with large (>70) mpi parallel write workloads.
127* fix for race condition on metadata completion
128* fix for alt-aio with non-contig requests
129* fix to kzalloc configure checks for older kernels
130* fix to support older (0.9.6x) openssl versions
131* fix 2.4 kernel crash in lookup
132* fix cleanup of server internal state machines
133* fix remove-object to decrement dirent count
134* fix a number of error code problems in bmi and elsewhere
135* fix to prevent failures on decoding response errors from server
136* fix 2.4 mount bugs
137* fixes to acl checking, group checking, and root squash
138
139pvfs-2.6.2
140==============
141
142* fixes in trove dbpf to support latest Berkeley DB (version 4.5).
143* fix kmod compile issues with --enable-mmap-racache
144* fix for IO failures caused by invalid sizes used in file.c
145* fixes for 2.4 kernels
146
147pvfs-2.6.1
148==============
149
150* fix --enable-fast
151* fix to build for client-core-threaded (make clean and make kmod before make)
152* fix problems on ppc64 (long/int type mismatches, no _syscall, removed
153warnings)
154* fix overwrites past end of request
155* allow kernel buffer size to be tuned from pvfs2-client
156* fixups for linux kernel version 2.6.19
157        - check return type of kmem_cache_destroy
158        - combine readv/writev to aio_read/aio_write
159
160pvfs-2.6.0
161==============
162* kernel module cleanups
163* appropriate support for 64bit handles in kernel module
164* added debugs for kernel to pvfs2-debug.h
165* added offsetof macro
166* added PVFS_U_SUID (root squash)
167* pvfs-utils.h: PVFS2_translate -> PVFS_translate
168* removed function: PVFS_mgmt_toggle_admin_mode
169* changed all the PVFS_credentials params in system interfaces to const
170* added PVFS_(i)sys_readdir_plus
171* made PVFS_sysresp_readdir_s align properly for 64bit
172* PVFS_sysresp_geteattr struct: added err_array field
173* PVFS_sys_attr struct: fix alignment for dist_name and dist_params fields
174* +1 of major version: 1.3 -> 2.3
175* removed parent_*time from crdirent/rmdirent request
176* added listattr request
177* added (optional) params:
178 - TCPBindSpecific
179 - FlowBufferSizeBytes
180 - FlowBuffersPerFlow
181 - TroveAltAIOMode
182 - RootSquash
183 - ReadOnly
184 - AllSquash
185 - AnonUID
186 - AnonGID
187 - SecretKey
188* fixed setgid bug
189* root squash
190* support for getdents[64]_plus_lite
191* build w/ 2.6.18 and 2.6.19 kernels
192* added pvfs2-lsplus
193* configure arguments:
194    --with/without-openssl[=<path>]
195* alt_lio_listio impl (threaded pread/pwrite)
196* server SIGHUP handler waits for all ops completion [...]
197* migration tool fixes
198* fixes for simultaneous create/unlink hangs (reqsched and sync coalesce)
199* add connection close to bmi for resetting the socket buffer size for initial
200socket
201* atime, mtime, and ctime fixes for VFS interface
202* verify hash of config files
203    - added openssl options and checks
204* updated faq entry for heartbeat
205* config check for linux/mount.h
206* config check that statfs callback has struct dentry arg
207* LTP fixes to pass tests
208    - s/EOPNOTSUPP/EACCES/
209    - acl fixes
210* ib:
211    - check for ib reregister event
212    - close connection on cancel
213    - fix duplicate free bug during message cancel
214
215pvfs2-1.5.0
216===============
217- trove dbpf keyval changes:  The dbpf keyval implementation has been
218  changed from using individual DB objects for each handle, to one
219  DB object for all keyval entries.  This affects the storage format,
220  and requires the pvfs2-migrate-collection tool to be run on storage
221  spaces created previous to this release.
222- sync coalescing: A new syncing feature has been added to the trove layer that
223  provides better performance with metadata in high-load cases.  New options
224  were added to the server config: TroveSyncCoalesce, CoalescingHighWatermark,
225  CoalescingLowWatermark.
226- added stranded bstream checking and handling.  This is useful for correctly
227  reusing handles in failure cases.
228- consolidate I/O paths through the VFS for read,write and readv,writev.
229- added testsome, wait, and release functions to external interfaces
230- fixes to karma and performance monitoring.
231- better error handling on server and client and kernel module
232- fixes to ownership flags on root directory.  Allow chmod to work.
233- fixes for small io and non-contiguous io.
234- fixes to sys-io state machine to prevent deadlock on the server caused by
235  concurrent writes from the same client.
236- replaced keyval strings with shorter versions to save space in the keyval
237  database.
238- cleanups to the kernel module: cleanup cache subsystem structures and
239  functions.  Better error checking on to make module reloading more robust.
240- fixes for fsck and fs-dump.
241- better xattr support for 2.4 kernels
242- added support for berkeley db environments with the pvfs2 bdbs, and using
243  shared memory for db cache instead of mmapped file.
244- better support for 64bit (esp. ppc64) platforms and 32/64 bit mixed env.
245- better support for darwin (OS X)
246- added configure options: --disable-aio-callbacks,  No check for aio callback
247  support is done any longer. --enable-kernel-sendfile to configure for users
248  that want sendfile system call support, it is now disabled by default.
249  Epoll is now the default if its available, otherwise poll is used,
250  --enable-epoll and --disable-epoll now force without checking.
251- Performance improvements for bmi_tcp: allow socket buffer size and tcp
252  window size to be changed dynamically.  Use a pipe file descriptor
253  for poll to prevent stalls.  Reorganize epoll to add and remove epoll
254  watches.
255- pvfs2-genconfig now supports --iospec and --metaspec options.  Also fixed
256  some hostname sorting and range spec bugs.
257- pvfs2-client: added --logstamp.  nonblocking statfs and mount support.
258- handle allocation wasn't resulting in a uniform distribution.  Now we
259  pick a server at random and then select the remaining handles in a
260  round-robin fashion
261- pvfs2-ping does better per-server error reporting and keeps track of errors
262  better
263- pvfs2-viewdist now fails gracefully on old systems without xattrs.  Also
264  prints out handle number and filename for each datafile
265
266pvfs2-1.4.1-pre1
267===============
268- ib: encode data structures to support heterogenous architectures
269- deal with update_atime vanishing from kernel: test for touch_atime and use
270  that if available.
271- fix configure-time kernel tests to work better with 2.6.16 kernels
272- ib: separate config options for includes and libraries, optionally
273- ib: support mellanox ibgd-1.8.2, compile quietly on x86_64
274- ib: avoid more compiler warnings
275- ib: list hcas rather than enumerating in code
276- ib: fix mosal startup for ancient libraries
277- ib: update internals documentation
278- ib: fix CTS out-of-order problem
279- ib: separate message headers to make math and debugging easier
280- ib: avoid trying to actively connect as a server
281- ib: move static variables into an allocated struct to avoid namespace
282  collisions
283- ib: generalize memcache to be used by multiple consumers, not just VAPI
284- ib: generalize bmi_ib to work with multiple verbs interfaces.  Add support
285  for OpenIB.
286
287pvfs2-1.4.0
288- add a simple sendfile callback stub
289- getattr through pvfs2-client-core now specifies exactly what it needs
290- fix case where pvfs2-fs-dump would fall into infinite loop
291- added new pvfs2-viewdist and pvfs2-perror utility
292- many zero-fill cleanups
293- SIO (small-io) optimization: piggyback small I/O requests in initial
294  communication between server and client (like MPI eager mode, but for I/O)
295- fix a truncate bug
296- pvfs2-genconfig can create config files for running several servers on one
297  machine.  useful for testing
298- better pvfs2-client and pvfs2-client-core logging
299- better interaction between pvfs2-client and pvfs2-client-core
300- improvements to doxygen generation
301- rework the acache into generic tcache infrastructure upon which acache is
302  built
303- timeouts for kernel operations can now be adjusted via /proc/sys/pvfs2
304- cleanups for --enable-strict and building on 64-bit systems
305- update kernel interface for 2.6.15
306- assorted improvements to tests: more coverage, better reporting
307- fix several immediate completion cases: others probably remain
308- remove an extraneous call to make_bad_inode
309- better logging when msgpairarray fails
310- clean up the pvfs2-server shutdown process
311- improvements to nightly test error checking
312- fix immediate completion error with zero-byte reads and writes
313- more robust directory renaming technique
314
315pvfs2-1.3.2
316===============
317- new configure option for kernels which export internal symbols:
318        --disable-kernel-aio
319- fix for getattr error handling
320- fix for trove printing out a resource after (sometimes) invalidating it
321
322pvfs2-1.3.1
323===============
324- ib: add memory registration caching
325- ib: add support for cancel operation
326- ib: fix minor protocol problems
327- ib: cleanup build
328- better pvfs2-client and pvfs2-client-core logging
329- --enable-fast was broken
330- fix compile error on FC3 and RHEL 2.6.9 kernels
331- async i/o support (but needs libaio and libaio-devel at this time)
332- "trusted ports"
333- --enable-strict now compiles w/ a lot fewer warnings
334- fixed timestamp problems for pvfs2 files
335- listeattr system interface function
336- fixed bugs in timestamps
337- fixed bugs in zero-fill handling
338- no longer ship generated .c files from .sm. instead, ship the sm parser
339  (allows for easier release patching)
340- Phil Carns: server checks fs id on startup
341- Phil Carns: --num-dfiles option to pvfs2-genconfig
342- Phil Carns: fix setgid suport
343- Phil Carns: proper symlink support (created as 777, no way to change them)
344- Lots of portability fixes.  PVFS2 now builds on Darwin (userspace, no
345  kernel)
346- better tests for location of Berkely DB headers/libraries
347
348- Trach-Minh Tran <trach-minh.tran@epfl.ch> reported bug in append mode. fixed
349-
350
351
352pvfs2-1.3.0
353===============
354- Murali Vilayannur contributed extened attribute support to the VFS interface
355- Murali and Dean Hildebrand also worked on implementing readv and writev in
356  the VFS interface
357- Phil Carns contributed logging improvements to pvfs2-client and pvfs2-server
358- Phil also contributed improvements to the request processor which should
359  help speed up some concurrent workloads.
360- Phil further contributed protocol versioning to PVFS2.  Major version
361  changes are incompatible up or down.  New clients can't talk to old servers,
362  but new servers can talk to old clients.
363- clean up some warnings on 64 bit platforms
364- Phil contributed a pvfs2-set-sync tool
365- lots of configure tests for various kernel versions
366- rework acache
367- memory leak in flow descriptors
368- bugfixes for noncontig requests
369- improvements to the req scheduler: more operations can occur concurently now
370- improved handling of "zero-fill" case: sparse files now treated correctly
371- further improvements to nightly testsuite
372
373
374pvfs2-1.2.0
375===============
376- make server better able to handle bogus file names (David Metheny)
377- better casts for ppc64
378- even better configure tests for various berkely db features
379- documentation updates for Fedora 4 changes
380- extended attribute support (not available through VFS yet)
381- nightly build infrastructure now mostly in place
382- --enable-strict now works again
383- new utilities: pvfs2-touch, pvfs2-stat, pvfs2-ln
384- add additional write() checks to kernel module
385- hold st_nlink field at 1: keeping a true count is quite hard to do
386  correctly in a distributed environment
387- new distribution: "varstrip"j
388- better pvfs2 kernel module debugging interface (/proc/sys/pvfs2/debug)
389- pvfs2 now supports setgid
390- build: avoid some warnings from gcc4
391- kernel: understand new backing_dev_info format in 2.6.12
392- Added DefaultNumDFiles as filesystem config option.
393- Added num_dfiles tabfile option.  i
394  The number of dfiles is set by searching for the first given hint in this
395  order:  application hints, tabfile, server config.  The selected
396  distribution may modify the hint if neccesary.
397- Phil Carns contributed general improvements and bug fixes for the dotconf
398  parser.
399- Added DefaultDistribution section support for server config file.  Section
400  is optional and accepts Name, Param, and Value (Param and Value may be
401  repeated multiple times in the section).
402- added 'retry' and 'timeout' config file options
403- will consult /etc/mtab as an additional source for pvfs2 tabfile entries
404
405pvfs2-1.1.0
406===============
407- network protocol: more 64-bit alignment fixes
408- build: hide karma details in its module.mk
409- build: remove duplicate commands used for QUIET_COMPILE
410- build: fix test configure library detection
411- build: simplify karma and vis some more
412- build: add tests for features of Berkeley DB 4.3.xx
413- trove: fix bugs introduced by new features of DB 4.3.xx
414- docs: added doxygen configuration file and doxygen-style docs
415  to many source files
416- pvfs2-cp: can pass strip size as a parameter (thanks David Beilloin
417  <dbeilloi@mc.com>)
418- gossip: avoid double-timestamp in debug and error messages
419- feature-test for kernel routines i_size_write, i_size_read, and parent_ino
420- recover better from server failures
421- kernel: export superblock magic number for romio autodetection
422- 64-bit: change some protocol encodings to avoid unaligned accesses, fix
423  server crash
424- documentation updates
425- Phil Carns and David Beilloin reported various memory leaks and memory
426  misuse throughout the code
427- Phil Carns and David Metheny contributed their improvment to the
428  permissions-checking routines.  Secondary groups work much better now.
429- configure-time options to select behavior needed on redhat-like environments
430- can disable server support at configure time
431- various tweaks to make cross compiling easier
432- Phil Carns contributed a new config file option (LogStamp) to select
433  timestamp format
434- By default we sync metadata (TroveSyncMeta yes) and not data (TroveSyncData
435  no).  This configuration is a good compromise between reliability and
436  performance for most workloads.
437- Joachim Worringen's noncontig benchmark turned up several bugs now addressed
438  in this release
439- bugfix where pvfs2-chmod would cause all future operations to fail
440- bugfix for 64 bit servers.  pvfs2 on opteron now passes the bonnie benchmark
441
442pvfs2-1.0.1
443===========
444- ib: add configure-time checks for mosal library variations
445- ib: flush send queue work requests periodically
446- ib: search receive queue for both eager and rts (D. Beilloin)
447- improved support for some cases of file holes (that require zero fill)
448- fixed a crash bug due to incorrect assertion regarding zero fill
449- applied annotations and cleanups to the kernel module in response to
450  using the automated correctness checker called 'sparse'
451- fixed a bug that did not properly allow storage space removals when
452  using ReiserFS as the underlying file system
453- added more redhat checks for determining if we need to patch the
454  kernel module code to work properly with particular releases
455- FAQ documentation update
456
457
458pvfs2-1.0.0
459===========
460- disabled mmap readahead cache by default; allow configure option to
461  optionally enable it
462- added support for handling several cases of file hole zero fills
463  (i.e. sparse files)
464- configured acache timeout to be 5 seconds by default through the
465  vfs; sysint was already 5 seconds
466- added karma program installation to make install target
467- redhat 9 related changes (in order to work out of the box)
468  - used some 2.6.x kernel code on redhat 9 2.4.x kernels, if detected
469  - no longer mark pages as reserved on redhat 9 2.4.x kernels, as it
470    causes an oops on their kernel (i.e. not necessary)
471  - installed a wrapper script in place of the pvfs2-server that
472    exports the LD_ASSUME_KERNEL environment variable before running
473    the server(to avoid using the redhat NPTL library which is
474    incompatible)
475  - fixed make kmod{24}_install even if there are multiple UTS_RELEASE
476    definitions in the version.h file (as there are in redhat 9)
477
478
479pvfs2-0.9.0
480===========
481- documentation updates to HA and FAQ documents
482- better balancing (randomization) of data server selection when
483  creating new files
484- clean up a few request-related 8-byte alignment issues for alpha
485- fixed an AMD64 kernel oops due to a bad cast
486- cleaned up error code types in the exposed sysint and mgmt methods
487  (using PVFS_error rather than int)
488- added a setattr debugging mask and changed most detailed setattr
489  debugging to use it
490- added a mkdir debugging mask and changed most detailed mkdir
491  debugging to use it
492- added some inlined methods in PVFS_util (as they need to be used on
493  both the server and the client) for getting the current time in
494  PVFS_time format, encoding a PVFS_time as a version (finer grained
495  than a 'normal' PVFS_time since we can use the high 32 bits), and
496  decoding the version as a PVFS_time
497- added a compatibility hack that _should_ allow no noticeable
498  breakage on existing storage space, but will eventually migrate to
499  the slightly new storage format over time
500- modified client side sys-mkdir, sys-create, and sys-symlink to
501  encode the mtime as a version when passing it to the server (so it's
502  transparent from the server perspective)
503- modified server side get-attr to decode the version read from disk
504  back into an mtime (so it's transparent from the client perspective)
505- modified mkspace method to properly version newly created root and
506  lost+found directories
507- modified the server side mkdir operation to return -PVFS_EINVAL if
508  the object attr type is not a directory object
509- vfs readdir modifications to detect directory version changes on
510  listings; default behaviour is unchanged
511- fixed bug in collection remove that didn't remove the collection
512  information from the collection db (which manifested as having a bug
513  where a collection that was once created and then removed could
514  never be created again due to a lookup succeeding before it should)
515- added documentation on how to create multiple file systems within a
516  single pvfs2 storage space
517- added documentation on return codes of the sysint methods
518- pvfs2-mkspace improvements:
519  - now requires a collection ID, storage space and a handle range
520  - fixed types used to represent actual root handle and collection id
521    to be the proper types, rather than integers
522  - remove many defaults in favor of requiring cmdline options
523  - replace atoi calls with strtou{l}l to accomodate larger values if
524    specified
525  - cosmetic output improvements
526  - fixed mkspace method to make sure that we only use handle ranges
527    that are both non-null, AND are not an empty string
528
529
530pvfs2-0.8.0
531===========
532- adjusted mask values for event logging to skip 0 mask
533- moved handle counting in statfs to server side so that it is
534  done in parallel
535- replaced uniq() subroutine in PAV to avoid recursion
536- pvfs2-statfs cleanups and cast fixing
537- pvfs2-shell-test: replaced a directory test
538- add a clientcore_timing debug mask that only logs the operation
539  timings from the pvfs2-client-core
540- added some pts debugging
541- fixed bad assumption in getattr-acache that might have looked at the
542  wrong handle/fs_id during some operations (e.g. lookup)
543- removed potential latency on system startup by trying to store temp
544  config files in /tmp/ first rather than the current dir
545- make sure that our error routines strip any known class error bits
546  instead of deciding that they're unrecognized if set
547- improved trove error handling
548- improved pvfs2-server error handling
549- fixed crash bug in our config parser that tried to strdup strings
550  that might be NULL
551- pvfs2-types.h header file simplification and cleanups
552- extended buffer size of filename for use with mkstemp as it started
553  failing on ppc with misc unexpected characters
554- addition of a simple vfs test program that creates a file with a
555  hole in it and tries to read from that hole (this demonstrates a
556  currently known bug)
557- addition of the same test program using only the system interface
558- fixed some misc memory/resource leaks
559- fixed test program ls.c and admin program pvfs2-ls.c to not issue an
560  extra call to readdir on every run by fixing a slight logic bug
561- added a directory version that is passed back from the server to the
562  client on each successful readdir call and updated the client and
563  server response structures and encoder to accomodate this
564- ncache related:
565  - increased ncache timeout from 5 seconds to 30 seconds by default,
566    but keep it disabled by default (it's still experimental)
567  - cleaned up the ncache and make it useable by the
568    lookup/remove/create/mkdir/etc calls (if enabled)
569  - added a flag to the client sysint lookup sm that records if the
570    final object resolved was a followed symlink or not (regardless of
571    if it was followed or not)
572  - extended the ncache interface (lookup/insert/remove) to have the
573    ability to have multiple entries with the same name with different
574    handles based on some other tag (e.g. resolving a symlink object,
575    rather than what it points to).  this is also not in use at the
576    moment.  for now, no symlink objects will be inserted into the
577    ncache.
578  - added more ncache debugging
579  - added a fastpath return from client sysint lookup method on ncache
580    hit
581  - updated and extended all ncache test programs to work with the
582    changed API and fixed broken tests/verified that they still work
583- kernel related:
584  - fixed all warnings generated from compiling the pvfs2 kernel
585    module under 2.6.9 kernels
586  - removed write_inode method, as it was unused and probably won't be
587    used
588  - removed unused -v command option to pvfs2-ls
589  - added command option -V (and --verbose) which can detect version
590    differences in the directory being read and will report them if
591    this switch is enabled
592  - fixed misc compilation warnings on Opteron/AMD64 machines
593  - added directory version to readdir downcall (passed from
594    pvfs2-client-core)
595  - removed include of modversions.h directly from pvfs2-kernel.h
596
597
598pvfs2-0.7.0
599===========
600- fsck: server handles bogus datafiles better
601- fsck: pvfs2-fsck is a little smarter about what it tries to salvage
602- ib: avoid unsignaled WQE pileup
603- ib: avoid polling cancelled connections (first stab toward true
604  cancel)
605- ib: spin-block in test functions for better performance
606- ib: do not "open" HCA, just grab a handle
607- ib: fix leaking connection structs (thanks to D. Beilloin)
608- ib: use faster 1k mtu
609- ib: cleanup warning texts
610- configure: add option to disable AIO threaded callbacks
611- configure: fix GM and IB to enable only when explicitly requested
612- add timestamps to gossip debugging to file and stderr (not syslog)
613- ib: initial cancel support, works for pvfs2-ls
614- add multihome support: servers can listen on multiple addresses (and
615  BMI types), clients choose the first address from tabfile that works
616- bmi: poll adaptively based on recent usage
617- added trove-dbpf support for internally limiting the number of
618  simultaneous aio operations allowed in progress; default value is 16
619- increased mmap-ra-small buf size from 4K to 16K to avoid many small
620  allocations (causes slightly larger mem footprint of client-core)
621- adjusted client sysint setattr operation to work in a write-through
622  manner with the acache (when enabled)
623- fixed client sysint setattr to invalidate the acache entry (if any)
624- changed acache lookup to return the status (to avoid another acache
625  call that will always follow a successful lookup)
626- internal acache improvements, such as removal of duplicated code
627- updated acache-torture test program to match slightly new acache
628  interface
629- make sure mmap's requesting MAP_SHARED fail (mmap2 returns -EINVAL,
630  userspace mmap returns standard MMAP_FAILED value)
631- added compile time support for measuring roughly how long it takes
632  to process particular operations issued from the vfs
633- modified PINT_sys_testsome to return immediately without calling
634  testcontext if any ops are completed and ready to be returned right
635  away
636- made statfs return load information from servers
637- gm: fixed performance bug, make sure test calls check completion
638  queue before sleeping
639- gm: implement cancel functionality and verified for common cases
640- fixed dbpf SYNC macro bugs that caused hangs on systems without aio
641  callback support
642- updated pvfs2-config tool to use LIBS variable from configure
643- removed -ldb from client side link stage
644- added --serverlibs option to pvfs2-config to determine what
645  libraries have been linked against pvfs2-server
646- updated makefile system for tests directory to use pvfs2-config and
647  deprecate use of .libs file
648- added make install target for test harness programs
649- introduced mutex locking in trove-handle-mgmt to avoid race
650  conditions that appear when statfs is called while trove operations
651  are in progress
652- added utility functions for measuring elapsed wall, system, and user
653  time between specified points in code
654- fix glaring alignment failure in PVFS_server_req
655- fixed type of readahead_size in upcall for mmap-ra-cache that caused
656  the mmap-ra-cache to not work properly on PowerPC
657- no longer look in the mmap-ra-cache for data on reads unless we're
658  sure we're doing an mmap or execution (as opposed to always)
659- removed kernel module pvfs2_link call, as it was never used
660- moved static copy_mntent method to PVFS_util_copy_mntent method
661- added error handling to PVFS_util_copy_mntent
662- renamed PVFS_sys_free_mntent to PVFS_util_free_mntent
663- fixed successful return value of PVFS_util_copy_sys_attr
664- fixed initialize-dyn test program that broken due to mntent changes
665- changed get_data_sync_mode to explicitly return TROVE_SYNC if called
666  on an unregistered fs_id
667
668
669pvfs2-0.6.5
670===========
671- broke several server state machines into multiple nested machines
672- some PAV cleanups, including support for a larger number of meta
673  servers than io servers
674- update k_size (number of keyvals) in dspace attr cache when the
675  number of keyvals on disk changes
676- replaced all vfs 64 bit operation tags to be unsigned
677- replaced pint-dev code to work with 64 bit unsigned tags
678- moved all op initialization out of the constructor and into the
679  op_alloc routine
680- fixed tag cancellation upcall/method to use a 64 bit tag, rather
681  than an unsigned long
682- added a PVFS_util method to get the current system and return it as
683  a valid PVFS_time type
684- added arguments to the crdirent/chdirent/rmdirent operations that
685  now can take optional parent atime/mtime/ctime fields
686- added support on server *dirent operations that update the parent
687  time attributes (if specified) on successful completion of the
688  *dirent operation; null/zero time fields are not modified
689- modified sys-create/sys-mkdir/sys-symlink/sys-rename/sys-remove to
690  work with the new operations properly; in general,
691  create/remove/rename operations updates the mtime and ctime of the
692  parent directory, which is now properly supported
693- moved some common server side attribute handling code into a macro
694  to make it re-useable across several server state machines
695- updated en{de}coding of modified operations
696- remove sync calls on readonly trove operations
697- added sanity check to kernel's device poll; makes sure the device is
698  opened by only one user before returning valid results
699- make the device's request list waitqueue non-exclusive, since poll
700  waits as well
701- some formatting changes on kernel error reporting
702- added mmap-ra-cache support for partial cache fills on incomplete
703  requests; misc mmap-ra-cache enhancements
704- cast setparam values to uint64_t rather than int64_t in admin utils
705- remove trove sync call on server side root handle check
706- modify server side remove state machine to check the k_size of the
707  dirdata object being removed if it's a directory to report early
708  back to the client that the directory is not empty (if it's not)
709- remove the readdir checks in the client remove path now that the
710  server-side remove can tell us directly if a directory is not empty
711- modified PVFS specific error routines to print the value of
712  unrecognized error codes if encountered
713- fixed memory leak on check_fs_id setparam
714- fixed 64bit compile warnings (AMD64/Opteron)
715- split msgpair debugging into it's own class (no longer part of
716  'client')
717- break out clientcore debugging into its own debugging mask
718- fixed trove error codes
719- give trove flush and resize operations the ability to create the
720  bstream they're working with if it doesn't exist instead of
721  returning an error
722- fixed bug in (threaded) trove that did not properly reinitialize
723  condition variables after the first finalize
724- improvements to the storage space and collection removal code
725- extensive trove cleanups and cruft removal
726- check for error codes when doing server side getattr and reading
727  metafile information; stop processing if an error is reached
728- invalidate attr cache on write_at calls (never used)
729- changed pvfs2-showcoll coll_id prints from hex to decimal
730- kernel changes:
731  - enable kernel readahead hints on mmap/execution (i.e. sequential)
732  - initialize kernel module's request_list_waitq at declaration time
733  - put large print statement into a macro for convenience
734  - make all bufmap allocations GFP_KERNEL, regardless of highmem usage
735  - use add_waitqueue_exclusive for the io_completion_waitq entries
736  - clear random readahead hint on mmap
737
738
739pvfs2-0.6.4
740===========
741- added a pvfs2-config tool to help when compiling against pvfs2
742- new PAV option (COMPUTENODES_LAST) that controls whether compute
743  nodes are chosen first or last out of the total set of nodes
744  available
745- fix locking bug introduced in 0.6.3 that shows up when trove is used
746  without aio callbacks
747- explicitly name invalid msg tag value (0)
748- modified pvfs2-ls to show the mtime (rather than atime) in long
749  listings
750- updated set-info test program to update mtime (rather than atime)
751- fixed possible flow mutex memory leak
752- changed PVFS_time from an int64_t to a uint64_t
753- fixed a pvfs2-fsck compile time warning
754- fixed bug in sys-remove that erroneously tried to back out of the
755  remove even on error codes that are acceptable to return
756- moved to fully 64 bit unsigned gossip masks (for some more possible
757  debugging levels)
758- fixed bug in shared-state-machine getattr method that could allow
759  attributes to come out of the acache with incorrect types/fields
760- fixed bug in crdirent msgpair setups for create/mkdir/symlink (used
761  incorrect handles in mappings)
762- modified mgmt setparam call to take uint64_t parameters instead of
763  int64_t
764- kernel changes:
765  - fixed bug that allowed a file removed on one client to still
766    appear on another with bad attributes
767  - fixed dentry revalidation to never return that a dentry is valid
768    if's negative
769  - fixed directory inode's mtime and ctime changes on updates
770  - fixed directory link counts for some changes
771  - simplify atime/mtime/ctime conversion to sys_attr (and vice versa)
772    to and from inode's time fields
773
774
775pvfs2-0.6.3
776===========
777- added ability to negate log categories in
778  PVFS_debug_eventlog_to_mask
779- added pvfs2-fsck
780- updated pvfs2-quickstart to better discuss client configuration
781- added optional epoll() based socket management component (enable
782  with configure option --enable-epoll on linux 2.6 systems)
783- fixed configure bug that dropped default CFLAGS in some cases
784- adjusted trove id generation to make it easier to log trove events
785- fixed Makefile.in bug that caused pvfs2-server.c dependency
786  information to be lost
787- rewrote both threaded and nonthreaded versions of all job_testXXX()
788  functions
789  - fixed condition variable usage to avoid signaling races that could
790    lead to unecessary wait times
791  - simplified code path
792  - removed superfluous calls to gettimeofday()
793- adjustment of condition variable usage in trove-dbpf to avoid races
794  similar to those found in job_testXXX()
795- applied vim formatting patch to use spaces instead of tabs
796- fixed pvfs2-server permission check to allow users of the same group
797  to have access to other group members attributes (for listing)
798- fixed incorrect/invalid error codes and error handling
799- fixed pvfs2-server crash bug due to io state machine potentially
800  freeing a reqsched id that was never posted
801- added mgmt methods PVFS_{i}mgmt_get_dirdata_handle for retrieving
802  the internal dirdata handle of a specified 'parent' object (if any)
803- fixed pvfs2-server crash bug (race) in trove that could return an
804  object on queue addition that has already been serviced
805- extended server side mkdir state machine to create the internal
806  dirdata dspace when creating the directory (rather than waiting for
807  crdirent to create it if it doesn't already exist)
808- added mgmt methods PVFS_{i}mgmt_create_dirent mgmt for creating
809  directory entries at a low level
810- fixed request scheduler's acceptance of the mgmt-remove-* operations
811  while in admin mode (since these can be used in admin mode)
812- extended mkspace (and thus pvfs2-mkspace program) to initalize a
813  lost+found directory after the root directory is made
814- kernel changes:
815  - fixed credential usage bug that resulted in (seemingly random)
816    permission problems when using the file system as multiple users
817  - fixed a bug that appeared as data corruption due to mapped memory
818    pages in use being swapped out under heavy memory load under 2.4.x
819    kernels (and containing incorrect data on future accesses)
820  - remove slab poison flag from debug allocators, as some kernels
821    complain about how it was used
822  - do not use kmap/kunmap calls if not configured for HIGHMEM, as
823    some configurations cannot resolve these symbols
824
825
826pvfs2-0.6.2
827===========
828- updated documentation for dist-simple-stripe.c and modified
829  the basic distribution to use a single data file object.
830- fixed error reporting in pvfs2-server that didn't understand pvfs2
831  specific error codes
832- extended request scheduler to allow operations to pass through
833  without being scheduled (and allow the noop operations to work like
834  this)
835- disabled the (unused) device interface on server builds, reducing
836  server run-time threads by one
837- bmi optimizations: avoid polling in test calls if operations are
838  complete, or no operations are complete but there are unexpected
839  operations ready to be serviced
840- extended the pvfs2-mkspace tool to be able to work with data and
841  meta handle ranges separately (also extended the internal interfaces
842  as necessary for this functionality)
843- fixed bug in mkspace that could create the root directory dirent
844  object in a non-meta handle range
845- added client side attribute type checking that avoids contacting
846  servers if we've determined that the operation we're about to
847  perform cannot be performed on an object of the type we were told to
848  work on.  e.g., a readdir operation will not be issued to the server
849  if the getattr reports that the object we want to readdir on is not
850  a directory.  most sysint operations now have this checking in place
851- fixed crash bug on the server crdirent operation if passed a
852  non-directory object type
853- fixed race condition triggered when pvfs2-server is getting many
854  more incoming operations than it has posted unexpected msgs for
855- increase the default number of posted unexpected msgs by the server
856- properly re-integrate and simplify the usage of the mmap-ra-cache,
857  which wasn't working properly after the pvfs2-client-core re-write
858- fixed crash bug on the server due to an unexpected error code coming
859  out of pthread_cond_timedwait inside of job test calls
860- modify configure script to append date and time information to non
861  release builds (for more fine grained version information if needed)
862- fixed acache usage in sysint create/mkdir/symlink operations
863- open-cache remove now syncs (if necessary) after the remove, rather
864  than just before
865- removed duplicate 'open_cache' debugging keyword definition
866- allowed client side logging (via PVFS2_DEBUGMASK/PVFS2_DEBUGFILE env
867  variables) to append to the specified logfile, rather than
868  truncating it if it already exists
869- fixed bug in device test method that didn't properly adjust the
870  outcount on failure; also added the number of bytes read on a failed
871  (short) read
872- started adding debugging code for printing out server side response
873  structures (only getattr is currently implemented)
874- kernel changes: added some debugging and simplified the
875  handle_io_error macro.  also added translation of non-errno pvfs2
876  error codes (should it get one) to avoid returning entirely
877  incorrect error codes in some cases; avoid allowing -PVFS_ECANCEL to
878  be passed down to the kernel code from the pvfs2-client-core.  use
879  i_size_read to update file position on opens for append.  remove old
880  code that manually updated the inode's file size on writes
881- replaced debugging mask of cancelled i/o operations from io to
882  cancel
883- simplified pvfs2-statfs by retrieving all server statistics in one
884  call, rather than separate ones for meta and data servers; also
885  fixed reporting of server duties (previously all servers were
886  reported as serving both meta and i/o data)
887- added a start banner to pvfs2-client-core if client debugging is
888  enabled.  this allows easier visual inspection of restarts in logs
889- fixed bug when copying credentials to first make sure that they're
890  valid in all sysint/mgmt calls
891- added both server and client side (mgmt) operations to remove
892  arbitrary pvfs2 objects and directory entries without prejudice
893- added a 'pvfs2-remove-object' tool that can remove pvfs2 objects and
894  directory entries (use is not generally encouraged)
895- fixed pvfs2-fs-dump crash bugs when it fails to find some objects it
896  was expecting to see
897- adjusted the time that pav allows for copying binaries out to remote
898  machines
899- fixed bug bmi_tcp potential send deadlock under heavy loads
900- added a mgmt method that allows parameter sets on single servers
901  (rather than the previous one that allowed only all servers)
902- extended pvfs2-set-debugmask program to have the ability to set the
903  debug mask on a single server (rather than all) via cmdline options
904- replaced TroveSyncMode configuration option with separate
905  TroveSyncMeta and TroveSyncData options.  the default values are yes
906  for both
907- updated pvfs2-genconfig to reflect TroveSync* config option changes
908- implemented understanding of the data sync mode option in the flow
909  interface via the setinfo method
910- modified pvfs2-server to pass data sync mode option to the flow
911  implementation via setinfo on a per fs basis
912
913
914pvfs2-0.6.1
915===========
916- misc. updates to msgpairarray and associated tools to allow for
917  server side use
918- reorganization of server request parameters so that more (but not
919  all yet) are stored in a centralized table
920- removed some deprecated test programs
921- new pint-util.[ch] to contain utility functions shared between
922  client and server
923- some refactoring of server state machines (mainly crdirent) to allow
924  for code reuse in other state machines
925- no longer need to fix up generated html by hand
926- fixed a bug that allowed an open through the vfs without the O_CREAT
927  and O_EXCL flags to return -EEXIST (should be success in that case)
928- added a file_open.c test program that tests opens in various modes
929- error code cleanups (added PVFS_EACCES mapping to EACCES; moved
930  PVFS_EDETAIL to be a non-errno error code)
931- fixed pvfs2-ls to properly convert reported file times in user's
932  configured system localtime, rather than in UTC
933- fixed the kernel module information so that modinfo doesn't report
934  many duplicate entries
935- fixed server pidfile usage (-p cmdline option)
936- fixed msgpair retries to properly delay between retry attempts
937- added trove hooks to be able to peek at handles that will be
938  allocated later
939- cleaned up the remove state machine and removed an unnecessary
940  allocation/copy
941- fixed existing acache usage in the sysint calls to be more uniform;
942  removed some overhead in the sysint
943- fixed kernel device close to be aware if mounts are still active
944- added more tests to pvfs2-shell-test that test deeply nested
945  subdirectories
946- added a method to determine the min handle recycle time across all
947  configured servers' file systems
948- changed code formatting rules to use spaces rather than tabs in vim
949- fixed bug that didn't reload the cached config information on file
950  system removal (i.e. unmounts)
951- added a cmdline argument to pvfs2-client to specify the acache
952  timeout to use at run-time (default is 0 milliseconds, which is
953  effectively disabled).  this timeout is upper bounded by the min
954  handle recycle time across all servers, and it can change
955  dynamically as new mounts come and go
956- fixed a bug that allowed servers to create internal storage objects
957  outside of the meta handle ranges in some circumstances
958- replace single element msgpair/array setup code where possible with
959  a macro
960
961
962pvfs2-0.6.0
963===========
964- removed pvfs2-import and pvfs2-export in favor of pvfs2-cp
965- added compile time option for disabling thread-safety in the client
966  library (enabled by default; --disable-thread-safety to disable)
967- improved configure summary information emitted at configure time
968- added missing non-blocking sysint declarations to sysint header
969- made sysint test and testsome() calls more useable
970- merged dev unexp polling/handling with system interface
971- added PINT_sys_dev_unexp call that allows posting unexpected device
972  messages so that they can be returned from the sysint testsome
973  method in addition to completed sysint operations
974- added a id_gen_fast_unregister macro that is a no op, to make the
975  api more consistent with the id_gen_safe_* calls
976- modified device driver to work properly in non-blocking mode from
977  userspace by implementing the character device poll method and
978  modified the pint-dev device interface to make sure it can handle
979  the pvfs2 device in a non-blocking manner; added a no immediate
980  completion option to the device interface; made test more efficient
981  by not polling if no idle time is specified; check for poll errors;
982  use proper buffer sizes for reads across the device
983- added a method to free the mapped memory region on pvfs2-client-core
984  shutdown (valgrind complained)
985- modified all job uses of the id-generator to use the safe, rather
986  than fast, methods (useful for several reasons including safe
987  cancellation of already completed operations)
988- modified the job_dev_unexp method to have (and honor) the no
989  immediate completion flag if passed (used in the pvfs2-client-core)
990- re-wrote pvfs2-client-core to use sysint non-blocking operations
991- improved human readable size reporting
992- allow human readable size reporting to optionally use si units
993- added --si option to pvfs2-ls (similar to ls's --si option)
994- added -H option to pvfs2-statfs (similar to du's -H option)
995- added a method able to cancel I/O operations in progress
996- removed kernel ability to kill device file on cancelled I/O
997- added the ability of sys-io.sm to handle run-time cancellation while
998  still transitioning properly
999- added support in the pvfs2-client for ignoring an upcall retry for
1000  an op already in progress (as opposed to servicing it multiple
1001  times)
1002- added kernel method that allows the cancellation upcall/downcall
1003  cycle to progress, ignoring the fact that a signal is pending (since
1004  the only time a cancellation is issued is when there's a signal
1005  pending)
1006- fixed kernel oops on setattr (signal) interruption by returning a
1007  valid error code in this case
1008- full acache cleanup, bugfixes, and thread-safety support
1009- allow the sysint post() method to complete an op if finished
1010  (i.e. all states are immed. completion) by adding it to the
1011  completion list (which test/testsome can retrieve)
1012- removed 'cached' attribute fields from getattr_sm object
1013- removed mostly duplicated code from shared-state-methods.c
1014- added support (testing only) for building a threaded client library
1015- gracefully terminate thread-mgr testing threads on errors (this is
1016  only really useful for graceful shutdown of the threaded client
1017  library)
1018- added a set_info option to bmi that tells it to be more aggressive
1019  when cancelling operations (bmi_tcp will now close sockets)
1020- fixed kernel bugs that didn't release the bufmap indices in use on
1021  some error paths (eventually caused all of them to be permanently
1022  used which caused hangs on I/O)
1023- extended msgpairarray code to only retry msgpairs that haven't
1024  completed already
1025- increased kernel module single operation timeout to be 60 seconds
1026  instead of 30 seconds (note: as a side-effect this also extends the
1027  amount of time you'll have to wait on interrupted operations via
1028  signal for now)
1029- added PVFS_strerror_r; an equivalent to strerror_r (the thread-safe
1030  strerror call) that handles PVFS_error codes
1031- added a simple file_write test program (tests are not in releases)
1032- always delay for 1 second before spawning the pvfs2-client-core from
1033  within the pvfs2-client to avoid filling dmesg with harmful looking
1034  errors while restarting (and re-opening the device file)
1035- new trove component called dbpf-open-cache that caches open file
1036  descriptors and db references; replaces dbpf-bstream-fd-cache,
1037  dbpf-dspace-db-cache, and dbpf-keyval-db-cache; fixes a few long
1038  standing file size and attribute bugs
1039- added a few missing admin tools to make install target
1040- more attribute debugging messages or server
1041- added admin utility program pvfs2-chown
1042- added make lib/pvfs2-threaded.a target that can be used to build a
1043  multithreaded version of the pvfs2 client library
1044- thread safety for dynamic activation of bmi methods
1045- fixed makefile LD selection and html docs target
1046- fixed bmi deadlock that appears in multithreaded library
1047- fixed responsiveness of pvfs2 kernel driver device poll
1048- added new option to BMI called BMI_FORCEFUL_CANCEL_MODE to serve as
1049  a hint to modules to be more aggressive when cancelling operation
1050  (i.e., tell tcp to always close sockets when cancelling)
1051- renamed pint-bucket component to pint-cached-config
1052- enabled pint-cached-config on server side
1053- unified how autogenerated .c files are tracked across client and
1054  server builds
1055- fixed distclean for release tarballs so that it does not destroy .c
1056  files that cannot be regenerated without full cvs source
1057- moved msgpairarry from client code to common code and made many
1058  adjustments to enable general usage; linked into server
1059- misc. msgpairarray cleanups
1060- removed depricated PINT_client_bmi_cancel() function
1061- updated state machine compiler to allow multiple machine definitions
1062  per file
1063- added new null job type that can be used to manually trigger
1064  asynchronous state machine transitions
1065- refactored server side functions used to start state machines that
1066  are not tied to incoming requests
1067- refactored server crdirent state machine using nested state machines
1068  and a little bit clearer error handling
1069- added job functionality to reset timeout timer on pending jobs
1070- removed old "contig" encoder from source tree
1071- added new "cancel" debugging mask to look at job timeout behavior
1072- documentation updates: a new high availability document, faq update,
1073  guide update, manpages
1074- moved exported pvfs2-util string functions to private str-utils
1075- added permission checking debugging mask and keyword to debug what
1076  the server is doing on permission granting or failure
1077- modified cosmetic output of admin tool pvfs2-set-debugmask
1078- make sure pvfs2-client doesn't cause a hang on ssh logout due to
1079  improperly closed fds; this was fixed in the past but unfixed to
1080  report exec failures.  we can't do that anymore with this setup, so
1081  we'll have to either require an absolute path to the client
1082  (preferred), or scan the PATH ourself to be sure it can be found; or
1083  log to a file like the server
1084- added debugging regarding the handle re-use timeout
1085- increased the default handle re-use timeout from 45 to 360 seconds
1086- removed redefinition of the default handle timeout constant
1087- change permissions to reasonable defaults on newly created
1088  directories using pvfs2-mkdir
1089- extended pvfs2-cp to preserve src to dest permissions where
1090  applicable
1091- extended pvfs2-cp to allow symlinks to be copied to and from pvfs2
1092  (as the link target file, not as a link -- similar to normal 'cp')
1093- extended pvfs2-cp to truncate target files if they exist
1094- added a threaded vfs test program to perform heavy I/O on a single
1095  file
1096- fixed pvfs2-server to continue processing after recoverable
1097  BMI_testcontext errors
1098- added some gossip debugging along the acache code path
1099- kernel bugfixes:
1100  - don't attempt to shrink the sb's dcache on device close in the
1101    case that the sb has not yet been filled
1102  - translate error codes that occurred while waiting for the
1103    downcall, rather than assuming an error came back from the
1104    downcall (in the case that it didn't); fixes a possible oops on
1105    invalid mounts
1106  - use fully 64-bit op tags instead of relying on unreliable casts
1107    and assumptions moving from kernel space to userspace; changes use
1108    of an atomic_t type to a spinlock protected int64_t; works on ppc
1109    without problems now
1110- changed pre-posted write_ack recv posting to have an infinite
1111  timeout that is reset on flow completion to avoid timeouts before
1112  operation completion
1113- fixed crash bugs on (unexpected) job expiration in various places
1114- fixed crash bugs when an invalid (or unsupported) encoding type is
1115  specified by reporting the error to the user, and the completing the
1116  operation if possible by cycling through the valid encoders
1117- added pvfs2tab support for the line encoding=default
1118
1119
1120pvfs2-0.5.1
1121===========
1122- added a pidfile option to pvfs2-server for init script integration
1123- auto-tuned BMI timeout to poll during activity, sleep a bit
1124  otherwise
1125- pay attention to BMI timeouts in IB layer
1126- fail quitely on unrecognized BMI method types in pvfs2tab
1127- disabled TCP method for IB builds
1128- added pvfs2-cp, which should have all of the functionaly of
1129  pvfs2-import and pvfs2-export, but none of the bugs (!)
1130- bug fixed to idle detection logic in job.c (non-threaded case)
1131- some tweaks to BMI timeout behavior
1132- removal of some deprecated BMI code
1133- bug fixed that caused problem when trying to add an invalid mount
1134  entry
1135- bug fixed when trying to add general dynamic mount entries
1136- distribution framework cleanups
1137- updated test programs and pts test harness to use new distribution
1138  code
1139- bug fixed that allows i/o attempts on non-datafiles to be handled
1140- bug fixed that caused breakage on the verbose debugging mask
1141- implemented non-blocking client library calls for all sysint and
1142  most mgmt operations
1143- changed all credential arguments to credential references
1144- export id-generator methods for sysint users
1145- removed pvfs2-threaded-client-core application from code base
1146- added pvfs2-mkdir program
1147- added pvfs2-cp program (soon to replace both pvfs2-import &
1148  pvfs2-export)
1149- added a GPL license notice in the top level files for the kernel
1150  module
1151- moved cached configuration information our of the configuration
1152  object
1153- allow server setattr operations to be performed even if write access
1154  on the object being modified is not granted (fixes utime failures
1155  and misc other permission problems like untarring some files)
1156- kernel bugfixes:
1157  - fixed an oops on cancelled object operations (file,dir,symlink)
1158  - fixed kernel error codes in several places
1159  - fixed a memory leak that didn't free symlink targets
1160  - replaced new_inode call with iget to avoid the possibility of
1161    duplicate inodes with the same number in the vfs
1162  - fixed kernel create mode translation when creating new objects
1163- kernel 2.4.x. support introduced (supports 2.4.19 and up)
1164- allow pvfs2-client to restart on device open failure
1165- updated quickstart with the following information:
1166  - gcc 2.96 or above is required (as gcc 2.95 generates buggy code)
1167  - how to use the kernel interface under 2.4.19 or above
1168- misc cleanups, error handling, and debugging
1169
1170
1171pvfs2-0.5.0
1172===========
1173- consolidate msgpair and msgpairarray implementations
1174- bug fixed in "make kmod" path handling
1175- added ability to build kernel module and test programs to
1176  pvfs2-build.sh
1177- added scripts (from Justin Luck) for nightly vfs testing
1178- started nightly vfs testing (see pvfs2-testing mailing list)
1179- implemented job cancel api
1180- added job timeouts, and started using in both client & server
1181- added ability to (manually) reconnect after transient failure in
1182  bmi_tcp
1183- allow queueing of receives for failed bmi_tcp addresses that may get
1184  reconnected
1185- removed some depricated client library code
1186- started using PVFS_ECANCEL rather than PVFS_EINTR for cancelled
1187  operations
1188- added bmi address reference counting
1189- allow server to discard anonymous bmi addresses after connection has
1190  been closed (to conserve resources)
1191- removed test subdirectory from distributed releases
1192- cleanup of protocol version mismatch error messages, including a way
1193  to propigate errors detected on server back to client
1194- fixed db cursor leak in trove
1195- fixed for busy spin condition in client library when retrying
1196  operations
1197- various cleanups to error handling in msgpairarray code
1198- added some shell script testing and bonnie++ testing to automated
1199  tests
1200- fixed pvfs2-ls handling of large usernames
1201- fixed kernel bug that allowed you to remove the module while in use
1202- kernel bufmap general I/O path improvements
1203- increase the default size of the server-side attribute cache
1204  (configurable in pvfs2-genconfig)
1205- randomize the file system IDs generated by pvfs2-genconfig
1206- internal id-generator code enhancements
1207- fixed a gcc compilation warning on older versions
1208- added a new error code system that allows the addition of addition
1209  pvfs2 specific error codes for use within the system
1210- added logic to automatically retry sends and receives of network
1211  operations on communication failure
1212- proper unposting and cleanup of posted recvs that are no longer
1213  needed
1214- added high level retry logic for system operations to help tolerate
1215  transient server failures
1216- fixed truncate operation to properly return error code and not
1217  operate on anything that's not regular file
1218- added a chdirent server operation that replaces an existing dirent
1219  and returns the old (useful for renames where the target exists)
1220- refactored the client side remove state machine so that it can be
1221  used by both the remove and rename client operations
1222- general cleanups and improvements to the client side rename
1223  operation
1224
1225
1226pvfs2-0.1.3
1227===========
1228- added event logging to request encoder, server state machines, and
1229  most job calls
1230- some changes to the event logging mask system
1231- some new test programs for event logging
1232- fixed flow protocol handling of zero byte request processing results
1233- moved pvfs2-client* to src/apps/kernel/linux-2.6
1234- added an independent configure and make setup for test subdirectory
1235- removed all dependencies on test subdirectory from src subdirectory
1236- properly report if the pvfs2-client fails to execute the core
1237  program
1238- reworked the error code handling in the kernel module to better
1239  match the userspace pvfs2 error codes
1240- handle kernel mount attempts that fail without crashing
1241- added support for the pvfs2-client-core to request that the kernel
1242  module pass all of the mount information it knows about back to the
1243  client so that a client restart can seamlessly pick up from where it
1244  left off
1245- added a client/kernel umount operation that removes dynamic mount
1246  entries
1247- properly report symlink types in the pvfs2-ls tool
1248- fixed karma from hanging on start due to a previous api change
1249- reworked the client side system interface to be able to handle
1250  dealing with multiple server configuration files at once
1251- kernel now supports multiple mount points from different servers
1252- kernel mount option parsing improvements and error handling
1253- fixed broken configure options: --enable-karma and --disable-karma
1254- better error handling and synchronization in the kernel module
1255- fixed a kernel crash if pvfs2-client-core was restarted while
1256  another process was attempting to do I/O
1257- added a mechanism for ensuring that remount operations are serviced
1258  first by the pvfs2-client-core on restart, rather than failing all
1259  pending operations until the mount tables are built
1260- reworked the dbpf-attr-cache to use both fs_id and handle as the
1261  lookup key to allow it to work properly when multiple file systems
1262  are mounted
1263- fixed a kernel crash bug that tried to overwrite pages at invalid
1264  offsets on read error
1265
1266
1267pvfs2-0.1.2
1268===========
1269- BMI IB module:
1270    - fix bug resulting in mixed-up connections
1271    - clean up incoming message processing
1272    - refactor test and testcontext code
1273    - simplify state machine
1274- add shared and static libraries build options
1275- honor PVFS2_DEBUGFILE environment variable in client
1276- Kernel module builds:
1277    - build the module with everything else, if configured
1278    - clean up properly
1279    - work out-of-tree
1280- Build system:
1281    - list explicit include directories
1282    - add cflags provided by module makefile stubs
1283    - install kernel module if configured
1284    - simplify dependency generator script, add .po
1285- BMI: initialize needed methods dynamically, not at startup
1286- add ability to force use of alternative pvfs2tab file at run time
1287- general cleanup of API used for system interface initialization,
1288  including tabfile parsing
1289- added reserved value for fsid type to indicate uninitialized value
1290- BMI and flow interfaces now accept NULL list of modules to
1291  initialize defaults, BMI interprets this by delaying init of modules
1292  until needed, flow interface interprets by initializing all possible
1293  modules
1294- new api functions for resolving local file system paths
1295- added ability to dynamically add and remove file systems from the
1296  system interface at run time
1297- fix request scheduler bug that was leading to odd behavior under
1298  heavy I/O load
1299- added some scripts started by Wes Emeneker to automated the steps
1300  needed to download and build ROMIO with PVFS2 support
1301- re-enable compilation of Jiesheng's caching flow protocol
1302- added new automated nightly test scripts started by Wes Emeneker
1303  into test/automated subdir
1304- started running automated tests on Adenine cluster at Clemson as a
1305  nightly cron job
1306- isolated a request processing corner case with a test program
1307- renamed PVFS_pinode_reference -> PVFS_object_ref to cleanup the
1308  system interface a little further
1309- added some first stubs for hooks to specify distribution parameters
1310  at runtime
1311- added more specific server and client side debugging keywords
1312- enhanced vfs error reporting
1313- client sysint cleanups and error reporting improvements
1314- server operation cleanups and error reporting improvements
1315- bmi error code translation hooks to work properly with pvfs2 error
1316  codes
1317- fixed mmap-ra-cache bug that didn't flush data at the right times
1318- made the mmap readahead cache functionality a configure option
1319  (enabled by default)
1320- fixed vfs bug that caused multiple processes accessing the same file
1321  trigger a SIGBUS on file close
1322- enhanced vfs test pvfs2-shell-test.sh to test a tricky case of
1323  filling and emptying the page cache repeatedly in a worst case
1324  scenario
1325- start client sysint thread safety by making accesses to the global
1326  configuration object serialized
1327- reworked the vfs statfs method to not cause overflows on some
1328  kernels
1329- re-introduced a client sysint lookup optimization to work with the
1330  overhauled client lookup operation
1331- fixed size reporting of symlinks in pvfs2-ls program
1332- fixed vfs getattr calls for directories and symlinks
1333- added an experimental testbed program for testing threaded client
1334  sysint operations based on the pvfs2-client-core (called
1335  pvfs2-threaded-client-core)
1336- mostly consolidated credential generation to one place
1337- modified the kernel mount and initialization to use the dynamic
1338  mount system, where a server and file system name is specific on the
1339  mount command line (no more hard coded coll_id and root_handle!)
1340- fixed a particularly nasty vfs race bug that could crash the kernel
1341  during writes
1342- fixed a vfs bug that could cause a client to think a file did not
1343  exist when in fact it did
1344- added full support for dynamic vfs mount (which breaks the old way
1345  of mounting, but is more convenient and makes more sense)
1346- Better documentation for building MPICH2+ROMIO+PVFS2
1347
1348
1349pvfs2-0.1.1
1350===========
1351- can now specify Trove sync behavior when setting up PVFS2 volumes w/
1352  pav
1353- added a new mpi-io test to exercise ROMIO's scalable operations
1354- better detection of dead sockets in BMI TCP/IP module
1355- fixed pvfs2tab file parsing bug
1356- completely rewritten TCP/IP socket management
1357- fixed potential server deadlock on shutdown bugs
1358- fixed vfs bug that stalled the server on signal cancelled operations
1359- enhance vfs support to ignore non-fatal signals caught while waiting
1360  for a remote operation to complete
1361- added support for the "intr" mount option to allow any signal to
1362  interrupt remote operations (similar to the nfs option)
1363- enhanced test/kernel/linux-2.6/pvfs2-shell-test.sh test script to
1364  test mmap reads and allow more run-time flexibility
1365
1366
1367pvfs2-0.1.0
1368===========
1369- initial support for logging traces with both MPE and Pablo libraries
1370- fix some warnings on x86-64
1371- work around older Berkeley-DB versions w/o support for DB_DIRTY_READ
1372- implementation of cancel() in BMI, Trove, Flow, and thread mgmt
1373  interfaces
1374- graceful recovery from I/O errors within flows
1375- updated perf interface to return metadata access statistics
1376- various bmi_tcp optimizations (cut down on system calls)
1377- fixes to bmi_tcp cpu utilization
1378- dynamic traffic graphs added to Karma
1379- improved cleanup from messaging errors in client libraries
1380- added ability to report partial errors with details from mgmt
1381  interface
1382- revisited locking approach in jobs, flows, and bmi_gm
1383- new config file option to control default Trove sync behavior
1384  (metadata)
1385- pvfs2-genconfig update to generate default sync'd metadata sync mode
1386- added experimental metadata mode (nosync, instead of sync) for
1387  allowing unsync'd operations to occur that reads from dirty memory
1388  (written but non-committed data) to help enhance performance
1389- graceful shutdown when server gets ctrl-c (SIGINT)
1390- pvfs2-ls output and argument bugfixes and better error reporting
1391- handle allocator fix to no longer return invalid handles if no valid
1392  ranges have been registered
1393- improved server version reporting and exit path (using --version/-v)
1394- vfs kernel module warning removal (code without proper locks held)
1395- fixed vfs bug that assigned incorrect link counts on new entries
1396- fixed vfs bug that used uninitialized data structures when compiled
1397  without kernel debugging support
1398- fixed vfs bug that didn't properly initialize root inode's
1399  handle/fs_id
1400- fixed vfs bug that failed to adjust file position on files opened
1401  for append
1402- fixed vfs bug that didn't properly rebuild attributes of files that
1403  could cause erroneous type changes in the vfs
1404- fixed vfs bug that could not remove directories with more than 32
1405  entries in them
1406- fixed potential vfs race regarding op queueing with a lock
1407  re-ordering
1408- improved error reporting of error codes from pvfs2 through the vfs
1409- improved error reporting and detection in the configuration parser
1410- optimized server flush operation to only flush either metadata or
1411  data, depending on the object being worked on
1412- test/server/showconfig output improvements
1413- properly clean up meta and data handles during sys_create if the
1414  crdirent step fails
1415- make pvfs2-import check if the target file exists before attempting
1416  to create it
1417- pvfs2-fs-dump output improvements (made more readable)
1418- added test/kernel/linux-2.6/pvfs2-shell-test.sh that is useful for
1419  running some simple vfs tests on a mounted pvfs2 volume
1420- added configure option to allow the karma gui to not be built
1421- fixed a bug that would not allow sysint initialization if the user
1422  does not have write permission in the current directory
1423- properly cache attributes at create and write time instead of
1424  waiting until the first read is done
1425
1426
1427pvfs2-0.0.9
1428============
1429- added karma administration (new gtk+ gui) for interactive monitoring
1430  of pvfs2 servers (statistics and performance)
1431- fix support for creating/using/removing multiple collections (file
1432  systems) within a storage space
1433- improved pvfs2-client backgrounding (better descriptor management)
1434- pvfs2-ls improvements for handling multiple mount points specified
1435  on the same command line
1436- capture some more data in the mgmt server statfs object,
1437  pvfs2-statfs program update
1438- add kernel support for being an nfs exportable file system
1439- add kernel support for being able to mount more than one pvfs2 volume
1440- misc code cleanups and removals all over
1441- test/client/sysint program bugfixes and cleanups
1442- pvfstab parsing bugfix
1443- pvfs2-ping and pvfs2-statfs support for multiple file systems
1444- improved server error reporting if failure occurs before backgrounding
1445- fix hang on server shutdown via signal
1446- new maint script (pvfs2smdot.pl) for generating a graphical
1447  representation of the state machines and transitions (dotty format)
1448- updates to state machine syntax, including support for comments and
1449  explicit termination of state machines
1450- initial work on ability to gracefully cancel pending I/O operations
1451  within the system
1452- sync and truncate bug fixes
1453- mpi-io-test reports variance among processes
1454- fix potential bug in le-bytefield encoder
1455- use correct compiler flags with Intel cc
1456- fixed and enhanced the pvfs2-mkspace program for creating/removing
1457  collections and storage spaces
1458- adjusted all gossip masks to have a standard prefix
1459
1460       
1461pvfs2-0.0.8
1462===========
1463- many alpha platform improvements, including configure check passes,
1464  compilation fixes, and vfs fixes (alignment/overflow bugs)
1465- pvfs2-genconfig quiet mode improvements
1466- removed extraneous sample server configuration files from source
1467  tree (can now be generated at compile time)
1468- kernel mmap/readahead cache improvements and bug fixes
1469- improved pvfs2-server signal handling, error reporting, and handling
1470- added a configure/compile time option for allowing function
1471  backtraces on critical errors (see ./configure --help) and backtrace
1472  documentation for analyzing what they mean (see doc/coding/)
1473- properly implement the rmdir operation through the kernel interface
1474- improved dbpf-attr-cache error handling and serious bug fixes (race
1475  condition and potential memory corruption fixes)
1476- race condition fixes on the trove dbpf-thread code, job thread
1477  manage, and job desc queueing code
1478- a complete re-write of client side system interface lookup operation
1479  that now handles path components such as '.' and '..' and allows
1480  better absolute and relative recursive symlink resolution, including
1481  a new client debugging keyword/level specific to the lookup
1482  operation
1483- added a symlink test to the pts test suite
1484- added some test shell scripts to the test/client/sysint directory,
1485  mostly useful for stressing the new lookup operation
1486- kernel and client side i/o path improvements that now gracefully
1487  handle errors such as the case of i/o happening on a file that is
1488  removed by another process
1489- implemented a previously unimplemented kernel method (inode:getattr)
1490- pvfs2-client command line parsing bug fix (no longer crashes on
1491  invalid args)
1492- improvements to several test programs (in test/client/sysint)
1493- removed several files and function that are no longer needed
1494- on disk storage format is now versioned
1495- bound acache size, while it's only holding invalid entries and
1496  growing too large
1497- powerpc file size listing fixed in pvfs2-ls
1498- added appendices to quickstart to cover a few more scenarios
1499- more sanity checks in remove path (in particular for directories)
1500- reorganized thread management for kernel / userspace communication
1501  used by pvfs2-client
1502- some pvfs2-ls bug fixes
1503
1504
1505pvfs2-0.0.7
1506===========
1507- re-worked architecture of metadata storage (generic dspace attrs are
1508  used instead of a separate keyval/data pair)
1509- added a server-side (trove-dbpf) attribute write-through caching
1510  layer for caching generic attributes and keyval/data pairs that are
1511  user configurable
1512- added a readahead data cache specifically for vfs mmap-read and
1513  execution, improving their performance greatly (running, editing,
1514  compiling, etc on a pvfs2 volume is now much more responsive)
1515- fix size reporting using 'du' through the vfs interface
1516- GNU/Linux PowerPC 32bit support, including the 2.6.x kernel
1517  interface
1518- updated pvfs2-genconfig to account for new config file format
1519- fixed an I/O bug that caused data access problems on some multiple
1520  I/O server configurations
1521- removed extra berkeley db error reporting since it's not integrated
1522  with our gossip error reporting system.  can now be explicitly
1523  enabled using a new configure option --with-berkdb-debug
1524- fixes to state machine compiler to workaround hangs on some machines
1525- new scripts in maint/build for building and testing PVFS2
1526- better balancing (randomization) of metadata server selection when
1527  creating new files and directories
1528- various error msg cleanups (in several components)
1529- mutex locking improvements, allowing support for NPTL thread
1530  implementations and also improving performance for some operations
1531- fixed a bug in client side lookup that can cause nested entries
1532  across multiple meta servers to work incorrectly (does not affect
1533  kernel interface)
1534
1535
1536pvfs2-0.0.6
1537===========
1538- improved kernel truncate support
1539- fixed kernel ioctl return values (so that 'tar -xv[z|j]f' can work
1540  on pvfs2 volumes)
1541- minor configuration file format changes
1542- improved performance monitoring framework
1543- pvfs2-vis-bw-2d tool for server throughput monitoring
1544- many symbol name cleanups
1545- removal of deprecated code
1546- kernel inode link count fixes
1547- bucketized (single indirection) 'on-disk' representation of bstream
1548  and keyval files in the host storage space
1549- a pvfs2_rmspace (opposite of mkspace); can be invoked by server
1550  using the -r command line option
1551- added kernel module highmem support
1552- renamed attribute cache 'pcache' to 'acache'
1553- large file support bug fixes
1554- improved client sysint rename implementation (state-machine)
1555- improved signal handling in pvfs2-client
1556- switch to a new protocol encoder which translates requests and
1557  responses into a machine-independent format, allowing
1558  interoperability between 32- and 64-bit machines and little- and
1559  big-endian machines.
1560       
1561       
1562pvfs2-0.0.5
1563===========
1564- clean compilation on 64-bit machines
1565- vfs stability improvements during I/O, including across client
1566  restarts
1567- statfs reporting improvements (closer to correct)
1568- sysint remove method fix to properly clean up datafiles
1569- partial path symlink resolution support
1570- vfs symlink resolution/following support (including partial path)
1571- added sysint parameter to sys_lookup that dictates if the final
1572  object on lookup should be resolved if it's a symlink
1573- runtime options to choose request encoder (see pvfs2tab man page)
1574- new, much faster, default flow protocol
1575- streamlined support for threaded and non-threaded server builds
1576
1577
1578pvfs2-0.0.4
1579===========
1580- improved truncate support (pcache usage/integration)
1581- kernel truncate support (improved file size reporting)
1582- removed several run-time verbose (expected) warnings
1583- fixed a handle rollover bug in extentlist handler
1584- fixed bit-rotted non-threaded trove/job compilation
1585- improved client sysint readdir implementation (state-machine)
1586- improved client sysint mkdir implementation (state-machine)
1587- improved client sysint setattr implementation (state-machine)
1588- improved client sysint lookup implementation (state-machine)
1589- symlink resolution/following support
1590- multiple metadata server configurations are now supported
1591- pvfs2-genconfig can now generate multiple metadata server
1592  configurations
1593- pav and pvfs2-genconfig now run in 'perl -w' mode w/o any warnings
1594- added event logging framework, instrumented a few code paths
1595- example tools to manage event log (pvfs2-set-eventmask and
1596  pvfs2-event-mon-example)
1597- started some example perf monitor visualization tools, src/apps/vis
1598  subdir
1599- new network encoding for heterogeneous systems (le-bytefield)
1600- env variable to set client side debugging level
1601
1602       
1603pvfs2-0.0.3
1604===========
1605- more pts tests for pvfs2 datatypes
1606- ability to specify flowprotocol in pvfs2tab file per fs
1607- truncate implementation
1608- new flow design document
1609- statfs implementation
1610- rewritten mgmt interface, and several new functions
1611- pvfs2-statfs admin tool
1612- configurable handle timeout on server
1613- fixed symbol name collisions with pvfs1
1614- better sigpipe handling
1615- added backtrace feature to gossip_lerr()
1616- non interactive mode for pvfs2-genconfig
1617- request scheduler support for timer events
1618- server performance counters
1619- mgmt functions and example tool (pvfs2-perf-mon-example) for
1620  gathering real time performance statistics from servers
1621- added CREDITS file
1622- addition of PAV (PVFS auto volume) tool for automated test runs
1623- kernel rename() improvements
1624- import of mpi-io-test program
1625- redhat style rc script for server
1626- addition of administrative mode for servers
1627- pvfs2-set-mode admin tool to toggle admin mode for file system
1628- mgmt API hooks necessary for fsck and dumping fs
1629- beginning of pvfs2-fs-dump tool, that can show file system structure
1630  and potential problems, optional dotty output
1631- "make dist" build target
1632- removal of depricated test programs
1633- man pages for many admin tools etc.
1634- new/updated quickstart, users guide, and status document, README,
1635  and INSTALL
1636- removal of depricated design documents
1637- request scheduler support for batch/list operations
1638- many many many bug fixes and code cleanups
1639- vfs mmap and execution support (read-only)
1640
1641       
1642pvfs2-0.0.2
1643===========
1644- server side memory leaks almost entirely eliminated                         
1645- configuration file options for specifying BMI and Flow modules             
1646- job level thread management optimizations                                   
1647- integration of a buffer cache into tree (not yet hooked up)                 
1648- support for symlinks                                                       
1649- support for vfs symlinks (can exist; can't be followed)                     
1650- symlink attributes are now able to be added to the pcache                   
1651- BMI infiniband driver merged in
1652- new pvfstab format and parsing code
1653- kernel module reports big block size on stat
1654- job api changes to prevent client side race conditions
1655- improved I/O path attribute caching
1656
1657
1658pvfs2-0.0.1
1659==========
1660- limited initial public release
Note: See TracBrowser for help on using the browser.