diff options
Diffstat (limited to 'debian/patches/fix-remount0001-yyy-fix-remount.patch')
-rw-r--r-- | debian/patches/fix-remount0001-yyy-fix-remount.patch | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/debian/patches/fix-remount0001-yyy-fix-remount.patch b/debian/patches/fix-remount0001-yyy-fix-remount.patch deleted file mode 100644 index 87bda76f..00000000 --- a/debian/patches/fix-remount0001-yyy-fix-remount.patch +++ /dev/null @@ -1,144 +0,0 @@ -From a56055334da0127cc3e88f1529704b80a61e93a2 Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Tue, 14 Jul 2015 14:28:57 +0200 -Subject: [PATCH hurd] yyy fix remount - ---- - ext2fs/ext2fs.c | 1 - - ext2fs/hyper.c | 53 +++++++++++++++++++++++++++++------------------------ - 2 files changed, 29 insertions(+), 25 deletions(-) - -diff --git a/ext2fs/ext2fs.c b/ext2fs/ext2fs.c -index d0fdfe7..f1ec937 100644 ---- a/ext2fs/ext2fs.c -+++ b/ext2fs/ext2fs.c -@@ -209,7 +209,6 @@ diskfs_reload_global_state () - { - pokel_flush (&global_pokel); - pager_flush (diskfs_disk_pager, 1); -- sblock = NULL; - get_hypermetadata (); - map_hypermetadata (); - return 0; -diff --git a/ext2fs/hyper.c b/ext2fs/hyper.c -index 5f288bf..afbbbc2 100644 ---- a/ext2fs/hyper.c -+++ b/ext2fs/hyper.c -@@ -60,24 +60,22 @@ get_hypermetadata (void) - { - error_t err; - size_t read = 0; -- -- if (sblock != NULL) -- munmap (sblock, SBLOCK_SIZE); -+ struct ext2_super_block *old_sblock, *new_sblock; - - err = store_read (store, SBLOCK_OFFS >> store->log2_block_size, -- SBLOCK_SIZE, (void **)&sblock, &read); -+ SBLOCK_SIZE, (void **)&new_sblock, &read); - if (err || read != SBLOCK_SIZE) - ext2_panic ("Cannot read hypermetadata"); - -- if (sblock->s_magic != EXT2_SUPER_MAGIC -+ if (new_sblock->s_magic != EXT2_SUPER_MAGIC - #ifdef EXT2FS_PRE_02B_COMPAT -- && sblock->s_magic != EXT2_PRE_02B_MAGIC -+ && new_sblock->s_magic != EXT2_PRE_02B_MAGIC - #endif - ) - ext2_panic ("bad magic number %#x (should be %#x)", -- sblock->s_magic, EXT2_SUPER_MAGIC); -+ new_sblock->s_magic, EXT2_SUPER_MAGIC); - -- log2_block_size = EXT2_MIN_BLOCK_LOG_SIZE + sblock->s_log_block_size; -+ log2_block_size = EXT2_MIN_BLOCK_LOG_SIZE + new_sblock->s_log_block_size; - block_size = 1 << log2_block_size; - - if (block_size > EXT2_MAX_BLOCK_SIZE) -@@ -97,10 +95,10 @@ get_hypermetadata (void) - ext2_panic ("block size %d isn't a power-of-two multiple of 512!", - block_size); - -- if ((store->size >> log2_block_size) < sblock->s_blocks_count) -+ if ((store->size >> log2_block_size) < new_sblock->s_blocks_count) - ext2_panic ("disk size (%qd bytes) too small; superblock says we need %qd", - (long long int) store->size, -- (long long int) sblock->s_blocks_count << log2_block_size); -+ (long long int) new_sblock->s_blocks_count << log2_block_size); - if (log2_dev_blocks_per_fs_block != 0 - && (store->size & ((1 << log2_dev_blocks_per_fs_block) - 1)) != 0) - ext2_warning ("%Ld (%zd byte) device blocks " -@@ -109,42 +107,42 @@ get_hypermetadata (void) - store->block_size, block_size); - - /* Set these handy variables. */ -- inodes_per_block = block_size / EXT2_INODE_SIZE (sblock); -+ inodes_per_block = block_size / EXT2_INODE_SIZE (new_sblock); - -- frag_size = EXT2_MIN_FRAG_SIZE << sblock->s_log_frag_size; -+ frag_size = EXT2_MIN_FRAG_SIZE << new_sblock->s_log_frag_size; - if (frag_size) - frags_per_block = block_size / frag_size; - else - ext2_panic ("frag size is zero!"); - -- if (sblock->s_rev_level > EXT2_GOOD_OLD_REV) -+ if (new_sblock->s_rev_level > EXT2_GOOD_OLD_REV) - { -- if (sblock->s_feature_incompat & ~EXT2_FEATURE_INCOMPAT_SUPP) -+ if (new_sblock->s_feature_incompat & ~EXT2_FEATURE_INCOMPAT_SUPP) - ext2_panic ("could not mount because of unsupported optional features" - " (0x%x)", -- sblock->s_feature_incompat & ~EXT2_FEATURE_INCOMPAT_SUPP); -- if (sblock->s_feature_ro_compat & ~EXT2_FEATURE_RO_COMPAT_SUPP) -+ new_sblock->s_feature_incompat & ~EXT2_FEATURE_INCOMPAT_SUPP); -+ if (new_sblock->s_feature_ro_compat & ~EXT2_FEATURE_RO_COMPAT_SUPP) - { - ext2_warning ("mounted readonly because of" - " unsupported optional features (0x%x)", -- sblock->s_feature_ro_compat & ~EXT2_FEATURE_RO_COMPAT_SUPP); -+ new_sblock->s_feature_ro_compat & ~EXT2_FEATURE_RO_COMPAT_SUPP); - diskfs_readonly = 1; - } -- if (sblock->s_inode_size != EXT2_GOOD_OLD_INODE_SIZE) -- ext2_panic ("inode size %d isn't supported", sblock->s_inode_size); -+ if (new_sblock->s_inode_size != EXT2_GOOD_OLD_INODE_SIZE) -+ ext2_panic ("inode size %d isn't supported", new_sblock->s_inode_size); - } - - groups_count = -- ((sblock->s_blocks_count - sblock->s_first_data_block + -- sblock->s_blocks_per_group - 1) -- / sblock->s_blocks_per_group); -+ ((new_sblock->s_blocks_count - new_sblock->s_first_data_block + -+ new_sblock->s_blocks_per_group - 1) -+ / new_sblock->s_blocks_per_group); - -- itb_per_group = sblock->s_inodes_per_group / inodes_per_block; -+ itb_per_group = new_sblock->s_inodes_per_group / inodes_per_block; - desc_per_block = block_size / sizeof (struct ext2_group_desc); - addr_per_block = block_size / sizeof (block_t); - db_per_group = (groups_count + desc_per_block - 1) / desc_per_block; - -- ext2fs_clean = sblock->s_state & EXT2_VALID_FS; -+ ext2fs_clean = new_sblock->s_state & EXT2_VALID_FS; - if (! ext2fs_clean) - { - ext2_warning ("FILESYSTEM NOT UNMOUNTED CLEANLY; PLEASE fsck"); -@@ -163,6 +161,13 @@ get_hypermetadata (void) - zeroblock = (vm_address_t) mmap (0, block_size, PROT_READ, MAP_ANON, 0, 0); - assert (zeroblock != (vm_address_t) MAP_FAILED); - } -+ -+ /* Switcherino! */ -+ old_sblock = sblock; -+ sblock = new_sblock; -+ __sync_synchronize (); -+ if (old_sblock != NULL) -+ munmap (old_sblock, SBLOCK_SIZE); - } - - static struct ext2_super_block *mapped_sblock; --- -2.1.4 - |