-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
1660 lines (1566 loc) · 77.2 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
-----------------------
PVFS2 Release ChangeLog
-----------------------
pvfs-2.8.2
=============
* Support for the latest kernels, including 2.6.29 - 2.6.32.
* Performance improvement for small, serial I/O workloads
* Performance improvement for many (10k) close operations in parallel
* This release includes a number of minor bug fixes, including fixes for:
- trove direct I/O mode for syncing file size
- cancelation of I/O on timeout
- permission checking for truncate
- acl checking return value (should be EACCES)
- group permission checking
- double free in create cleanup path
- unstuff code path for read operations
- allow creating a file with just a single datafile
- flow deadlock occurring for large I/O
* Minor memory leak fixes on server shutdown
pvfs-2.8.1
=============
* Fixes for trove migration with pre-existing
storage that contains empty files
* Bug fixes to build of Infiniband BMI module
* Build fixes for using --enable-shared
* Update to heartbeat example
* Fixes to tcp BMI for multiple threads calling testcontext
pvfs-2.8.0
=============
* Many bug fixes.
* Support for the latest kernel releases, including 2.6.28.
* Support for the latest releases of Berkeley DB, including 4.7.25.
* New Direct I/O mode for enterprise storage backends.
* Optimizations for small file workloads, including inode-stuffing
and object pre-creation.
* Improved performance for directory listing (readdir).
* Better integration with high-availability environments.
* New tracing component to integrated with TAU trace logs.
* Support for creating and building BMI only packages.
* Experimental support for a PVFS FUSE module.
pvfs-2.7.1
==============
* support for the latest kernel versions
* kernel module:
- fixes to kernel dcache revalidate for multiple clients
- fixes to kernel getattr update race conditions
- modified kernel slot timeout to be separate (and much longer) from
the upcall timeout
* bmi-ib: fixes to infiniband double free bugs
* bmi-tcp: fixes to eager mode for slower client platforms
* fixes to state machine processing.
* fixes for the migration utility to work with single config file.
* memory corruption fixes.
* improved support for multithreaded system interface usage
* performance:
- removed unecessary locks in server metadata operations
- better caching of long-term attributes for IO
- improved pvfs2-lsplus and readdirplus() performance
* configuration:
--enable-threaded-kmod configure time option replaces -threaded run time
option to pvfs2-client
- segfault backtraces enabled by default
- HA script examples updated for use with Heartbeat 2.1.2 and newer
pvfs-2.7.0
==============
* ib: free cached registrations when out of space (openib only)
* HEC posix extensions now supported by PVFS.
* HEC posix extensions patches to the vfs are provided in the patches subdir.
* Support for immutible (read-only) files set by xattr and vfs caching of
read-only files through the vfs.
* ib: optimistic buffer registration to avoid segmented memory registration
* ib: redesign and streamline credit-based flow control scheme
* ib: cache explict BMI_memalloc registrations; huge latency improvement
* bmi: avoid gettimeofday() to determine poll vs block for multi-method
scenario
* ib: rely on bmi to make poll vs block decision
* ib: only check for new connections and async events during blocking periods
* state machine changes:
- cleanup codegen to use structs instead of unions/arrays
- provide a universal smcb (state machine control block) for
all state machine actions
- add support for concurrent state machines
* portals: new BMI implementation
* make/configure: support Cray XT3/XT4 compute node build environment
* Added a RootSquashExceptions config option
* support for Linux kernels 2.6.22 and 2.6.23
* New layout parameter to PVFS_[i]sys_create.
* Immutable file support, allowing client caching of files.
* Added a new two-dimensional distribution for incast scenarios.
* MX: new BMI implementation
* Fixes to:
- servers running over an extended period of time.
- kernel module for simul workloads
- readdir handling of tokens
- alt aio cleanup path
pvfs-2.6.3
==============
* fix to metadata coalescing that caused file corruption by writing to invalid
file handles. Occurs with large (>70) mpi parallel write workloads.
* fix for race condition on metadata completion
* fix for alt-aio with non-contig requests
* fix to kzalloc configure checks for older kernels
* fix to support older (0.9.6x) openssl versions
* fix 2.4 kernel crash in lookup
* fix cleanup of server internal state machines
* fix remove-object to decrement dirent count
* fix a number of error code problems in bmi and elsewhere
* fix to prevent failures on decoding response errors from server
* fix 2.4 mount bugs
* fixes to acl checking, group checking, and root squash
pvfs-2.6.2
==============
* fixes in trove dbpf to support latest Berkeley DB (version 4.5).
* fix kmod compile issues with --enable-mmap-racache
* fix for IO failures caused by invalid sizes used in file.c
* fixes for 2.4 kernels
pvfs-2.6.1
==============
* fix --enable-fast
* fix to build for client-core-threaded (make clean and make kmod before make)
* fix problems on ppc64 (long/int type mismatches, no _syscall, removed
warnings)
* fix overwrites past end of request
* allow kernel buffer size to be tuned from pvfs2-client
* fixups for linux kernel version 2.6.19
- check return type of kmem_cache_destroy
- combine readv/writev to aio_read/aio_write
pvfs-2.6.0
==============
* kernel module cleanups
* appropriate support for 64bit handles in kernel module
* added debugs for kernel to pvfs2-debug.h
* added offsetof macro
* added PVFS_U_SUID (root squash)
* pvfs-utils.h: PVFS2_translate -> PVFS_translate
* removed function: PVFS_mgmt_toggle_admin_mode
* changed all the PVFS_credentials params in system interfaces to const
* added PVFS_(i)sys_readdir_plus
* made PVFS_sysresp_readdir_s align properly for 64bit
* PVFS_sysresp_geteattr struct: added err_array field
* PVFS_sys_attr struct: fix alignment for dist_name and dist_params fields
* +1 of major version: 1.3 -> 2.3
* removed parent_*time from crdirent/rmdirent request
* added listattr request
* added (optional) params:
- TCPBindSpecific
- FlowBufferSizeBytes
- FlowBuffersPerFlow
- TroveAltAIOMode
- RootSquash
- ReadOnly
- AllSquash
- AnonUID
- AnonGID
- SecretKey
* fixed setgid bug
* root squash
* support for getdents[64]_plus_lite
* build w/ 2.6.18 and 2.6.19 kernels
* added pvfs2-lsplus
* configure arguments:
--with/without-openssl[=<path>]
* alt_lio_listio impl (threaded pread/pwrite)
* server SIGHUP handler waits for all ops completion [...]
* migration tool fixes
* fixes for simultaneous create/unlink hangs (reqsched and sync coalesce)
* add connection close to bmi for resetting the socket buffer size for initial
socket
* atime, mtime, and ctime fixes for VFS interface
* verify hash of config files
- added openssl options and checks
* updated faq entry for heartbeat
* config check for linux/mount.h
* config check that statfs callback has struct dentry arg
* LTP fixes to pass tests
- s/EOPNOTSUPP/EACCES/
- acl fixes
* ib:
- check for ib reregister event
- close connection on cancel
- fix duplicate free bug during message cancel
pvfs2-1.5.0
===============
- trove dbpf keyval changes: The dbpf keyval implementation has been
changed from using individual DB objects for each handle, to one
DB object for all keyval entries. This affects the storage format,
and requires the pvfs2-migrate-collection tool to be run on storage
spaces created previous to this release.
- sync coalescing: A new syncing feature has been added to the trove layer that
provides better performance with metadata in high-load cases. New options
were added to the server config: TroveSyncCoalesce, CoalescingHighWatermark,
CoalescingLowWatermark.
- added stranded bstream checking and handling. This is useful for correctly
reusing handles in failure cases.
- consolidate I/O paths through the VFS for read,write and readv,writev.
- added testsome, wait, and release functions to external interfaces
- fixes to karma and performance monitoring.
- better error handling on server and client and kernel module
- fixes to ownership flags on root directory. Allow chmod to work.
- fixes for small io and non-contiguous io.
- fixes to sys-io state machine to prevent deadlock on the server caused by
concurrent writes from the same client.
- replaced keyval strings with shorter versions to save space in the keyval
database.
- cleanups to the kernel module: cleanup cache subsystem structures and
functions. Better error checking on to make module reloading more robust.
- fixes for fsck and fs-dump.
- better xattr support for 2.4 kernels
- added support for berkeley db environments with the pvfs2 bdbs, and using
shared memory for db cache instead of mmapped file.
- better support for 64bit (esp. ppc64) platforms and 32/64 bit mixed env.
- better support for darwin (OS X)
- added configure options: --disable-aio-callbacks, No check for aio callback
support is done any longer. --enable-kernel-sendfile to configure for users
that want sendfile system call support, it is now disabled by default.
Epoll is now the default if its available, otherwise poll is used,
--enable-epoll and --disable-epoll now force without checking.
- Performance improvements for bmi_tcp: allow socket buffer size and tcp
window size to be changed dynamically. Use a pipe file descriptor
for poll to prevent stalls. Reorganize epoll to add and remove epoll
watches.
- pvfs2-genconfig now supports --iospec and --metaspec options. Also fixed
some hostname sorting and range spec bugs.
- pvfs2-client: added --logstamp. nonblocking statfs and mount support.
- handle allocation wasn't resulting in a uniform distribution. Now we
pick a server at random and then select the remaining handles in a
round-robin fashion
- pvfs2-ping does better per-server error reporting and keeps track of errors
better
- pvfs2-viewdist now fails gracefully on old systems without xattrs. Also
prints out handle number and filename for each datafile
pvfs2-1.4.1-pre1
===============
- ib: encode data structures to support heterogenous architectures
- deal with update_atime vanishing from kernel: test for touch_atime and use
that if available.
- fix configure-time kernel tests to work better with 2.6.16 kernels
- ib: separate config options for includes and libraries, optionally
- ib: support mellanox ibgd-1.8.2, compile quietly on x86_64
- ib: avoid more compiler warnings
- ib: list hcas rather than enumerating in code
- ib: fix mosal startup for ancient libraries
- ib: update internals documentation
- ib: fix CTS out-of-order problem
- ib: separate message headers to make math and debugging easier
- ib: avoid trying to actively connect as a server
- ib: move static variables into an allocated struct to avoid namespace
collisions
- ib: generalize memcache to be used by multiple consumers, not just VAPI
- ib: generalize bmi_ib to work with multiple verbs interfaces. Add support
for OpenIB.
pvfs2-1.4.0
- add a simple sendfile callback stub
- getattr through pvfs2-client-core now specifies exactly what it needs
- fix case where pvfs2-fs-dump would fall into infinite loop
- added new pvfs2-viewdist and pvfs2-perror utility
- many zero-fill cleanups
- SIO (small-io) optimization: piggyback small I/O requests in initial
communication between server and client (like MPI eager mode, but for I/O)
- fix a truncate bug
- pvfs2-genconfig can create config files for running several servers on one
machine. useful for testing
- better pvfs2-client and pvfs2-client-core logging
- better interaction between pvfs2-client and pvfs2-client-core
- improvements to doxygen generation
- rework the acache into generic tcache infrastructure upon which acache is
built
- timeouts for kernel operations can now be adjusted via /proc/sys/pvfs2
- cleanups for --enable-strict and building on 64-bit systems
- update kernel interface for 2.6.15
- assorted improvements to tests: more coverage, better reporting
- fix several immediate completion cases: others probably remain
- remove an extraneous call to make_bad_inode
- better logging when msgpairarray fails
- clean up the pvfs2-server shutdown process
- improvements to nightly test error checking
- fix immediate completion error with zero-byte reads and writes
- more robust directory renaming technique
pvfs2-1.3.2
===============
- new configure option for kernels which export internal symbols:
--disable-kernel-aio
- fix for getattr error handling
- fix for trove printing out a resource after (sometimes) invalidating it
pvfs2-1.3.1
===============
- ib: add memory registration caching
- ib: add support for cancel operation
- ib: fix minor protocol problems
- ib: cleanup build
- better pvfs2-client and pvfs2-client-core logging
- --enable-fast was broken
- fix compile error on FC3 and RHEL 2.6.9 kernels
- async i/o support (but needs libaio and libaio-devel at this time)
- "trusted ports"
- --enable-strict now compiles w/ a lot fewer warnings
- fixed timestamp problems for pvfs2 files
- listeattr system interface function
- fixed bugs in timestamps
- fixed bugs in zero-fill handling
- no longer ship generated .c files from .sm. instead, ship the sm parser
(allows for easier release patching)
- Phil Carns: server checks fs id on startup
- Phil Carns: --num-dfiles option to pvfs2-genconfig
- Phil Carns: fix setgid suport
- Phil Carns: proper symlink support (created as 777, no way to change them)
- Lots of portability fixes. PVFS2 now builds on Darwin (userspace, no
kernel)
- better tests for location of Berkely DB headers/libraries
- Trach-Minh Tran <[email protected]> reported bug in append mode. fixed
-
pvfs2-1.3.0
===============
- Murali Vilayannur contributed extened attribute support to the VFS interface
- Murali and Dean Hildebrand also worked on implementing readv and writev in
the VFS interface
- Phil Carns contributed logging improvements to pvfs2-client and pvfs2-server
- Phil also contributed improvements to the request processor which should
help speed up some concurrent workloads.
- Phil further contributed protocol versioning to PVFS2. Major version
changes are incompatible up or down. New clients can't talk to old servers,
but new servers can talk to old clients.
- clean up some warnings on 64 bit platforms
- Phil contributed a pvfs2-set-sync tool
- lots of configure tests for various kernel versions
- rework acache
- memory leak in flow descriptors
- bugfixes for noncontig requests
- improvements to the req scheduler: more operations can occur concurently now
- improved handling of "zero-fill" case: sparse files now treated correctly
- further improvements to nightly testsuite
pvfs2-1.2.0
===============
- make server better able to handle bogus file names (David Metheny)
- better casts for ppc64
- even better configure tests for various berkely db features
- documentation updates for Fedora 4 changes
- extended attribute support (not available through VFS yet)
- nightly build infrastructure now mostly in place
- --enable-strict now works again
- new utilities: pvfs2-touch, pvfs2-stat, pvfs2-ln
- add additional write() checks to kernel module
- hold st_nlink field at 1: keeping a true count is quite hard to do
correctly in a distributed environment
- new distribution: "varstrip"j
- better pvfs2 kernel module debugging interface (/proc/sys/pvfs2/debug)
- pvfs2 now supports setgid
- build: avoid some warnings from gcc4
- kernel: understand new backing_dev_info format in 2.6.12
- Added DefaultNumDFiles as filesystem config option.
- Added num_dfiles tabfile option. i
The number of dfiles is set by searching for the first given hint in this
order: application hints, tabfile, server config. The selected
distribution may modify the hint if neccesary.
- Phil Carns contributed general improvements and bug fixes for the dotconf
parser.
- Added DefaultDistribution section support for server config file. Section
is optional and accepts Name, Param, and Value (Param and Value may be
repeated multiple times in the section).
- added 'retry' and 'timeout' config file options
- will consult /etc/mtab as an additional source for pvfs2 tabfile entries
pvfs2-1.1.0
===============
- network protocol: more 64-bit alignment fixes
- build: hide karma details in its module.mk
- build: remove duplicate commands used for QUIET_COMPILE
- build: fix test configure library detection
- build: simplify karma and vis some more
- build: add tests for features of Berkeley DB 4.3.xx
- trove: fix bugs introduced by new features of DB 4.3.xx
- docs: added doxygen configuration file and doxygen-style docs
to many source files
- pvfs2-cp: can pass strip size as a parameter (thanks David Beilloin
- gossip: avoid double-timestamp in debug and error messages
- feature-test for kernel routines i_size_write, i_size_read, and parent_ino
- recover better from server failures
- kernel: export superblock magic number for romio autodetection
- 64-bit: change some protocol encodings to avoid unaligned accesses, fix
server crash
- documentation updates
- Phil Carns and David Beilloin reported various memory leaks and memory
misuse throughout the code
- Phil Carns and David Metheny contributed their improvment to the
permissions-checking routines. Secondary groups work much better now.
- configure-time options to select behavior needed on redhat-like environments
- can disable server support at configure time
- various tweaks to make cross compiling easier
- Phil Carns contributed a new config file option (LogStamp) to select
timestamp format
- By default we sync metadata (TroveSyncMeta yes) and not data (TroveSyncData
no). This configuration is a good compromise between reliability and
performance for most workloads.
- Joachim Worringen's noncontig benchmark turned up several bugs now addressed
in this release
- bugfix where pvfs2-chmod would cause all future operations to fail
- bugfix for 64 bit servers. pvfs2 on opteron now passes the bonnie benchmark
pvfs2-1.0.1
===========
- ib: add configure-time checks for mosal library variations
- ib: flush send queue work requests periodically
- ib: search receive queue for both eager and rts (D. Beilloin)
- improved support for some cases of file holes (that require zero fill)
- fixed a crash bug due to incorrect assertion regarding zero fill
- applied annotations and cleanups to the kernel module in response to
using the automated correctness checker called 'sparse'
- fixed a bug that did not properly allow storage space removals when
using ReiserFS as the underlying file system
- added more redhat checks for determining if we need to patch the
kernel module code to work properly with particular releases
- FAQ documentation update
pvfs2-1.0.0
===========
- disabled mmap readahead cache by default; allow configure option to
optionally enable it
- added support for handling several cases of file hole zero fills
(i.e. sparse files)
- configured acache timeout to be 5 seconds by default through the
vfs; sysint was already 5 seconds
- added karma program installation to make install target
- redhat 9 related changes (in order to work out of the box)
- used some 2.6.x kernel code on redhat 9 2.4.x kernels, if detected
- no longer mark pages as reserved on redhat 9 2.4.x kernels, as it
causes an oops on their kernel (i.e. not necessary)
- installed a wrapper script in place of the pvfs2-server that
exports the LD_ASSUME_KERNEL environment variable before running
the server(to avoid using the redhat NPTL library which is
incompatible)
- fixed make kmod{24}_install even if there are multiple UTS_RELEASE
definitions in the version.h file (as there are in redhat 9)
pvfs2-0.9.0
===========
- documentation updates to HA and FAQ documents
- better balancing (randomization) of data server selection when
creating new files
- clean up a few request-related 8-byte alignment issues for alpha
- fixed an AMD64 kernel oops due to a bad cast
- cleaned up error code types in the exposed sysint and mgmt methods
(using PVFS_error rather than int)
- added a setattr debugging mask and changed most detailed setattr
debugging to use it
- added a mkdir debugging mask and changed most detailed mkdir
debugging to use it
- added some inlined methods in PVFS_util (as they need to be used on
both the server and the client) for getting the current time in
PVFS_time format, encoding a PVFS_time as a version (finer grained
than a 'normal' PVFS_time since we can use the high 32 bits), and
decoding the version as a PVFS_time
- added a compatibility hack that _should_ allow no noticeable
breakage on existing storage space, but will eventually migrate to
the slightly new storage format over time
- modified client side sys-mkdir, sys-create, and sys-symlink to
encode the mtime as a version when passing it to the server (so it's
transparent from the server perspective)
- modified server side get-attr to decode the version read from disk
back into an mtime (so it's transparent from the client perspective)
- modified mkspace method to properly version newly created root and
lost+found directories
- modified the server side mkdir operation to return -PVFS_EINVAL if
the object attr type is not a directory object
- vfs readdir modifications to detect directory version changes on
listings; default behaviour is unchanged
- fixed bug in collection remove that didn't remove the collection
information from the collection db (which manifested as having a bug
where a collection that was once created and then removed could
never be created again due to a lookup succeeding before it should)
- added documentation on how to create multiple file systems within a
single pvfs2 storage space
- added documentation on return codes of the sysint methods
- pvfs2-mkspace improvements:
- now requires a collection ID, storage space and a handle range
- fixed types used to represent actual root handle and collection id
to be the proper types, rather than integers
- remove many defaults in favor of requiring cmdline options
- replace atoi calls with strtou{l}l to accomodate larger values if
specified
- cosmetic output improvements
- fixed mkspace method to make sure that we only use handle ranges
that are both non-null, AND are not an empty string
pvfs2-0.8.0
===========
- adjusted mask values for event logging to skip 0 mask
- moved handle counting in statfs to server side so that it is
done in parallel
- replaced uniq() subroutine in PAV to avoid recursion
- pvfs2-statfs cleanups and cast fixing
- pvfs2-shell-test: replaced a directory test
- add a clientcore_timing debug mask that only logs the operation
timings from the pvfs2-client-core
- added some pts debugging
- fixed bad assumption in getattr-acache that might have looked at the
wrong handle/fs_id during some operations (e.g. lookup)
- removed potential latency on system startup by trying to store temp
config files in /tmp/ first rather than the current dir
- make sure that our error routines strip any known class error bits
instead of deciding that they're unrecognized if set
- improved trove error handling
- improved pvfs2-server error handling
- fixed crash bug in our config parser that tried to strdup strings
that might be NULL
- pvfs2-types.h header file simplification and cleanups
- extended buffer size of filename for use with mkstemp as it started
failing on ppc with misc unexpected characters
- addition of a simple vfs test program that creates a file with a
hole in it and tries to read from that hole (this demonstrates a
currently known bug)
- addition of the same test program using only the system interface
- fixed some misc memory/resource leaks
- fixed test program ls.c and admin program pvfs2-ls.c to not issue an
extra call to readdir on every run by fixing a slight logic bug
- added a directory version that is passed back from the server to the
client on each successful readdir call and updated the client and
server response structures and encoder to accomodate this
- ncache related:
- increased ncache timeout from 5 seconds to 30 seconds by default,
but keep it disabled by default (it's still experimental)
- cleaned up the ncache and make it useable by the
lookup/remove/create/mkdir/etc calls (if enabled)
- added a flag to the client sysint lookup sm that records if the
final object resolved was a followed symlink or not (regardless of
if it was followed or not)
- extended the ncache interface (lookup/insert/remove) to have the
ability to have multiple entries with the same name with different
handles based on some other tag (e.g. resolving a symlink object,
rather than what it points to). this is also not in use at the
moment. for now, no symlink objects will be inserted into the
ncache.
- added more ncache debugging
- added a fastpath return from client sysint lookup method on ncache
hit
- updated and extended all ncache test programs to work with the
changed API and fixed broken tests/verified that they still work
- kernel related:
- fixed all warnings generated from compiling the pvfs2 kernel
module under 2.6.9 kernels
- removed write_inode method, as it was unused and probably won't be
used
- removed unused -v command option to pvfs2-ls
- added command option -V (and --verbose) which can detect version
differences in the directory being read and will report them if
this switch is enabled
- fixed misc compilation warnings on Opteron/AMD64 machines
- added directory version to readdir downcall (passed from
pvfs2-client-core)
- removed include of modversions.h directly from pvfs2-kernel.h
pvfs2-0.7.0
===========
- fsck: server handles bogus datafiles better
- fsck: pvfs2-fsck is a little smarter about what it tries to salvage
- ib: avoid unsignaled WQE pileup
- ib: avoid polling cancelled connections (first stab toward true
cancel)
- ib: spin-block in test functions for better performance
- ib: do not "open" HCA, just grab a handle
- ib: fix leaking connection structs (thanks to D. Beilloin)
- ib: use faster 1k mtu
- ib: cleanup warning texts
- configure: add option to disable AIO threaded callbacks
- configure: fix GM and IB to enable only when explicitly requested
- add timestamps to gossip debugging to file and stderr (not syslog)
- ib: initial cancel support, works for pvfs2-ls
- add multihome support: servers can listen on multiple addresses (and
BMI types), clients choose the first address from tabfile that works
- bmi: poll adaptively based on recent usage
- added trove-dbpf support for internally limiting the number of
simultaneous aio operations allowed in progress; default value is 16
- increased mmap-ra-small buf size from 4K to 16K to avoid many small
allocations (causes slightly larger mem footprint of client-core)
- adjusted client sysint setattr operation to work in a write-through
manner with the acache (when enabled)
- fixed client sysint setattr to invalidate the acache entry (if any)
- changed acache lookup to return the status (to avoid another acache
call that will always follow a successful lookup)
- internal acache improvements, such as removal of duplicated code
- updated acache-torture test program to match slightly new acache
interface
- make sure mmap's requesting MAP_SHARED fail (mmap2 returns -EINVAL,
userspace mmap returns standard MMAP_FAILED value)
- added compile time support for measuring roughly how long it takes
to process particular operations issued from the vfs
- modified PINT_sys_testsome to return immediately without calling
testcontext if any ops are completed and ready to be returned right
away
- made statfs return load information from servers
- gm: fixed performance bug, make sure test calls check completion
queue before sleeping
- gm: implement cancel functionality and verified for common cases
- fixed dbpf SYNC macro bugs that caused hangs on systems without aio
callback support
- updated pvfs2-config tool to use LIBS variable from configure
- removed -ldb from client side link stage
- added --serverlibs option to pvfs2-config to determine what
libraries have been linked against pvfs2-server
- updated makefile system for tests directory to use pvfs2-config and
deprecate use of .libs file
- added make install target for test harness programs
- introduced mutex locking in trove-handle-mgmt to avoid race
conditions that appear when statfs is called while trove operations
are in progress
- added utility functions for measuring elapsed wall, system, and user
time between specified points in code
- fix glaring alignment failure in PVFS_server_req
- fixed type of readahead_size in upcall for mmap-ra-cache that caused
the mmap-ra-cache to not work properly on PowerPC
- no longer look in the mmap-ra-cache for data on reads unless we're
sure we're doing an mmap or execution (as opposed to always)
- removed kernel module pvfs2_link call, as it was never used
- moved static copy_mntent method to PVFS_util_copy_mntent method
- added error handling to PVFS_util_copy_mntent
- renamed PVFS_sys_free_mntent to PVFS_util_free_mntent
- fixed successful return value of PVFS_util_copy_sys_attr
- fixed initialize-dyn test program that broken due to mntent changes
- changed get_data_sync_mode to explicitly return TROVE_SYNC if called
on an unregistered fs_id
pvfs2-0.6.5
===========
- broke several server state machines into multiple nested machines
- some PAV cleanups, including support for a larger number of meta
servers than io servers
- update k_size (number of keyvals) in dspace attr cache when the
number of keyvals on disk changes
- replaced all vfs 64 bit operation tags to be unsigned
- replaced pint-dev code to work with 64 bit unsigned tags
- moved all op initialization out of the constructor and into the
op_alloc routine
- fixed tag cancellation upcall/method to use a 64 bit tag, rather
than an unsigned long
- added a PVFS_util method to get the current system and return it as
a valid PVFS_time type
- added arguments to the crdirent/chdirent/rmdirent operations that
now can take optional parent atime/mtime/ctime fields
- added support on server *dirent operations that update the parent
time attributes (if specified) on successful completion of the
*dirent operation; null/zero time fields are not modified
- modified sys-create/sys-mkdir/sys-symlink/sys-rename/sys-remove to
work with the new operations properly; in general,
create/remove/rename operations updates the mtime and ctime of the
parent directory, which is now properly supported
- moved some common server side attribute handling code into a macro
to make it re-useable across several server state machines
- updated en{de}coding of modified operations
- remove sync calls on readonly trove operations
- added sanity check to kernel's device poll; makes sure the device is
opened by only one user before returning valid results
- make the device's request list waitqueue non-exclusive, since poll
waits as well
- some formatting changes on kernel error reporting
- added mmap-ra-cache support for partial cache fills on incomplete
requests; misc mmap-ra-cache enhancements
- cast setparam values to uint64_t rather than int64_t in admin utils
- remove trove sync call on server side root handle check
- modify server side remove state machine to check the k_size of the
dirdata object being removed if it's a directory to report early
back to the client that the directory is not empty (if it's not)
- remove the readdir checks in the client remove path now that the
server-side remove can tell us directly if a directory is not empty
- modified PVFS specific error routines to print the value of
unrecognized error codes if encountered
- fixed memory leak on check_fs_id setparam
- fixed 64bit compile warnings (AMD64/Opteron)
- split msgpair debugging into it's own class (no longer part of
'client')
- break out clientcore debugging into its own debugging mask
- fixed trove error codes
- give trove flush and resize operations the ability to create the
bstream they're working with if it doesn't exist instead of
returning an error
- fixed bug in (threaded) trove that did not properly reinitialize
condition variables after the first finalize
- improvements to the storage space and collection removal code
- extensive trove cleanups and cruft removal
- check for error codes when doing server side getattr and reading
metafile information; stop processing if an error is reached
- invalidate attr cache on write_at calls (never used)
- changed pvfs2-showcoll coll_id prints from hex to decimal
- kernel changes:
- enable kernel readahead hints on mmap/execution (i.e. sequential)
- initialize kernel module's request_list_waitq at declaration time
- put large print statement into a macro for convenience
- make all bufmap allocations GFP_KERNEL, regardless of highmem usage
- use add_waitqueue_exclusive for the io_completion_waitq entries
- clear random readahead hint on mmap
pvfs2-0.6.4
===========
- added a pvfs2-config tool to help when compiling against pvfs2
- new PAV option (COMPUTENODES_LAST) that controls whether compute
nodes are chosen first or last out of the total set of nodes
available
- fix locking bug introduced in 0.6.3 that shows up when trove is used
without aio callbacks
- explicitly name invalid msg tag value (0)
- modified pvfs2-ls to show the mtime (rather than atime) in long
listings
- updated set-info test program to update mtime (rather than atime)
- fixed possible flow mutex memory leak
- changed PVFS_time from an int64_t to a uint64_t
- fixed a pvfs2-fsck compile time warning
- fixed bug in sys-remove that erroneously tried to back out of the
remove even on error codes that are acceptable to return
- moved to fully 64 bit unsigned gossip masks (for some more possible
debugging levels)
- fixed bug in shared-state-machine getattr method that could allow
attributes to come out of the acache with incorrect types/fields
- fixed bug in crdirent msgpair setups for create/mkdir/symlink (used
incorrect handles in mappings)
- modified mgmt setparam call to take uint64_t parameters instead of
int64_t
- kernel changes:
- fixed bug that allowed a file removed on one client to still
appear on another with bad attributes
- fixed dentry revalidation to never return that a dentry is valid
if's negative
- fixed directory inode's mtime and ctime changes on updates
- fixed directory link counts for some changes
- simplify atime/mtime/ctime conversion to sys_attr (and vice versa)
to and from inode's time fields
pvfs2-0.6.3
===========
- added ability to negate log categories in
PVFS_debug_eventlog_to_mask
- added pvfs2-fsck
- updated pvfs2-quickstart to better discuss client configuration
- added optional epoll() based socket management component (enable
with configure option --enable-epoll on linux 2.6 systems)
- fixed configure bug that dropped default CFLAGS in some cases
- adjusted trove id generation to make it easier to log trove events
- fixed Makefile.in bug that caused pvfs2-server.c dependency
information to be lost
- rewrote both threaded and nonthreaded versions of all job_testXXX()
functions
- fixed condition variable usage to avoid signaling races that could
lead to unecessary wait times
- simplified code path
- removed superfluous calls to gettimeofday()
- adjustment of condition variable usage in trove-dbpf to avoid races
similar to those found in job_testXXX()
- applied vim formatting patch to use spaces instead of tabs
- fixed pvfs2-server permission check to allow users of the same group
to have access to other group members attributes (for listing)
- fixed incorrect/invalid error codes and error handling
- fixed pvfs2-server crash bug due to io state machine potentially
freeing a reqsched id that was never posted
- added mgmt methods PVFS_{i}mgmt_get_dirdata_handle for retrieving
the internal dirdata handle of a specified 'parent' object (if any)
- fixed pvfs2-server crash bug (race) in trove that could return an
object on queue addition that has already been serviced
- extended server side mkdir state machine to create the internal
dirdata dspace when creating the directory (rather than waiting for
crdirent to create it if it doesn't already exist)
- added mgmt methods PVFS_{i}mgmt_create_dirent mgmt for creating
directory entries at a low level
- fixed request scheduler's acceptance of the mgmt-remove-* operations
while in admin mode (since these can be used in admin mode)
- extended mkspace (and thus pvfs2-mkspace program) to initalize a
lost+found directory after the root directory is made
- kernel changes:
- fixed credential usage bug that resulted in (seemingly random)
permission problems when using the file system as multiple users
- fixed a bug that appeared as data corruption due to mapped memory
pages in use being swapped out under heavy memory load under 2.4.x
kernels (and containing incorrect data on future accesses)
- remove slab poison flag from debug allocators, as some kernels
complain about how it was used
- do not use kmap/kunmap calls if not configured for HIGHMEM, as
some configurations cannot resolve these symbols
pvfs2-0.6.2
===========
- updated documentation for dist-simple-stripe.c and modified
the basic distribution to use a single data file object.
- fixed error reporting in pvfs2-server that didn't understand pvfs2
specific error codes
- extended request scheduler to allow operations to pass through
without being scheduled (and allow the noop operations to work like
this)
- disabled the (unused) device interface on server builds, reducing
server run-time threads by one
- bmi optimizations: avoid polling in test calls if operations are
complete, or no operations are complete but there are unexpected
operations ready to be serviced
- extended the pvfs2-mkspace tool to be able to work with data and
meta handle ranges separately (also extended the internal interfaces
as necessary for this functionality)
- fixed bug in mkspace that could create the root directory dirent
object in a non-meta handle range
- added client side attribute type checking that avoids contacting
servers if we've determined that the operation we're about to
perform cannot be performed on an object of the type we were told to
work on. e.g., a readdir operation will not be issued to the server
if the getattr reports that the object we want to readdir on is not
a directory. most sysint operations now have this checking in place
- fixed crash bug on the server crdirent operation if passed a
non-directory object type
- fixed race condition triggered when pvfs2-server is getting many
more incoming operations than it has posted unexpected msgs for
- increase the default number of posted unexpected msgs by the server
- properly re-integrate and simplify the usage of the mmap-ra-cache,
which wasn't working properly after the pvfs2-client-core re-write
- fixed crash bug on the server due to an unexpected error code coming
out of pthread_cond_timedwait inside of job test calls
- modify configure script to append date and time information to non
release builds (for more fine grained version information if needed)
- fixed acache usage in sysint create/mkdir/symlink operations
- open-cache remove now syncs (if necessary) after the remove, rather
than just before
- removed duplicate 'open_cache' debugging keyword definition
- allowed client side logging (via PVFS2_DEBUGMASK/PVFS2_DEBUGFILE env
variables) to append to the specified logfile, rather than
truncating it if it already exists
- fixed bug in device test method that didn't properly adjust the
outcount on failure; also added the number of bytes read on a failed
(short) read
- started adding debugging code for printing out server side response
structures (only getattr is currently implemented)
- kernel changes: added some debugging and simplified the
handle_io_error macro. also added translation of non-errno pvfs2
error codes (should it get one) to avoid returning entirely
incorrect error codes in some cases; avoid allowing -PVFS_ECANCEL to
be passed down to the kernel code from the pvfs2-client-core. use
i_size_read to update file position on opens for append. remove old
code that manually updated the inode's file size on writes
- replaced debugging mask of cancelled i/o operations from io to
cancel
- simplified pvfs2-statfs by retrieving all server statistics in one
call, rather than separate ones for meta and data servers; also
fixed reporting of server duties (previously all servers were
reported as serving both meta and i/o data)
- added a start banner to pvfs2-client-core if client debugging is
enabled. this allows easier visual inspection of restarts in logs
- fixed bug when copying credentials to first make sure that they're
valid in all sysint/mgmt calls
- added both server and client side (mgmt) operations to remove
arbitrary pvfs2 objects and directory entries without prejudice
- added a 'pvfs2-remove-object' tool that can remove pvfs2 objects and
directory entries (use is not generally encouraged)
- fixed pvfs2-fs-dump crash bugs when it fails to find some objects it
was expecting to see
- adjusted the time that pav allows for copying binaries out to remote
machines
- fixed bug bmi_tcp potential send deadlock under heavy loads
- added a mgmt method that allows parameter sets on single servers
(rather than the previous one that allowed only all servers)
- extended pvfs2-set-debugmask program to have the ability to set the
debug mask on a single server (rather than all) via cmdline options
- replaced TroveSyncMode configuration option with separate
TroveSyncMeta and TroveSyncData options. the default values are yes
for both
- updated pvfs2-genconfig to reflect TroveSync* config option changes
- implemented understanding of the data sync mode option in the flow
interface via the setinfo method
- modified pvfs2-server to pass data sync mode option to the flow
implementation via setinfo on a per fs basis
pvfs2-0.6.1
===========
- misc. updates to msgpairarray and associated tools to allow for
server side use
- reorganization of server request parameters so that more (but not
all yet) are stored in a centralized table
- removed some deprecated test programs
- new pint-util.[ch] to contain utility functions shared between
client and server
- some refactoring of server state machines (mainly crdirent) to allow
for code reuse in other state machines
- no longer need to fix up generated html by hand
- fixed a bug that allowed an open through the vfs without the O_CREAT
and O_EXCL flags to return -EEXIST (should be success in that case)
- added a file_open.c test program that tests opens in various modes
- error code cleanups (added PVFS_EACCES mapping to EACCES; moved
PVFS_EDETAIL to be a non-errno error code)
- fixed pvfs2-ls to properly convert reported file times in user's
configured system localtime, rather than in UTC
- fixed the kernel module information so that modinfo doesn't report
many duplicate entries
- fixed server pidfile usage (-p cmdline option)
- fixed msgpair retries to properly delay between retry attempts
- added trove hooks to be able to peek at handles that will be
allocated later
- cleaned up the remove state machine and removed an unnecessary
allocation/copy
- fixed existing acache usage in the sysint calls to be more uniform;
removed some overhead in the sysint
- fixed kernel device close to be aware if mounts are still active
- added more tests to pvfs2-shell-test that test deeply nested
subdirectories
- added a method to determine the min handle recycle time across all
configured servers' file systems
- changed code formatting rules to use spaces rather than tabs in vim
- fixed bug that didn't reload the cached config information on file
system removal (i.e. unmounts)
- added a cmdline argument to pvfs2-client to specify the acache
timeout to use at run-time (default is 0 milliseconds, which is
effectively disabled). this timeout is upper bounded by the min
handle recycle time across all servers, and it can change
dynamically as new mounts come and go
- fixed a bug that allowed servers to create internal storage objects
outside of the meta handle ranges in some circumstances
- replace single element msgpair/array setup code where possible with
a macro
pvfs2-0.6.0
===========
- removed pvfs2-import and pvfs2-export in favor of pvfs2-cp
- added compile time option for disabling thread-safety in the client
library (enabled by default; --disable-thread-safety to disable)
- improved configure summary information emitted at configure time
- added missing non-blocking sysint declarations to sysint header
- made sysint test and testsome() calls more useable
- merged dev unexp polling/handling with system interface
- added PINT_sys_dev_unexp call that allows posting unexpected device
messages so that they can be returned from the sysint testsome
method in addition to completed sysint operations
- added a id_gen_fast_unregister macro that is a no op, to make the
api more consistent with the id_gen_safe_* calls
- modified device driver to work properly in non-blocking mode from
userspace by implementing the character device poll method and
modified the pint-dev device interface to make sure it can handle
the pvfs2 device in a non-blocking manner; added a no immediate
completion option to the device interface; made test more efficient
by not polling if no idle time is specified; check for poll errors;
use proper buffer sizes for reads across the device
- added a method to free the mapped memory region on pvfs2-client-core
shutdown (valgrind complained)
- modified all job uses of the id-generator to use the safe, rather
than fast, methods (useful for several reasons including safe
cancellation of already completed operations)
- modified the job_dev_unexp method to have (and honor) the no
immediate completion flag if passed (used in the pvfs2-client-core)
- re-wrote pvfs2-client-core to use sysint non-blocking operations
- improved human readable size reporting
- allow human readable size reporting to optionally use si units
- added --si option to pvfs2-ls (similar to ls's --si option)
- added -H option to pvfs2-statfs (similar to du's -H option)
- added a method able to cancel I/O operations in progress
- removed kernel ability to kill device file on cancelled I/O
- added the ability of sys-io.sm to handle run-time cancellation while
still transitioning properly
- added support in the pvfs2-client for ignoring an upcall retry for
an op already in progress (as opposed to servicing it multiple