Date: Sat, 18 Jun 2011 12:52:48 +0300 From: Gleb Kurtsou <gleb.kurtsou@gmail.com> To: soc-status@freebsd.org Subject: ino64 status report 4 Message-ID: <20110618095248.GA18585@tops>
next in thread | raw e-mail | index | archive | help
--cNdxnHkX5QqsyA0e Content-Type: text/plain; charset=utf-8 Content-Disposition: inline ino64 project aims at extending ino_t to 64 bits and nlink_t to 32 bits integers providing compatibility shims for both kernel and libc. I've finished merging and testing my original patch this week. I've used pjdfstest, dbench and blogbench benchmark suits for testing, rebuilt most common ports, etc. Using shlib-compat to compare ABI compatibility of all shared libraries the following were found to break ABI: libarchive.so.5 libmagic.so.4 libprocstat.so.1 libufs.so.5 libutil.so.9 Considering forthcoming 9.0 release I think it would be interesting to check ABI compatibility between 8-STABLE and 9-CURRENT. Please contact me if you are interested in running such tests. Example diff between original and ino64 versions of libarchive.so.5 produced by shlib-compat attached. --cNdxnHkX5QqsyA0e Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="libarchive.so.5.diff.txt" --- so-diff/libarchive.so.5.orig.c 2011-06-17 21:41:06.971647373 +0300 +++ so-diff/libarchive.so.5.new.c 2011-06-17 21:41:07.004194526 +0300 @@ -1,5 +1,5 @@ -// Definitions mismatch: __archive_read_ahead@Base so-orig/libarchive.so.5 +// Definitions mismatch: __archive_read_ahead@Base so-ino64/libarchive.so.5 struct archive { uint32_t magic; @@ -33,7 +33,7 @@ struct archive archive; struct archive_entry *entry; uint32_t skip_file_dev; - uint32_t skip_file_ino; + uint64_t skip_file_ino; const char *read_data_block; int64_t read_data_offset; int64_t read_data_output_offset; @@ -102,7 +102,7 @@ struct extract { }; const void *__archive_read_ahead(struct archive_read *a, uint64_t min, int64_t *avail); -// Definitions mismatch: __archive_read_consume@Base so-orig/libarchive.so.5 +// Definitions mismatch: __archive_read_consume@Base so-ino64/libarchive.so.5 struct archive { uint32_t magic; @@ -136,7 +136,7 @@ struct archive archive; struct archive_entry *entry; uint32_t skip_file_dev; - uint32_t skip_file_ino; + uint64_t skip_file_ino; const char *read_data_block; int64_t read_data_offset; int64_t read_data_output_offset; @@ -205,7 +205,7 @@ struct extract { }; int64_t __archive_read_consume(struct archive_read *a, uint64_t request); -// Definitions mismatch: __archive_read_filter_ahead@Base so-orig/libarchive.so.5 +// Definitions mismatch: __archive_read_filter_ahead@Base so-ino64/libarchive.so.5 struct archive_read_filter { struct archive_read_filter_bidder *bidder; @@ -231,7 +231,7 @@ }; const void *__archive_read_filter_ahead(struct archive_read_filter *filter, uint64_t min, int64_t *avail); -// Definitions mismatch: __archive_read_filter_consume@Base so-orig/libarchive.so.5 +// Definitions mismatch: __archive_read_filter_consume@Base so-ino64/libarchive.so.5 struct archive_read_filter { struct archive_read_filter_bidder *bidder; @@ -257,7 +257,7 @@ }; int64_t __archive_read_filter_consume(struct archive_read_filter *filter, uint64_t request); -// Definitions mismatch: __archive_read_filter_skip@Base so-orig/libarchive.so.5 +// Definitions mismatch: __archive_read_filter_skip@Base so-ino64/libarchive.so.5 struct archive_read_filter { struct archive_read_filter_bidder *bidder; @@ -283,7 +283,7 @@ }; int64_t __archive_read_filter_skip(struct archive_read_filter *filter, int64_t request); -// Definitions mismatch: __archive_read_get_bidder@Base so-orig/libarchive.so.5 +// Definitions mismatch: __archive_read_get_bidder@Base so-ino64/libarchive.so.5 struct archive { uint32_t magic; @@ -317,7 +317,7 @@ struct archive archive; struct archive_entry *entry; uint32_t skip_file_dev; - uint32_t skip_file_ino; + uint64_t skip_file_ino; const char *read_data_block; int64_t read_data_offset; int64_t read_data_output_offset; @@ -386,7 +386,7 @@ struct extract { }; struct archive_read_filter_bidder *__archive_read_get_bidder(struct archive_read *a); -// Definitions mismatch: __archive_read_register_format@Base so-orig/libarchive.so.5 +// Definitions mismatch: __archive_read_register_format@Base so-ino64/libarchive.so.5 struct archive { uint32_t magic; @@ -420,7 +420,7 @@ struct archive archive; struct archive_entry *entry; uint32_t skip_file_dev; - uint32_t skip_file_ino; + uint64_t skip_file_ino; const char *read_data_block; int64_t read_data_offset; int64_t read_data_output_offset; @@ -489,7 +489,7 @@ struct extract { }; int32_t __archive_read_register_format(struct archive_read *a, void *format_data, const char *name, F(, int32_t, (struct archive_read * ))* bid, F(, int32_t, (struct archive_read * , const char * , const char * ))* options, F(, int32_t, (struct archive_read * , struct archive_entry * ))* read_header, F(, int32_t, (struct archive_read * , const void ** , uint64_t * , int64_t * ))* read_data, F(, int32_t, (struct archive_read * ))* read_data_skip, F(, int32_t, (struct archive_read * ))* cleanup); -// Definitions mismatch: __archive_read_skip@Base so-orig/libarchive.so.5 +// Definitions mismatch: __archive_read_skip@Base so-ino64/libarchive.so.5 struct archive { uint32_t magic; @@ -523,7 +523,7 @@ struct archive archive; struct archive_entry *entry; uint32_t skip_file_dev; - uint32_t skip_file_ino; + uint64_t skip_file_ino; const char *read_data_block; int64_t read_data_offset; int64_t read_data_output_offset; @@ -592,7 +592,7 @@ struct extract { }; int64_t __archive_read_skip(struct archive_read *a, int64_t request); -// Definitions mismatch: __archive_read_skip_lenient@Base so-orig/libarchive.so.5 +// Definitions mismatch: __archive_read_skip_lenient@Base so-ino64/libarchive.so.5 struct archive { uint32_t magic; @@ -626,7 +626,7 @@ struct archive archive; struct archive_entry *entry; uint32_t skip_file_dev; - uint32_t skip_file_ino; + uint64_t skip_file_ino; const char *read_data_block; int64_t read_data_offset; int64_t read_data_output_offset; @@ -695,14 +695,15 @@ struct extract { }; int64_t __archive_read_skip_lenient(struct archive_read *a, int64_t request); -// Definitions mismatch: archive_entry_copy_stat@Base so-orig/libarchive.so.5 +// Definitions mismatch: archive_entry_copy_stat@Base so-ino64/libarchive.so.5 struct archive_entry { }; struct stat { + uint64_t st_ino; + uint32_t st_nlink; uint32_t st_dev; - uint32_t st_ino; uint16_t st_mode; - uint16_t st_nlink; + int16_t st_padding0; uint32_t st_uid; uint32_t st_gid; uint32_t st_rdev; @@ -724,7 +725,7 @@ }; void archive_entry_copy_stat(struct archive_entry *entry, const struct stat *st); -// Definitions mismatch: archive_entry_ino@Base so-orig/libarchive.so.5 +// Definitions mismatch: archive_entry_ino@Base so-ino64/libarchive.so.5 struct ae_acl { struct ae_acl *next; @@ -802,9 +803,9 @@ uint64_t length; uint64_t buffer_length; }; -uint32_t archive_entry_ino(struct archive_entry *entry); +uint64_t archive_entry_ino(struct archive_entry *entry); -// Definitions mismatch: archive_entry_stat@Base so-orig/libarchive.so.5 +// Definitions mismatch: archive_entry_stat@Base so-ino64/libarchive.so.5 struct ae_acl { struct ae_acl *next; @@ -884,10 +885,11 @@ }; struct stat { + uint64_t st_ino; + uint32_t st_nlink; uint32_t st_dev; - uint32_t st_ino; uint16_t st_mode; - uint16_t st_nlink; + int16_t st_padding0; uint32_t st_uid; uint32_t st_gid; uint32_t st_rdev; @@ -909,14 +911,15 @@ }; const struct stat *archive_entry_stat(struct archive_entry *entry); -// Definitions mismatch: archive_read_disk_entry_from_file@Base so-orig/libarchive.so.5 +// Definitions mismatch: archive_read_disk_entry_from_file@Base so-ino64/libarchive.so.5 struct archive_entry { }; struct stat { + uint64_t st_ino; + uint32_t st_nlink; uint32_t st_dev; - uint32_t st_ino; uint16_t st_mode; - uint16_t st_nlink; + int16_t st_padding0; uint32_t st_uid; uint32_t st_gid; uint32_t st_rdev; @@ -938,10 +941,10 @@ }; int32_t archive_read_disk_entry_from_file(struct archive *_a, struct archive_entry *entry, int32_t fd, const struct stat *st); -// Definitions mismatch: archive_read_extract_set_skip_file@Base so-orig/libarchive.so.5 -void archive_read_extract_set_skip_file(struct archive *_a, uint32_t d, uint32_t i); +// Definitions mismatch: archive_read_extract_set_skip_file@Base so-ino64/libarchive.so.5 +void archive_read_extract_set_skip_file(struct archive *_a, uint32_t d, uint64_t i); -// Definitions mismatch: archive_read_support_compression_gzip@Base so-orig/libarchive.so.5 +// Definitions mismatch: archive_read_support_compression_gzip@Base so-ino64/libarchive.so.5 struct archive { uint32_t magic; @@ -976,7 +979,7 @@ }; int32_t archive_read_support_compression_gzip(struct archive *_a); -// Definitions mismatch: archive_write_disk_set_skip_file@Base so-orig/libarchive.so.5 +// Definitions mismatch: archive_write_disk_set_skip_file@Base so-ino64/libarchive.so.5 struct archive { uint32_t magic; @@ -1009,9 +1012,9 @@ F(, int64_t, (struct archive * , const void * , uint64_t )) *archive_write_data; F(, int64_t, (struct archive * , const void * , uint64_t , int64_t )) *archive_write_data_block; }; -int32_t archive_write_disk_set_skip_file(struct archive *_a, uint32_t d, uint32_t i); +int32_t archive_write_disk_set_skip_file(struct archive *_a, uint32_t d, uint64_t i); -// Definitions mismatch: archive_write_set_skip_file@Base so-orig/libarchive.so.5 +// Definitions mismatch: archive_write_set_skip_file@Base so-ino64/libarchive.so.5 struct archive { uint32_t magic; @@ -1044,4 +1047,4 @@ F(, int64_t, (struct archive * , const void * , uint64_t )) *archive_write_data; F(, int64_t, (struct archive * , const void * , uint64_t , int64_t )) *archive_write_data_block; }; -int32_t archive_write_set_skip_file(struct archive *_a, uint32_t d, uint32_t i); +int32_t archive_write_set_skip_file(struct archive *_a, uint32_t d, uint64_t i); --cNdxnHkX5QqsyA0e--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110618095248.GA18585>