Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libstorage-ng for openSUSE:Factory checked in at 2026-01-13 21:23:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libstorage-ng (Old) and /work/SRC/openSUSE:Factory/.libstorage-ng.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libstorage-ng" Tue Jan 13 21:23:27 2026 rev:322 rq:1326809 version:4.5.284 Changes: -------- --- /work/SRC/openSUSE:Factory/libstorage-ng/libstorage-ng.changes 2026-01-06 17:41:47.142754045 +0100 +++ /work/SRC/openSUSE:Factory/.libstorage-ng.new.1928/libstorage-ng.changes 2026-01-13 21:23:54.793565926 +0100 @@ -1,0 +2,7 @@ +Mon Jan 12 15:56:33 UTC 2026 - [email protected] + +- merge gh#openSUSE/libstorage-ng#1047 +- added support for squashfs and erofs +- 4.5.284 + +-------------------------------------------------------------------- Old: ---- libstorage-ng-4.5.283.tar.xz New: ---- libstorage-ng-4.5.284.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libstorage-ng.spec ++++++ --- /var/tmp/diff_new_pack.hqKlGK/_old 2026-01-13 21:23:55.825608522 +0100 +++ /var/tmp/diff_new_pack.hqKlGK/_new 2026-01-13 21:23:55.829608687 +0100 @@ -18,7 +18,7 @@ %define libname %{name}1 Name: libstorage-ng -Version: 4.5.283 +Version: 4.5.284 Release: 0 Summary: Library for storage management License: GPL-2.0-only ++++++ libstorage-ng-4.5.283.tar.xz -> libstorage-ng-4.5.284.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/VERSION new/libstorage-ng-4.5.284/VERSION --- old/libstorage-ng-4.5.283/VERSION 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/VERSION 2026-01-12 16:56:33.000000000 +0100 @@ -1 +1 @@ -4.5.283 +4.5.284 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/bindings/storage-catches.i new/libstorage-ng-4.5.284/bindings/storage-catches.i --- old/libstorage-ng-4.5.283/bindings/storage-catches.i 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/bindings/storage-catches.i 2026-01-12 16:56:33.000000000 +0100 @@ -61,6 +61,7 @@ %catches(storage::NullPointerException) storage::is_disk(const Device *device); %catches(storage::NullPointerException) storage::is_dm_raid(const Device *device); %catches(storage::NullPointerException) storage::is_encryption(const Device *device); +%catches(storage::NullPointerException) storage::is_erofs(const Device *device); %catches(storage::NullPointerException) storage::is_exfat(const Device *device); %catches(storage::NullPointerException) storage::is_ext(const Device *device); %catches(storage::NullPointerException) storage::is_ext2(const Device *device); @@ -96,6 +97,7 @@ %catches(storage::NullPointerException) storage::is_plain_encryption(const Device *device); %catches(storage::NullPointerException) storage::is_reiserfs(const Device *device); %catches(storage::NullPointerException) storage::is_snapshot(const Holder *holder); +%catches(storage::NullPointerException) storage::is_squashfs(const Device *device); %catches(storage::NullPointerException) storage::is_stray_blk_device(const Device *device); %catches(storage::NullPointerException) storage::is_subdevice(const Holder *holder); %catches(storage::NullPointerException) storage::is_swap(const Device *device); @@ -140,6 +142,8 @@ %catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_dm_raid(const Device *device); %catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_encryption(Device *device); %catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_encryption(const Device *device); +%catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_erofs(Device *device); +%catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_erofs(const Device *device); %catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_exfat(Device *device); %catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_exfat(const Device *device); %catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_ext(Device *device); @@ -208,6 +212,8 @@ %catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_reiserfs(const Device *device); %catches(storage::HolderHasWrongType, storage::NullPointerException) storage::to_snapshot(Holder *holder); %catches(storage::HolderHasWrongType, storage::NullPointerException) storage::to_snapshot(const Holder *holder); +%catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_squashfs(Device *device); +%catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_squashfs(const Device *device); %catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_stray_blk_device(Device *device); %catches(storage::DeviceHasWrongType, storage::NullPointerException) storage::to_stray_blk_device(const Device *device); %catches(storage::HolderHasWrongType, storage::NullPointerException) storage::to_subdevice(Holder *holder); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/bindings/storage-downcast.i new/libstorage-ng-4.5.284/bindings/storage-downcast.i --- old/libstorage-ng-4.5.283/bindings/storage-downcast.i 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/bindings/storage-downcast.i 2026-01-12 16:56:33.000000000 +0100 @@ -40,6 +40,7 @@ storage::Bcachefs, storage::Bitlocker, storage::Btrfs, + storage::Erofs, storage::Exfat, storage::Ext2, storage::Ext3, @@ -51,6 +52,7 @@ storage::Nilfs2, storage::Ntfs, storage::Reiserfs, + storage::Squashfs, storage::Swap, storage::Udf, storage::Vfat, @@ -94,6 +96,7 @@ const storage::Bcachefs, const storage::Bitlocker, const storage::Btrfs, + const storage::Erofs, const storage::Exfat, const storage::Ext2, const storage::Ext3, @@ -105,6 +108,7 @@ const storage::Nilfs2, const storage::Ntfs, const storage::Reiserfs, + const storage::Squashfs, const storage::Swap, const storage::Udf, const storage::Vfat, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/bindings/storage.i new/libstorage-ng-4.5.284/bindings/storage.i --- old/libstorage-ng-4.5.283/bindings/storage.i 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/bindings/storage.i 2026-01-12 16:56:33.000000000 +0100 @@ -93,6 +93,8 @@ #include "storage/Filesystems/Swap.h" #include "storage/Filesystems/Iso9660.h" #include "storage/Filesystems/Udf.h" +#include "storage/Filesystems/Squashfs.h" +#include "storage/Filesystems/Erofs.h" #include "storage/Filesystems/Bitlocker.h" #include "storage/Filesystems/Nfs.h" #include "storage/Filesystems/Tmpfs.h" @@ -199,6 +201,8 @@ %include "../../storage/Filesystems/Swap.h" %include "../../storage/Filesystems/Iso9660.h" %include "../../storage/Filesystems/Udf.h" +%include "../../storage/Filesystems/Squashfs.h" +%include "../../storage/Filesystems/Erofs.h" %include "../../storage/Filesystems/Bitlocker.h" %include "../../storage/Filesystems/Nfs.h" %include "../../storage/Filesystems/Tmpfs.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/doc/autodocs/doxygen.conf new/libstorage-ng-4.5.284/doc/autodocs/doxygen.conf --- old/libstorage-ng-4.5.283/doc/autodocs/doxygen.conf 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/doc/autodocs/doxygen.conf 2026-01-12 16:56:33.000000000 +0100 @@ -26,10 +26,10 @@ INPUT += ../../storage/Filesystems FILE_PATTERNS += Bcachefs.h Bitlocker.h BlkFilesystem.h Btrfs.h \ - BtrfsSubvolume.h BtrfsQgroup.h BtrfsSubvolume.h Exfat.h Ext2.h Ext3.h \ - Ext4.h Ext.h F2fs.h Filesystem.h Iso9660.h Jfs.h Mountable.h \ - MountPoint.h Nfs.h Nilfs2.h Ntfs.h Reiserfs.h Swap.h Tmpfs.h Udf.h \ - Vfat.h Xfs.h + BtrfsSubvolume.h BtrfsQgroup.h BtrfsSubvolume.h Erofs.h Exfat.h Ext2.h \ + Ext3.h Ext4.h Ext.h F2fs.h Filesystem.h Iso9660.h Jfs.h Mountable.h \ + MountPoint.h Nfs.h Nilfs2.h Ntfs.h Squashfs.h Reiserfs.h Swap.h Tmpfs.h \ + Udf.h Vfat.h Xfs.h INPUT += ../../storage/Holders FILE_PATTERNS += BtrfsQgroupRelation.h FilesystemUser.h Holder.h MdSubdevice.h \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/doc/status.md new/libstorage-ng-4.5.284/doc/status.md --- old/libstorage-ng-4.5.283/doc/status.md 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/doc/status.md 2026-01-12 16:56:33.000000000 +0100 @@ -154,9 +154,11 @@ * For btrfs, ext2, ext3, ext4, ReiserFS, NTFS, VFat, ExFat, XFS, JFS, swap, F2FS (excluding multiple devices), NILFS2 (excluding - checkpoints), ISO9660, UDF, NFS, bcachefs and tmpfs the most important + checkpoints), UDF, NFS, bcachefs and tmpfs the most important operations (probing, creating, deleting, resizing, mounting and unmounting). +* For ISO9660, Squashfs and EROFS less operations (probing, deleting, + mounting and unmounting). * Handling of /etc/fstab. * Handling different mount-by options. * btrfs subvolumes, btrfs multiple-device, quota and qgroup support. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/BlkFilesystemImpl.cc new/libstorage-ng-4.5.284/storage/Filesystems/BlkFilesystemImpl.cc --- old/libstorage-ng-4.5.283/storage/Filesystems/BlkFilesystemImpl.cc 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/BlkFilesystemImpl.cc 2026-01-12 16:56:33.000000000 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) [2014-2015] Novell, Inc. - * Copyright (c) [2016-2025] SUSE LLC + * Copyright (c) [2016-2026] SUSE LLC * * All Rights Reserved. * @@ -197,7 +197,8 @@ fs_type != FsType::SWAP && fs_type != FsType::NTFS && fs_type != FsType::VFAT && fs_type != FsType::ISO9660 && fs_type != FsType::UDF && fs_type != FsType::JFS && fs_type != FsType::F2FS && fs_type != FsType::NILFS2 && fs_type != FsType::EXFAT && - fs_type != FsType::BITLOCKER && fs_type != FsType::BCACHEFS) + fs_type != FsType::BITLOCKER && fs_type != FsType::BCACHEFS && fs_type != FsType::SQUASHFS && + fs_type != FsType::EROFS1) { y2err("detected unsupported filesystem " << toString(fs_type) << " on " << blk_device->get_name()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/Erofs.cc new/libstorage-ng-4.5.284/storage/Filesystems/Erofs.cc --- old/libstorage-ng-4.5.283/storage/Filesystems/Erofs.cc 1970-01-01 01:00:00.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/Erofs.cc 2026-01-12 16:56:33.000000000 +0100 @@ -0,0 +1,111 @@ +/* + * Copyright (c) [2017-2026] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact Novell, Inc. + * + * To contact Novell about this file by physical or electronic mail, you may + * find current contact information at www.novell.com. + */ + + +#include "storage/Filesystems/ErofsImpl.h" +#include "storage/Devicegraph.h" + + +namespace storage +{ + + using namespace std; + + + Erofs* + Erofs::create(Devicegraph* devicegraph) + { + shared_ptr<Erofs> erofs = make_shared<Erofs>(make_unique<Erofs::Impl>()); + Device::Impl::create(devicegraph, erofs); + return erofs.get(); + } + + + Erofs* + Erofs::load(Devicegraph* devicegraph, const xmlNode* node) + { + shared_ptr<Erofs> erofs = make_shared<Erofs>(make_unique<Erofs::Impl>(node)); + Device::Impl::load(devicegraph, erofs); + return erofs.get(); + } + + + Erofs::Erofs(Impl* impl) + : BlkFilesystem(impl) + { + } + + + Erofs::Erofs(unique_ptr<Device::Impl>&& impl) + : BlkFilesystem(std::move(impl)) + { + } + + + Erofs* + Erofs::clone() const + { + return new Erofs(get_impl().clone()); + } + + + std::unique_ptr<Device> + Erofs::clone_v2() const + { + return make_unique<Erofs>(get_impl().clone()); + } + + + Erofs::Impl& + Erofs::get_impl() + { + return dynamic_cast<Impl&>(Device::get_impl()); + } + + + const Erofs::Impl& + Erofs::get_impl() const + { + return dynamic_cast<const Impl&>(Device::get_impl()); + } + + + bool + is_erofs(const Device* device) + { + return is_device_of_type<const Erofs>(device); + } + + + Erofs* + to_erofs(Device* device) + { + return to_device_of_type<Erofs>(device); + } + + + const Erofs* + to_erofs(const Device* device) + { + return to_device_of_type<const Erofs>(device); + } + +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/Erofs.h new/libstorage-ng-4.5.284/storage/Filesystems/Erofs.h --- old/libstorage-ng-4.5.283/storage/Filesystems/Erofs.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/Erofs.h 2026-01-12 16:56:33.000000000 +0100 @@ -0,0 +1,91 @@ +/* + * Copyright (c) [2017-2026] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact Novell, Inc. + * + * To contact Novell about this file by physical or electronic mail, you may + * find current contact information at www.novell.com. + */ + + +#ifndef STORAGE_EROFS_H +#define STORAGE_EROFS_H + + +#include "storage/Filesystems/BlkFilesystem.h" + + +namespace storage +{ + + /** + * Class for EROFS filesystem. The library cannot create an EROFS + * filesystem on disk. + * + * @see https://en.wikipedia.org/wiki/EROFS + */ + class Erofs : public BlkFilesystem + { + public: + + /** + * Create a device of type EROFS. Usually this function is not called + * directly. It is called during probing. + * + * @see Device::create(Devicegraph*) + */ + static Erofs* create(Devicegraph* devicegraph); + + static Erofs* load(Devicegraph* devicegraph, const xmlNode* node); + + public: + + class Impl; + + Impl& get_impl(); + const Impl& get_impl() const; + + virtual Erofs* clone() const override; + virtual std::unique_ptr<Device> clone_v2() const override; + + Erofs(Impl* impl); + ST_NO_SWIG Erofs(std::unique_ptr<Device::Impl>&& impl); + + }; + + + /** + * Checks whether device points to an Erofs. + * + * @throw NullPointerException + */ + bool is_erofs(const Device* device); + + /** + * Converts pointer to Device to pointer to Erofs. + * + * @return Pointer to Erofs. + * @throw DeviceHasWrongType, NullPointerException + */ + Erofs* to_erofs(Device* device); + + /** + * @copydoc to_erofs(Device*) + */ + const Erofs* to_erofs(const Device* device); + +} + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/ErofsImpl.cc new/libstorage-ng-4.5.284/storage/Filesystems/ErofsImpl.cc --- old/libstorage-ng-4.5.283/storage/Filesystems/ErofsImpl.cc 1970-01-01 01:00:00.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/ErofsImpl.cc 2026-01-12 16:56:33.000000000 +0100 @@ -0,0 +1,49 @@ +/* + * Copyright (c) [2017-2026] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact Novell, Inc. + * + * To contact Novell about this file by physical or electronic mail, you may + * find current contact information at www.novell.com. + */ + + +#include "storage/Filesystems/ErofsImpl.h" +#include "storage/FreeInfo.h" + + +namespace storage +{ + + using namespace std; + + + const char* DeviceTraits<Erofs>::classname = "Erofs"; + + + Erofs::Impl::Impl(const xmlNode* node) + : BlkFilesystem::Impl(node) + { + } + + + string + Erofs::Impl::get_pretty_classname() const + { + // TRANSLATORS: name of object + return _("Erofs").translated; + } + +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/ErofsImpl.h new/libstorage-ng-4.5.284/storage/Filesystems/ErofsImpl.h --- old/libstorage-ng-4.5.283/storage/Filesystems/ErofsImpl.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/ErofsImpl.h 2026-01-12 16:56:33.000000000 +0100 @@ -0,0 +1,83 @@ +/* + * Copyright (c) [2017-2026] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact Novell, Inc. + * + * To contact Novell about this file by physical or electronic mail, you may + * find current contact information at www.novell.com. + */ + + +#ifndef STORAGE_EROFS_IMPL_H +#define STORAGE_EROFS_IMPL_H + + +#include "storage/Filesystems/Erofs.h" +#include "storage/Filesystems/BlkFilesystemImpl.h" +#include "storage/Utils/HumanString.h" + + +namespace storage +{ + + using namespace std; + + + template <> struct DeviceTraits<Erofs> { static const char* classname; }; + + + class Erofs::Impl : public BlkFilesystem::Impl + { + + public: + + virtual unsigned long long min_size() const override { return 0 * B; } + virtual unsigned long long max_size() const override { return 1 * EiB; } + + virtual bool supports_mounted_shrink() const override { return false; } + virtual bool supports_mounted_grow() const override { return false; } + + virtual bool supports_unmounted_shrink() const override { return false; } + virtual bool supports_unmounted_grow() const override { return false; } + + virtual bool supports_label() const override { return true; } + virtual unsigned int max_labelsize() const override { return 15; } + + virtual bool supports_uuid() const override { return true; } + + public: + + Impl() + : BlkFilesystem::Impl() {} + + Impl(const xmlNode* node); + + virtual FsType get_type() const override { return FsType::EROFS1; } + + virtual const char* get_classname() const override { return DeviceTraits<Erofs>::classname; } + + virtual string get_pretty_classname() const override; + + virtual string get_displayname() const override { return "erofs"; } + + virtual unique_ptr<Device::Impl> clone() const override { return make_unique<Impl>(*this); } + + virtual uf_t used_features_pure() const override { return 0; } + + }; + +} + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/Makefile.am new/libstorage-ng-4.5.284/storage/Filesystems/Makefile.am --- old/libstorage-ng-4.5.283/storage/Filesystems/Makefile.am 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/Makefile.am 2026-01-12 16:56:33.000000000 +0100 @@ -45,7 +45,11 @@ Iso9660Impl.h Iso9660Impl.cc \ Udf.h Udf.cc \ UdfImpl.h UdfImpl.cc \ + Squashfs.h Squashfs.cc \ + SquashfsImpl.h SquashfsImpl.cc \ Swap.h Swap.cc \ + Erofs.h Erofs.cc \ + ErofsImpl.h ErofsImpl.cc \ SwapImpl.h SwapImpl.cc \ Nfs.h Nfs.cc \ NfsImpl.h NfsImpl.cc \ @@ -81,6 +85,8 @@ Exfat.h \ Iso9660.h \ Udf.h \ + Squashfs.h \ + Erofs.h \ Swap.h \ Nfs.h \ Tmpfs.h \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/Mountable.h new/libstorage-ng-4.5.284/storage/Filesystems/Mountable.h --- old/libstorage-ng-4.5.283/storage/Filesystems/Mountable.h 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/Mountable.h 2026-01-12 16:56:33.000000000 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) [2014-2015] Novell, Inc. - * Copyright (c) [2016-2022] SUSE LLC + * Copyright (c) [2016-2026] SUSE LLC * * All Rights Reserved. * @@ -41,7 +41,8 @@ enum class FsType { UNKNOWN, AUTO, REISERFS, EXT2, EXT3, EXT4, BTRFS, VFAT, XFS, JFS, HFS, NTFS, SWAP, HFSPLUS, NFS, NFS4, TMPFS, ISO9660, UDF, NILFS2, MINIX, NTFS3G, F2FS, - EXFAT, BITLOCKER, VBOXSF, BCACHEFS + EXFAT, BITLOCKER, VBOXSF, BCACHEFS, SQUASHFS, EROFS1 /* EROFS is a POSIX + define */ }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/MountableImpl.cc new/libstorage-ng-4.5.284/storage/Filesystems/MountableImpl.cc --- old/libstorage-ng-4.5.283/storage/Filesystems/MountableImpl.cc 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/MountableImpl.cc 2026-01-12 16:56:33.000000000 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) [2014-2015] Novell, Inc. - * Copyright (c) [2016-2023] SUSE LLC + * Copyright (c) [2016-2026] SUSE LLC * * All Rights Reserved. * @@ -60,7 +60,7 @@ const vector<string> EnumTraits<FsType>::names({ "unknown", "auto", "reiserfs", "ext2", "ext3", "ext4", "btrfs", "vfat", "xfs", "jfs", "hfs", "ntfs", "swap", "hfsplus", "nfs", "nfs4", "tmpfs", "iso9660", "udf", "nilfs2", "minix", - "ntfs-3g", "f2fs", "exfat", "BitLocker", "vboxsf", "bcachefs" + "ntfs-3g", "f2fs", "exfat", "BitLocker", "vboxsf", "bcachefs", "squashfs", "erofs" }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/Squashfs.cc new/libstorage-ng-4.5.284/storage/Filesystems/Squashfs.cc --- old/libstorage-ng-4.5.283/storage/Filesystems/Squashfs.cc 1970-01-01 01:00:00.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/Squashfs.cc 2026-01-12 16:56:33.000000000 +0100 @@ -0,0 +1,111 @@ +/* + * Copyright (c) [2017-2026] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact Novell, Inc. + * + * To contact Novell about this file by physical or electronic mail, you may + * find current contact information at www.novell.com. + */ + + +#include "storage/Filesystems/SquashfsImpl.h" +#include "storage/Devicegraph.h" + + +namespace storage +{ + + using namespace std; + + + Squashfs* + Squashfs::create(Devicegraph* devicegraph) + { + shared_ptr<Squashfs> squashfs = make_shared<Squashfs>(make_unique<Squashfs::Impl>()); + Device::Impl::create(devicegraph, squashfs); + return squashfs.get(); + } + + + Squashfs* + Squashfs::load(Devicegraph* devicegraph, const xmlNode* node) + { + shared_ptr<Squashfs> squashfs = make_shared<Squashfs>(make_unique<Squashfs::Impl>(node)); + Device::Impl::load(devicegraph, squashfs); + return squashfs.get(); + } + + + Squashfs::Squashfs(Impl* impl) + : BlkFilesystem(impl) + { + } + + + Squashfs::Squashfs(unique_ptr<Device::Impl>&& impl) + : BlkFilesystem(std::move(impl)) + { + } + + + Squashfs* + Squashfs::clone() const + { + return new Squashfs(get_impl().clone()); + } + + + std::unique_ptr<Device> + Squashfs::clone_v2() const + { + return make_unique<Squashfs>(get_impl().clone()); + } + + + Squashfs::Impl& + Squashfs::get_impl() + { + return dynamic_cast<Impl&>(Device::get_impl()); + } + + + const Squashfs::Impl& + Squashfs::get_impl() const + { + return dynamic_cast<const Impl&>(Device::get_impl()); + } + + + bool + is_squashfs(const Device* device) + { + return is_device_of_type<const Squashfs>(device); + } + + + Squashfs* + to_squashfs(Device* device) + { + return to_device_of_type<Squashfs>(device); + } + + + const Squashfs* + to_squashfs(const Device* device) + { + return to_device_of_type<const Squashfs>(device); + } + +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/Squashfs.h new/libstorage-ng-4.5.284/storage/Filesystems/Squashfs.h --- old/libstorage-ng-4.5.283/storage/Filesystems/Squashfs.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/Squashfs.h 2026-01-12 16:56:33.000000000 +0100 @@ -0,0 +1,91 @@ +/* + * Copyright (c) [2017-2026] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact Novell, Inc. + * + * To contact Novell about this file by physical or electronic mail, you may + * find current contact information at www.novell.com. + */ + + +#ifndef STORAGE_SQUASHFS_H +#define STORAGE_SQUASHFS_H + + +#include "storage/Filesystems/BlkFilesystem.h" + + +namespace storage +{ + + /** + * Class for Squashfs filesystem. The library cannot create a Squashfs + * filesystem on disk. + * + * @see https://en.wikipedia.org/wiki/SquashFS + */ + class Squashfs : public BlkFilesystem + { + public: + + /** + * Create a device of type Squashfs. Usually this function is not called + * directly. It is called during probing. + * + * @see Device::create(Devicegraph*) + */ + static Squashfs* create(Devicegraph* devicegraph); + + static Squashfs* load(Devicegraph* devicegraph, const xmlNode* node); + + public: + + class Impl; + + Impl& get_impl(); + const Impl& get_impl() const; + + virtual Squashfs* clone() const override; + virtual std::unique_ptr<Device> clone_v2() const override; + + Squashfs(Impl* impl); + ST_NO_SWIG Squashfs(std::unique_ptr<Device::Impl>&& impl); + + }; + + + /** + * Checks whether device points to a Squashfs. + * + * @throw NullPointerException + */ + bool is_squashfs(const Device* device); + + /** + * Converts pointer to Device to pointer to Squashfs. + * + * @return Pointer to Squashfs. + * @throw DeviceHasWrongType, NullPointerException + */ + Squashfs* to_squashfs(Device* device); + + /** + * @copydoc to_squashfs(Device*) + */ + const Squashfs* to_squashfs(const Device* device); + +} + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/SquashfsImpl.cc new/libstorage-ng-4.5.284/storage/Filesystems/SquashfsImpl.cc --- old/libstorage-ng-4.5.283/storage/Filesystems/SquashfsImpl.cc 1970-01-01 01:00:00.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/SquashfsImpl.cc 2026-01-12 16:56:33.000000000 +0100 @@ -0,0 +1,49 @@ +/* + * Copyright (c) [2017-2026] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact Novell, Inc. + * + * To contact Novell about this file by physical or electronic mail, you may + * find current contact information at www.novell.com. + */ + + +#include "storage/Filesystems/SquashfsImpl.h" +#include "storage/FreeInfo.h" + + +namespace storage +{ + + using namespace std; + + + const char* DeviceTraits<Squashfs>::classname = "Squashfs"; + + + Squashfs::Impl::Impl(const xmlNode* node) + : BlkFilesystem::Impl(node) + { + } + + + string + Squashfs::Impl::get_pretty_classname() const + { + // TRANSLATORS: name of object + return _("Squashfs").translated; + } + +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Filesystems/SquashfsImpl.h new/libstorage-ng-4.5.284/storage/Filesystems/SquashfsImpl.h --- old/libstorage-ng-4.5.283/storage/Filesystems/SquashfsImpl.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Filesystems/SquashfsImpl.h 2026-01-12 16:56:33.000000000 +0100 @@ -0,0 +1,83 @@ +/* + * Copyright (c) [2017-2026] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact Novell, Inc. + * + * To contact Novell about this file by physical or electronic mail, you may + * find current contact information at www.novell.com. + */ + + +#ifndef STORAGE_SQUASHFS_IMPL_H +#define STORAGE_SQUASHFS_IMPL_H + + +#include "storage/Filesystems/Squashfs.h" +#include "storage/Filesystems/BlkFilesystemImpl.h" +#include "storage/Utils/HumanString.h" + + +namespace storage +{ + + using namespace std; + + + template <> struct DeviceTraits<Squashfs> { static const char* classname; }; + + + class Squashfs::Impl : public BlkFilesystem::Impl + { + + public: + + virtual unsigned long long min_size() const override { return 0 * B; } + virtual unsigned long long max_size() const override { return 8 * EiB; } + + virtual bool supports_mounted_shrink() const override { return false; } + virtual bool supports_mounted_grow() const override { return false; } + + virtual bool supports_unmounted_shrink() const override { return false; } + virtual bool supports_unmounted_grow() const override { return false; } + + virtual bool supports_label() const override { return false; } + virtual unsigned int max_labelsize() const override { return 0; } + + virtual bool supports_uuid() const override { return false; } + + public: + + Impl() + : BlkFilesystem::Impl() {} + + Impl(const xmlNode* node); + + virtual FsType get_type() const override { return FsType::SQUASHFS; } + + virtual const char* get_classname() const override { return DeviceTraits<Squashfs>::classname; } + + virtual string get_pretty_classname() const override; + + virtual string get_displayname() const override { return "squashfs"; } + + virtual unique_ptr<Device::Impl> clone() const override { return make_unique<Impl>(*this); } + + virtual uf_t used_features_pure() const override { return 0; } + + }; + +} + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/storage/Registries.cc new/libstorage-ng-4.5.284/storage/Registries.cc --- old/libstorage-ng-4.5.283/storage/Registries.cc 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/storage/Registries.cc 2026-01-12 16:56:33.000000000 +0100 @@ -1,6 +1,6 @@ /* * Copyright (c) [2014-2015] Novell, Inc. - * Copyright (c) [2016-2024] SUSE LLC + * Copyright (c) [2016-2026] SUSE LLC * * All Rights Reserved. * @@ -64,6 +64,8 @@ #include "storage/Filesystems/Swap.h" #include "storage/Filesystems/Iso9660.h" #include "storage/Filesystems/Udf.h" +#include "storage/Filesystems/Squashfs.h" +#include "storage/Filesystems/Erofs.h" #include "storage/Filesystems/Bitlocker.h" #include "storage/Filesystems/Nfs.h" #include "storage/Filesystems/Tmpfs.h" @@ -94,6 +96,7 @@ { "Disk", &Disk::load }, { "DmRaid", &DmRaid::load }, { "Encryption", &Encryption::load }, + { "Erofs", &Erofs::load }, { "Exfat", &Exfat::load }, { "Ext2", &Ext2::load }, { "Ext3", &Ext3::load }, @@ -119,6 +122,7 @@ { "Partition", &Partition::load }, { "PlainEncryption", &PlainEncryption::load }, { "Reiserfs", &Reiserfs::load }, + { "Squashfs", &Squashfs::load }, { "StrayBlkDevice", &StrayBlkDevice::load }, { "Swap", &Swap::load }, { "Tmpfs", &Tmpfs::load }, @@ -143,6 +147,7 @@ { FsType::BCACHEFS, &Bcachefs::create }, { FsType::BITLOCKER, &Bitlocker::create }, { FsType::BTRFS, &Btrfs::create }, + { FsType::EROFS1, &Erofs::create }, { FsType::EXFAT, &Exfat::create }, { FsType::EXT2, &Ext2::create }, { FsType::EXT3, &Ext3::create }, @@ -153,6 +158,7 @@ { FsType::NILFS2, &Nilfs2::create }, { FsType::NTFS, &Ntfs::create }, { FsType::REISERFS, &Reiserfs::create }, + { FsType::SQUASHFS, &Squashfs::create }, { FsType::SWAP, &Swap::create }, { FsType::UDF, &Udf::create }, { FsType::VFAT, &Vfat::create }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/testsuite/probe/integrity-mockup.xml new/libstorage-ng-4.5.284/testsuite/probe/integrity-mockup.xml --- old/libstorage-ng-4.5.283/testsuite/probe/integrity-mockup.xml 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/testsuite/probe/integrity-mockup.xml 2026-01-12 16:56:33.000000000 +0100 @@ -198,6 +198,26 @@ <stdout></stdout> </Command> <Command> + <name>/usr/bin/udevadm info /dev/loop0</name> + <stdout>P: /devices/virtual/block/loop0</stdout> + <stdout>N: loop1</stdout> + <stdout>L: 0</stdout> + <stdout>E: DEVPATH=/devices/virtual/block/loop0</stdout> + <stdout>E: DEVNAME=/dev/loop0</stdout> + <stdout>E: DEVTYPE=disk</stdout> + <stdout>E: DISKSEQ=1</stdout> + <stdout>E: MAJOR=7</stdout> + <stdout>E: MINOR=0</stdout> + <stdout>E: SUBSYSTEM=block</stdout> + <stdout>E: USEC_INITIALIZED=7052380</stdout> + <stdout>E: ID_FS_VERSION=4.0</stdout> + <stdout>E: ID_FS_TYPE=squashfs</stdout> + <stdout>E: ID_FS_USAGE=filesystem</stdout> + <stdout>E: TAGS=:systemd:</stdout> + <stdout>E: CURRENT_TAGS=:systemd:</stdout> + <stdout></stdout> + </Command> + <Command> <name>/usr/bin/udevadm info /dev/loop1</name> <stdout>P: /devices/virtual/block/loop1</stdout> <stdout>N: loop1</stdout> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/testsuite/probe/md1-mockup.xml new/libstorage-ng-4.5.284/testsuite/probe/md1-mockup.xml --- old/libstorage-ng-4.5.283/testsuite/probe/md1-mockup.xml 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/testsuite/probe/md1-mockup.xml 2026-01-12 16:56:33.000000000 +0100 @@ -80,14 +80,7 @@ <stdout>/dev/sda: UUID="2ce25515-3d25-5c09-a0e9-1f18d9c098d3" UUID_SUB="0193d8d8-ba9f-1a0d-3dad-ae7e9d264336" LABEL="(none):0" TYPE="linux_raid_member" </stdout> <stdout>/dev/sdb: UUID="2ce25515-3d25-5c09-a0e9-1f18d9c098d3" UUID_SUB="d49e9bf5-6946-5039-0c60-23d3d6f3c1fb" LABEL="(none):0" TYPE="linux_raid_member" </stdout> <stdout>/dev/sdc: UUID="2ce25515-3d25-5c09-a0e9-1f18d9c098d3" UUID_SUB="96411a8d-e9c9-b287-4be7-c3f0343693be" LABEL="(none):0" TYPE="linux_raid_member" </stdout> - <stdout>/dev/loop0: TYPE="squashfs" </stdout> <stdout>/dev/sdd: UUID="2ce25515-3d25-5c09-a0e9-1f18d9c098d3" UUID_SUB="98723522-57a0-a22b-5a68-b865784616bf" LABEL="(none):0" TYPE="linux_raid_member" </stdout> - <stdout>/dev/loop1: TYPE="squashfs" </stdout> - <stdout>/dev/loop2: TYPE="squashfs" </stdout> - <stdout>/dev/loop3: TYPE="squashfs" </stdout> - <stdout>/dev/loop4: TYPE="squashfs" </stdout> - <stdout>/dev/loop5: TYPE="squashfs" </stdout> - <stdout>/dev/loop6: TYPE="squashfs" </stdout> <stdout>/dev/sr0: UUID="2014-10-27-14-56-02-00" LABEL="openSUSE-13.2-DVD-x86_640051" TYPE="iso9660" PTUUID="10ce3e4f" PTTYPE="dos"</stdout> <stderr></stderr> </Command> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.5.283/testsuite/probe/md2-mockup.xml new/libstorage-ng-4.5.284/testsuite/probe/md2-mockup.xml --- old/libstorage-ng-4.5.283/testsuite/probe/md2-mockup.xml 2026-01-05 14:17:56.000000000 +0100 +++ new/libstorage-ng-4.5.284/testsuite/probe/md2-mockup.xml 2026-01-12 16:56:33.000000000 +0100 @@ -81,14 +81,7 @@ <stdout>/dev/sda: UUID="3e531727-0857-f684-cd2e-394b62046b74" UUID_SUB="ad3cff36-a8fd-6728-2f2d-8c348472cddd" LABEL="any:1" TYPE="linux_raid_member" </stdout> <stdout>/dev/sdb: UUID="3e531727-0857-f684-cd2e-394b62046b74" UUID_SUB="6ba92495-88b5-33a4-ed2b-1fb1fa6387f7" LABEL="any:1" TYPE="linux_raid_member" </stdout> <stdout>/dev/sdc: UUID="c8440826-8e55-745c-d7e1-4cddac26716d" UUID_SUB="df4a8d48-2a56-b0b2-3cfb-7fd99bf196ac" LABEL="any:2" TYPE="linux_raid_member" </stdout> - <stdout>/dev/loop0: TYPE="squashfs" </stdout> <stdout>/dev/sdd: UUID="c8440826-8e55-745c-d7e1-4cddac26716d" UUID_SUB="bec2677c-33ad-1e4a-75f5-ce58baffb776" LABEL="any:2" TYPE="linux_raid_member" </stdout> - <stdout>/dev/loop1: TYPE="squashfs" </stdout> - <stdout>/dev/loop2: TYPE="squashfs" </stdout> - <stdout>/dev/loop3: TYPE="squashfs" </stdout> - <stdout>/dev/loop4: TYPE="squashfs" </stdout> - <stdout>/dev/loop5: TYPE="squashfs" </stdout> - <stdout>/dev/loop6: TYPE="squashfs" </stdout> <stdout>/dev/sr0: UUID="2014-10-27-14-56-02-00" LABEL="openSUSE-13.2-DVD-x86_640051" TYPE="iso9660" PTUUID="10ce3e4f" PTTYPE="dos" </stdout> <stdout>/dev/md1: UUID="d11cbd17-b4fa-9ccd-bb7b-9bab557d863c" UUID_SUB="a400c8f9-ceae-e29a-b7b3-c1c868974711" LABEL="any:0" TYPE="linux_raid_member" </stdout> <stdout>/dev/md2: UUID="d11cbd17-b4fa-9ccd-bb7b-9bab557d863c" UUID_SUB="3ed18246-99c6-a49a-36ef-fe7c90029c93" LABEL="any:0" TYPE="linux_raid_member" </stdout>
