Control: tags 787996 pending Control: tags 1005413 pending Control: tags 1005414 pending
I have uploaded an NMU fixing FTBFS and reproducible builds issues:
diff -Nru cloop-3.14.1.3/advancecomp-1.15/file.cc
cloop-3.14.1.3+nmu1/advancecomp-1.15/file.cc
--- cloop-3.14.1.3/advancecomp-1.15/file.cc 2020-04-19 01:18:13.000000000
-0700
+++ cloop-3.14.1.3+nmu1/advancecomp-1.15/file.cc 2022-12-22
12:41:49.000000000 -0800
@@ -98,7 +98,7 @@
/**
* Check if a file exists.
*/
-bool file_exists(const string& path) throw (error)
+bool file_exists(const string& path)
{
struct stat s;
if (stat(path.c_str(), &s) != 0) {
@@ -114,7 +114,7 @@
/**
* Write a whole file.
*/
-void file_write(const string& path, const char* data, unsigned size) throw
(error)
+void file_write(const string& path, const char* data, unsigned size)
{
FILE* f = fopen(path.c_str(), "wb");
if (!f)
@@ -134,7 +134,7 @@
/**
* Read a whole file.
*/
-void file_read(const string& path, char* data, unsigned size) throw (error)
+void file_read(const string& path, char* data, unsigned size)
{
file_read(path, data, 0, size);
}
@@ -142,7 +142,7 @@
/**
* Read a whole file.
*/
-void file_read(const string& path, char* data, unsigned offset, unsigned size)
throw (error)
+void file_read(const string& path, char* data, unsigned offset, unsigned size)
{
FILE* f = fopen(path.c_str(), "rb");
if (!f)
@@ -166,7 +166,7 @@
/**
* Get the time of a file.
*/
-time_t file_time(const string& path) throw (error)
+time_t file_time(const string& path)
{
struct stat s;
if (stat(path.c_str(), &s)!=0)
@@ -178,7 +178,7 @@
/**
* Set the time of a file.
*/
-void file_utime(const string& path, time_t tod) throw (error)
+void file_utime(const string& path, time_t tod)
{
struct utimbuf u;
@@ -192,7 +192,7 @@
/**
* Get the size of a file.
*/
-unsigned file_size(const string& path) throw (error)
+unsigned file_size(const string& path)
{
struct stat s;
if (stat(path.c_str(), &s)!=0)
@@ -204,7 +204,7 @@
/**
* Get the crc of a file.
*/
-crc_t file_crc(const string& path) throw (error)
+crc_t file_crc(const string& path)
{
unsigned size = file_size(path);
@@ -227,7 +227,7 @@
/**
* Copy a file.
*/
-void file_copy(const string& path1, const string& path2) throw (error)
+void file_copy(const string& path1, const string& path2)
{
unsigned size;
@@ -249,7 +249,7 @@
/**
* Move a file.
*/
-void file_move(const string& path1, const string& path2) throw (error)
+void file_move(const string& path1, const string& path2)
{
if (rename(path1.c_str(), path2.c_str())!=0
&& errno==EXDEV) {
@@ -271,7 +271,7 @@
/**
* Remove a file.
*/
-void file_remove(const string& path1) throw (error)
+void file_remove(const string& path1)
{
if (remove(path1.c_str())!=0) {
throw error() << "Failed remove of " << path1;
@@ -281,7 +281,7 @@
/**
* Rename a file.
*/
-void file_rename(const string& path1, const string& path2) throw (error)
+void file_rename(const string& path1, const string& path2)
{
if (rename(path1.c_str(), path2.c_str())!=0) {
throw error() << "Failed rename of " << path1 << " to " <<
path2;
@@ -400,7 +400,7 @@
/**
* Make a drectory tree.
*/
-void file_mktree(const std::string& path) throw (error)
+void file_mktree(const std::string& path)
{
string dir = file_dir(path);
string name = file_name(path);
diff -Nru cloop-3.14.1.3/advancecomp-1.15/file.h
cloop-3.14.1.3+nmu1/advancecomp-1.15/file.h
--- cloop-3.14.1.3/advancecomp-1.15/file.h 2020-04-19 01:18:13.000000000
-0700
+++ cloop-3.14.1.3+nmu1/advancecomp-1.15/file.h 2022-12-22 12:41:49.000000000
-0800
@@ -67,18 +67,18 @@
crc_t crc_compute(const char* data, unsigned len);
crc_t crc_compute(crc_t pred, const char* data, unsigned len);
-bool file_exists(const std::string& file) throw (error);
-void file_write(const std::string& path, const char* data, unsigned size)
throw (error);
-void file_read(const std::string& path, char* data, unsigned size) throw
(error);
-void file_read(const std::string& path, char* data, unsigned offset, unsigned
size) throw (error);
-time_t file_time(const std::string& path) throw (error);
-void file_utime(const std::string& path, time_t tod) throw (error);
-unsigned file_size(const std::string& path) throw (error);
-crc_t file_crc(const std::string& path) throw (error);
-void file_copy(const std::string& path1, const std::string& path2) throw
(error);
-void file_move(const std::string& path1, const std::string& path2) throw
(error);
-void file_remove(const std::string& path1) throw (error);
-void file_mktree(const std::string& path1) throw (error);
+bool file_exists(const std::string& file);
+void file_write(const std::string& path, const char* data, unsigned size);
+void file_read(const std::string& path, char* data, unsigned size);
+void file_read(const std::string& path, char* data, unsigned offset, unsigned
size);
+time_t file_time(const std::string& path);
+void file_utime(const std::string& path, time_t tod);
+unsigned file_size(const std::string& path);
+crc_t file_crc(const std::string& path);
+void file_copy(const std::string& path1, const std::string& path2);
+void file_move(const std::string& path1, const std::string& path2);
+void file_remove(const std::string& path1);
+void file_mktree(const std::string& path1);
std::string file_randomize(const std::string& path, int n) throw ();
std::string file_name(const std::string& file) throw ();
diff -Nru cloop-3.14.1.3/cloop.c cloop-3.14.1.3+nmu1/cloop.c
--- cloop-3.14.1.3/cloop.c 2020-04-19 01:18:13.000000000 -0700
+++ cloop-3.14.1.3+nmu1/cloop.c 2022-12-22 12:41:49.000000000 -0800
@@ -309,15 +309,8 @@
while (buf_done < buf_len)
{
size_t size = buf_len - buf_done, size_read;
- mm_segment_t old_fs;
- /* kernel_read() only supports 32 bit offsets, so we use vfs_read()
instead. */
- /* int size_read = kernel_read(f, pos, buf + buf_done, size); */
-
// mutex_lock(&clo->clo_rq_mutex);
- old_fs = get_fs();
- set_fs(KERNEL_DS);
- size_read = vfs_read(f, (void __user *)(buf + buf_done), size, &pos);
- set_fs(old_fs);
+ size_read = kernel_read(f, buf + buf_done, size, &pos);
// mutex_unlock(&clo->clo_rq_mutex);
if(size_read <= 0)
@@ -528,7 +521,7 @@
}
clo->backing_file = file;
clo->backing_inode= inode ;
- clo->underlying_total_size = (isblkdev) ? inode->i_bdev->bd_inode->i_size :
inode->i_size;
+ clo->underlying_total_size = (isblkdev) ? file->f_mapping->host->i_size :
inode->i_size;
if(clo->underlying_total_size < header_size)
{
printk(KERN_ERR "%s: %llu bytes (must be >= %u bytes)\n",
@@ -538,7 +531,7 @@
}
if(isblkdev)
{
- struct request_queue *q = bdev_get_queue(inode->i_bdev);
+ struct request_queue *q = bdev_get_queue(I_BDEV(file->f_mapping->host));
blk_queue_max_hw_sectors(clo->clo_queue, queue_max_hw_sectors(q)); /*
Renamed in 2.6.34 */
blk_queue_max_segments(clo->clo_queue, queue_max_segments(q)); /* Renamed
in 2.6.34 */
/* blk_queue_max_hw_segments(clo->clo_queue, queue_max_hw_segments(q)); */
/* Removed in 2.6.34 */
@@ -547,7 +540,7 @@
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0)
blk_queue_merge_bvec(clo->clo_queue, q->merge_bvec_fn);
#endif
- clo->underlying_blksize = block_size(inode->i_bdev);
+ clo->underlying_blksize = block_size(I_BDEV(file->f_mapping->host));
}
else
clo->underlying_blksize = PAGE_SIZE;
@@ -816,7 +809,7 @@
file = fget(arg); /* get filp struct from ioctl arg fd */
if(!file) return -EBADF;
error=cloop_set_file(cloop_num,file);
- set_device_ro(bdev, 1);
+ set_disk_ro(clo->clo_disk, true);
if(error) fput(file);
return error;
}
@@ -1125,6 +1118,7 @@
static int cloop_alloc(int cloop_num)
{
struct cloop_device *clo = (struct cloop_device *) cloop_malloc(sizeof(struct
cloop_device));
+ int error = -ENOMEM;
if(clo == NULL) goto error_out;
cloop_dev[cloop_num] = clo;
memset(clo, 0, sizeof(struct cloop_device));
@@ -1138,39 +1132,58 @@
clo->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_BLOCKING;
clo->tag_set.driver_data = clo;
if(blk_mq_alloc_tag_set(&clo->tag_set)) goto error_out_free_clo;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
clo->clo_queue = blk_mq_init_queue(&clo->tag_set);
if(IS_ERR(clo->clo_queue))
{
printk(KERN_ERR "%s: Unable to alloc queue[%d]\n", cloop_name, cloop_num);
goto error_out_free_tags;
}
- clo->clo_queue->queuedata = clo;
- blk_queue_max_hw_sectors(clo->clo_queue, BLK_DEF_MAX_SECTORS);
clo->clo_disk = alloc_disk(1);
+#else
+ clo->clo_disk = blk_mq_alloc_disk(&clo->tag_set, NULL);
+#endif
if(!clo->clo_disk)
{
printk(KERN_ERR "%s: Unable to alloc disk[%d]\n", cloop_name, cloop_num);
goto error_out_free_queue;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,15,0)
+ clo->clo_disk->queue = clo->clo_queue;
+#else
+ clo->clo_disk->minors = 1;
+ clo->clo_queue = clo->clo_disk->queue;
+#endif
+ clo->clo_queue->queuedata = clo;
+ blk_queue_max_hw_sectors(clo->clo_queue, BLK_DEF_MAX_SECTORS);
spin_lock_init(&clo->queue_lock);
mutex_init(&clo->clo_ctl_mutex);
mutex_init(&clo->clo_rq_mutex);
clo->clo_disk->major = cloop_major;
clo->clo_disk->first_minor = cloop_num;
clo->clo_disk->fops = &clo_fops;
- clo->clo_disk->queue = clo->clo_queue;
clo->clo_disk->private_data = clo;
sprintf(clo->clo_disk->disk_name, "%s%d", cloop_name, cloop_num);
- add_disk(clo->clo_disk);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
+ error = add_disk(clo->clo_disk);
+ if (error)
+ goto error_out_free_disk;
+#endif
return 0;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
+error_out_free_disk:
+ blk_cleanup_disk(clo->clo_disk);
+#endif
error_out_free_queue:
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,15,0)
blk_cleanup_queue(clo->clo_queue);
error_out_free_tags:
+#endif
blk_mq_free_tag_set(&clo->tag_set);
error_out_free_clo:
cloop_free(clo, sizeof(struct cloop_device));
error_out:
- return -ENOMEM;
+ return error;
}
static void cloop_dealloc(int cloop_num)
@@ -1178,9 +1191,13 @@
struct cloop_device *clo = cloop_dev[cloop_num];
if(clo == NULL) return;
del_gendisk(clo->clo_disk);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
+ blk_cleanup_disk(clo->clo_disk);
+#else
blk_cleanup_queue(clo->clo_queue);
- blk_mq_free_tag_set(&clo->tag_set);
put_disk(clo->clo_disk);
+#endif
+ blk_mq_free_tag_set(&clo->tag_set);
cloop_free(clo, sizeof(struct cloop_device));
cloop_dev[cloop_num] = NULL;
}
@@ -1269,8 +1286,3 @@
/* The cloop init and exit function registration (especially needed for Kernel
2.6) */
module_init(cloop_init);
module_exit(cloop_exit);
-
-#include <linux/vermagic.h>
-#include <linux/compiler.h>
-
-MODULE_INFO(vermagic, VERMAGIC_STRING);
diff -Nru cloop-3.14.1.3/debian/changelog cloop-3.14.1.3+nmu1/debian/changelog
--- cloop-3.14.1.3/debian/changelog 2020-04-19 01:18:13.000000000 -0700
+++ cloop-3.14.1.3+nmu1/debian/changelog 2022-12-22 12:41:49.000000000
-0800
@@ -1,3 +1,30 @@
+cloop (3.14.1.3+nmu1) unstable; urgency=medium
+
+ * Non-maintainer upload
+
+ [ Ben Hutchings ]
+ * Fix FTBFS with gcc 11 (Closes: #1005413):
+ - Remove exception specifications
+ * Fix module build for recent kernel versions (Closes: #1005414):
+ - Stop generating module vermagic in cloop.c. This has always been handled
+ by modpost and doing it here now results in build failure.
+ - Avoid using inode::i_bdev, which was removed in Linux 5.11.
+ - Use set_disk_ro() instead of set_device_ro(). The latter was not meant to
+ be used by device drivers and was removed in Linux 5.11.
+ - Use blk_{mq_alloc,cleanup}_disk() instead of separate queue and disk
+ allocation and cleanup on Linux 5.15+, since alloc_disk() was removed.
+ - Handle potential failure of add_disk() on Linux 5.15+.
+ - Use kernel_read() instead of vfs_read() and set_fs(). set_fs() is no
+ longer defined on some architectures, and kernel_read() has had large
+ file support since Linux 2.6.31.
+
+ [ Vagrant Cascadian ]
+ * debian/rules: Build tarball reproducibly, using consistent time, uid,
+ gid and sort order. Thanks to Dhole for the initial patch.
+ (Closes: #787996)
+
+ -- Vagrant Cascadian <[email protected]> Thu, 22 Dec 2022
12:41:49 -0800
+
cloop (3.14.1.3) unstable; urgency=medium
* Upgrading to more recent debhelper and latest policy standards
diff -Nru cloop-3.14.1.3/debian/rules cloop-3.14.1.3+nmu1/debian/rules
--- cloop-3.14.1.3/debian/rules 2020-04-19 01:18:13.000000000 -0700
+++ cloop-3.14.1.3+nmu1/debian/rules 2022-12-22 12:41:49.000000000 -0800
@@ -28,4 +28,4 @@
cp Makefile *.c *.h README ChangeLog $(XDIR)
cd debian && install rules.m-a ../$(XDIR)/debian/rules && cp -r po
compat control* copyright *_KVERS_* README.Debian changelog ../$(XDIR)/debian
dh_fixperms -i -Xrules
- cd debian/cloop-src/usr/src && XZ_OPT=-9 tar --xz -c -f cloop.tar.xz
modules && rm -rf modules
+ cd debian/cloop-src/usr/src && XZ_OPT=-9 tar --xz --sort=name
--mtime=@$(SOURCE_DATE_EPOCH) --owner=0 --group=0 --numeric-owner -c -f
cloop.tar.xz modules && rm -rf modules
live well,
vagrant
signature.asc
Description: PGP signature

