All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] [PATCH] Label support in mount
@ 2002-08-29  5:20 jordan.breeding
       [not found] ` <20020829052400.GD19435@clusterfs.com>
  0 siblings, 1 reply; 5+ messages in thread
From: jordan.breeding @ 2002-08-29  5:20 UTC (permalink / raw)
  To: reiserfs-list

[-- Attachment #1: Type: text/plain, Size: 598 bytes --]

Hello,

  This patch was originally intended to try and add
support for reiserfs labels to mount from
util-linux-2.11u found on ftp.kernel.org.  It is not
quite working (if I try to mount something by label the
mount program seg. faults), and I won't have time to
debug and look at it until at least tomorrow night.  I am
sure there is something trivial or stupid that I have
done wrong.  At least it is a starting point, if someone
knows what is wrong and knows how to fix it quickly then
feel free to fix the patch and send it back to me or send
it to the util-linux maintainer.

Jordan Breeding

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] [PATCH] Label support in mount
       [not found] ` <20020829052400.GD19435@clusterfs.com>
@ 2002-08-29  6:43   ` Jordan Breeding
  2002-08-29  9:14     ` Hans Reiser
  2002-08-29 12:14     ` Chris Mason
  0 siblings, 2 replies; 5+ messages in thread
From: Jordan Breeding @ 2002-08-29  6:43 UTC (permalink / raw)
  To: Andreas Dilger; +Cc: reiserfs-list

[-- Attachment #1: Type: text/plain, Size: 920 bytes --]

Andreas Dilger wrote:
> On Aug 29, 2002  05:20 +0000, jordan.breeding@attbi.com wrote:
> 
>>  This patch was originally intended to try and add
>>support for reiserfs labels to mount from
>>util-linux-2.11u found on ftp.kernel.org.  It is not
>>quite working (if I try to mount something by label the
>>mount program seg. faults), and I won't have time to
>>debug and look at it until at least tomorrow night.  I am
>>sure there is something trivial or stupid that I have
>>done wrong.  At least it is a starting point, if someone
>>knows what is wrong and knows how to fix it quickly then
>>feel free to fix the patch and send it back to me or send
>>it to the util-linux maintainer.
> 
> 
> No patch.
> 
> Cheers, Andreas
> --
> Andreas Dilger
> http://www-mddsp.enel.ucalgary.ca/People/adilger/
> http://sourceforge.net/projects/ext2resize/
> 
> 

Sorry about that.  The patch is attached this time.

Jordan Breeding

[-- Attachment #2: util-linux-2.11u-patch-1 --]
[-- Type: text/plain, Size: 1959 bytes --]

diff -urN util-linux-2.11u/mount/linux_fs.h util-linux-2.11u-patched/mount/linux_fs.h
--- util-linux-2.11u/mount/linux_fs.h	2002-08-03 16:09:43.000000000 -0500
+++ util-linux-2.11u-patched/mount/linux_fs.h	2002-08-29 00:54:27.000000000 -0500
@@ -83,12 +83,24 @@
 	u_char		s_oid_cursize[2];
 	u_char		s_state[2];
 	u_char		s_magic[12];
+	u_char		s_hash_function_code[4];
+	u_char		s_tree_height[2];
+	u_char		s_bmap_nr[2];
+	u_char		s_version[2];
+	u_char		s_reserved[2];
+	u_char		s_inode_generation[4];
+	u_char		s_flags[4];
+	u_char		s_uuid[16];
+	u_char		s_label[16];
+	u_char		s_unused[88];
 };
 #define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
 #define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
 #define REISERFS_DISK_OFFSET_IN_BYTES (64 * 1024)
 /* the spot for the super in versions 3.5 - 3.5.10 (inclusive) */
 #define REISERFS_OLD_DISK_OFFSET_IN_BYTES (8 * 1024)
+#define reiserfsmagic(s)	assemble2le(s.s_magic)
+
 
 #define _XIAFS_SUPER_MAGIC 0x012FD16D
 struct xiafs_super_block {
diff -urN util-linux-2.11u/mount/mount_by_label.c util-linux-2.11u-patched/mount/mount_by_label.c
--- util-linux-2.11u/mount/mount_by_label.c	2002-08-03 19:07:10.000000000 -0500
+++ util-linux-2.11u-patched/mount/mount_by_label.c	2002-08-29 00:55:46.000000000 -0500
@@ -81,6 +81,7 @@
 	struct ext2_super_block e2sb;
 	struct xfs_super_block xfsb;
 	struct jfs_super_block jfssb;
+	struct reiserfs_super_block rfssb;
 
 	fd = open(device, O_RDONLY);
 	if (fd < 0)
@@ -128,6 +129,15 @@
 		    }
 		    rv = 0;
 	}
+	else if (lseek(fd, REISERFS_DISK_OFFSET_IN_BYTES, SEEK_SET) == REISERFS_DISK_OFFSET_IN_BYTES
+			&& read(fd, (char *) &rfssb, sizeof(rfssb)) == sizeof(rfssb)
+		&& (reiserfsmagic(rfssb) == REISER2FS_SUPER_MAGIC_STRING)) {
+			memcpy(uuid, rfssb.s_uuid, sizeof(rfssb.s_uuid));
+			namesize = sizeof(rfssb.s_label);
+			if ((*label = calloc(namesize + 1, 1)) != NULL)
+				memcpy(*label, rfssb.s_label, namesize);
+			rv = 0;
+	}
 
 	close(fd);
 	return rv;

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] [PATCH] Label support in mount
  2002-08-29  6:43   ` Jordan Breeding
@ 2002-08-29  9:14     ` Hans Reiser
  2002-08-29 12:14     ` Chris Mason
  1 sibling, 0 replies; 5+ messages in thread
From: Hans Reiser @ 2002-08-29  9:14 UTC (permalink / raw)
  To: Jordan Breeding; +Cc: Andreas Dilger, reiserfs-list, Oleg Drokin

Green will review this next week when he gets back from vacation.  If he 
does not, let me know.

Thanks for your submission,

Hans

Jordan Breeding wrote:

> Andreas Dilger wrote:
>
>> On Aug 29, 2002  05:20 +0000, jordan.breeding@attbi.com wrote:
>>
>>>  This patch was originally intended to try and add
>>> support for reiserfs labels to mount from
>>> util-linux-2.11u found on ftp.kernel.org.  It is not
>>> quite working (if I try to mount something by label the
>>> mount program seg. faults), and I won't have time to
>>> debug and look at it until at least tomorrow night.  I am
>>> sure there is something trivial or stupid that I have
>>> done wrong.  At least it is a starting point, if someone
>>> knows what is wrong and knows how to fix it quickly then
>>> feel free to fix the patch and send it back to me or send
>>> it to the util-linux maintainer.
>>
>>
>>
>> No patch.
>>
>> Cheers, Andreas
>> --
>> Andreas Dilger
>> http://www-mddsp.enel.ucalgary.ca/People/adilger/
>> http://sourceforge.net/projects/ext2resize/
>>
>>
>
> Sorry about that.  The patch is attached this time.
>
> Jordan Breeding
>
>------------------------------------------------------------------------
>
>diff -urN util-linux-2.11u/mount/linux_fs.h util-linux-2.11u-patched/mount/linux_fs.h
>--- util-linux-2.11u/mount/linux_fs.h	2002-08-03 16:09:43.000000000 -0500
>+++ util-linux-2.11u-patched/mount/linux_fs.h	2002-08-29 00:54:27.000000000 -0500
>@@ -83,12 +83,24 @@
> 	u_char		s_oid_cursize[2];
> 	u_char		s_state[2];
> 	u_char		s_magic[12];
>+	u_char		s_hash_function_code[4];
>+	u_char		s_tree_height[2];
>+	u_char		s_bmap_nr[2];
>+	u_char		s_version[2];
>+	u_char		s_reserved[2];
>+	u_char		s_inode_generation[4];
>+	u_char		s_flags[4];
>+	u_char		s_uuid[16];
>+	u_char		s_label[16];
>+	u_char		s_unused[88];
> };
> #define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
> #define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
> #define REISERFS_DISK_OFFSET_IN_BYTES (64 * 1024)
> /* the spot for the super in versions 3.5 - 3.5.10 (inclusive) */
> #define REISERFS_OLD_DISK_OFFSET_IN_BYTES (8 * 1024)
>+#define reiserfsmagic(s)	assemble2le(s.s_magic)
>+
> 
> #define _XIAFS_SUPER_MAGIC 0x012FD16D
> struct xiafs_super_block {
>diff -urN util-linux-2.11u/mount/mount_by_label.c util-linux-2.11u-patched/mount/mount_by_label.c
>--- util-linux-2.11u/mount/mount_by_label.c	2002-08-03 19:07:10.000000000 -0500
>+++ util-linux-2.11u-patched/mount/mount_by_label.c	2002-08-29 00:55:46.000000000 -0500
>@@ -81,6 +81,7 @@
> 	struct ext2_super_block e2sb;
> 	struct xfs_super_block xfsb;
> 	struct jfs_super_block jfssb;
>+	struct reiserfs_super_block rfssb;
> 
> 	fd = open(device, O_RDONLY);
> 	if (fd < 0)
>@@ -128,6 +129,15 @@
> 		    }
> 		    rv = 0;
> 	}
>+	else if (lseek(fd, REISERFS_DISK_OFFSET_IN_BYTES, SEEK_SET) == REISERFS_DISK_OFFSET_IN_BYTES
>+			&& read(fd, (char *) &rfssb, sizeof(rfssb)) == sizeof(rfssb)
>+		&& (reiserfsmagic(rfssb) == REISER2FS_SUPER_MAGIC_STRING)) {
>+			memcpy(uuid, rfssb.s_uuid, sizeof(rfssb.s_uuid));
>+			namesize = sizeof(rfssb.s_label);
>+			if ((*label = calloc(namesize + 1, 1)) != NULL)
>+				memcpy(*label, rfssb.s_label, namesize);
>+			rv = 0;
>+	}
> 
> 	close(fd);
> 	return rv;
>  
>




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] [PATCH] Label support in mount
  2002-08-29  6:43   ` Jordan Breeding
  2002-08-29  9:14     ` Hans Reiser
@ 2002-08-29 12:14     ` Chris Mason
  2002-08-29 13:26       ` Jordan Breeding
  1 sibling, 1 reply; 5+ messages in thread
From: Chris Mason @ 2002-08-29 12:14 UTC (permalink / raw)
  To: Jordan Breeding; +Cc: Andreas Dilger, reiserfs-list

On Thu, 2002-08-29 at 02:43, Jordan Breeding wrote:
> Andreas Dilger wrote:
> > On Aug 29, 2002  05:20 +0000, jordan.breeding@attbi.com wrote:
> > 
> >>  This patch was originally intended to try and add
> >>support for reiserfs labels to mount from
> >>util-linux-2.11u found on ftp.kernel.org.  It is not
> >>quite working (if I try to mount something by label the
> >>mount program seg. faults), and I won't have time to
> >>debug and look at it until at least tomorrow night.  I am
> >>sure there is something trivial or stupid that I have
> >>done wrong.  At least it is a starting point, if someone
> >>knows what is wrong and knows how to fix it quickly then
> >>feel free to fix the patch and send it back to me or send
> >>it to the util-linux maintainer.
> > 

Hi Jordan,

Here's my current patch, the only bug is that can detect 3.5.x
filesystems with a relocated journal as 3.6.x (with a label/uuid).

Once I get that fixed I'll send along to the mount maintainer:

diff -ur util-linux-2.11u/mount/linux_fs.h util-linux-2.11u.mason/mount/linux_fs.h
--- util-linux-2.11u/mount/linux_fs.h	Sat Aug  3 17:09:43 2002
+++ util-linux-2.11u.mason/mount/linux_fs.h	Mon Aug 19 14:36:30 2002
@@ -83,9 +83,15 @@
 	u_char		s_oid_cursize[2];
 	u_char		s_state[2];
 	u_char		s_magic[12];
+
+	/* only valid in 3.6.x format --mason@suse.com */
+	u_char          s_dummy[20];
+	u_char          s_uuid[16];
+	u_char          s_label[16];
 };
 #define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
 #define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
+#define REISER2FS_JR_SUPER_MAGIC_STRING "ReIsEr3Fs"
 #define REISERFS_DISK_OFFSET_IN_BYTES (64 * 1024)
 /* the spot for the super in versions 3.5 - 3.5.10 (inclusive) */
 #define REISERFS_OLD_DISK_OFFSET_IN_BYTES (8 * 1024)
diff -ur util-linux-2.11u/mount/mount_by_label.c util-linux-2.11u.mason/mount/mount_by_label.c
--- util-linux-2.11u/mount/mount_by_label.c	Sat Aug  3 20:07:10 2002
+++ util-linux-2.11u.mason/mount/mount_by_label.c	Mon Aug 19 14:37:39 2002
@@ -17,6 +17,8 @@
  * - Added JFS v2 format support
  * 2002-07-26 Luciano Chavez <lnx1138@us.ibm.com>
  * - Added EVMS support
+ * 2002-08-19 Chris Mason <mason@suse.com>
+ * - Added ReiserFS support
  */
 
 #include <stdio.h>
@@ -69,6 +71,24 @@
 	return (mdsbmagic(mdsb) == MD_SB_MAGIC);
 }
 
+static int valid_reiserfs_v2_super(struct reiserfs_super_block *s) {
+
+	/* only 3.6.x format supers have labels or uuids */
+	if (!strncmp(s->s_magic, REISER2FS_SUPER_MAGIC_STRING,
+	            strlen(REISER2FS_SUPER_MAGIC_STRING)) ||
+	    !strncmp(s->s_magic, REISER2FS_JR_SUPER_MAGIC_STRING,
+	            strlen(REISER2FS_JR_SUPER_MAGIC_STRING))) {
+		return 1;
+	}
+
+	/* old format disks won't have a 3.6.x super in their log
+	 * area.  They might have a 3.5.x super in there, but not
+	 * a new format one.  So, we don't need to do any special
+	 * checks to make sure we aren't inside the log
+	 */
+        return 0;
+}
+
 /* for now, only ext2, ext3 and xfs are supported */
 static int
 get_label_uuid(const char *device, char **label, char *uuid) {
@@ -81,6 +101,7 @@
 	struct ext2_super_block e2sb;
 	struct xfs_super_block xfsb;
 	struct jfs_super_block jfssb;
+	struct reiserfs_super_block reisersb;
 
 	fd = open(device, O_RDONLY);
 	if (fd < 0)
@@ -127,6 +148,18 @@
 			    memcpy(*label, jfssb.s_label, namesize);
 		    }
 		    rv = 0;
+        }
+        else if (lseek(fd, REISERFS_DISK_OFFSET_IN_BYTES, SEEK_SET) ==
+                       REISERFS_DISK_OFFSET_IN_BYTES &&
+                 read(fd, (char *) &reisersb, sizeof(reisersb)) ==
+                      sizeof(reisersb)
+                && valid_reiserfs_v2_super(&reisersb)) {
+ 
+                memcpy(uuid, reisersb.s_uuid, sizeof(reisersb.s_uuid));
+                namesize = sizeof(reisersb.s_label);
+                if ((*label = calloc(namesize + 1, 1)) != NULL)
+                        memcpy(*label, reisersb.s_label, namesize);
+                rv = 0;
 	}
 
 	close(fd);
diff -ur util-linux-2.11u/mount/mount_guess_fstype.c util-linux-2.11u.mason/mount/mount_guess_fstype.c
--- util-linux-2.11u/mount/mount_guess_fstype.c	Sat Aug  3 18:22:07 2002
+++ util-linux-2.11u.mason/mount/mount_guess_fstype.c	Mon Aug 19 14:36:30 2002
@@ -221,7 +221,9 @@
     return (!strncmp (rs->s_magic, REISERFS_SUPER_MAGIC_STRING, 
 		      strlen ( REISERFS_SUPER_MAGIC_STRING)) ||
 	    !strncmp (rs->s_magic, REISER2FS_SUPER_MAGIC_STRING, 
-		      strlen ( REISER2FS_SUPER_MAGIC_STRING)));
+		      strlen ( REISER2FS_SUPER_MAGIC_STRING))||
+	    !strncmp (rs->s_magic, REISER2FS_JR_SUPER_MAGIC_STRING, 
+		      strlen ( REISER2FS_JR_SUPER_MAGIC_STRING)));
 }
 
 char *


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] [PATCH] Label support in mount
  2002-08-29 12:14     ` Chris Mason
@ 2002-08-29 13:26       ` Jordan Breeding
  0 siblings, 0 replies; 5+ messages in thread
From: Jordan Breeding @ 2002-08-29 13:26 UTC (permalink / raw)
  To: Chris Mason; +Cc: Andreas Dilger, reiserfs-list

Chris Mason wrote:
> On Thu, 2002-08-29 at 02:43, Jordan Breeding wrote:
> 
>>Andreas Dilger wrote:
>>
>>>On Aug 29, 2002  05:20 +0000, jordan.breeding@attbi.com wrote:
>>>
>>>
>>>> This patch was originally intended to try and add
>>>>support for reiserfs labels to mount from
>>>>util-linux-2.11u found on ftp.kernel.org.  It is not
>>>>quite working (if I try to mount something by label the
>>>>mount program seg. faults), and I won't have time to
>>>>debug and look at it until at least tomorrow night.  I am
>>>>sure there is something trivial or stupid that I have
>>>>done wrong.  At least it is a starting point, if someone
>>>>knows what is wrong and knows how to fix it quickly then
>>>>feel free to fix the patch and send it back to me or send
>>>>it to the util-linux maintainer.
>>>
> 
> Hi Jordan,
> 
> Here's my current patch, the only bug is that can detect 3.5.x
> filesystems with a relocated journal as 3.6.x (with a label/uuid).
> 
> Once I get that fixed I'll send along to the mount maintainer:
> 

Chris,

   Thanks.  Your patch works perfectly for my partitions.

Jordan





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2002-08-29 13:26 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-08-29  5:20 [RFC] [PATCH] Label support in mount jordan.breeding
     [not found] ` <20020829052400.GD19435@clusterfs.com>
2002-08-29  6:43   ` Jordan Breeding
2002-08-29  9:14     ` Hans Reiser
2002-08-29 12:14     ` Chris Mason
2002-08-29 13:26       ` Jordan Breeding

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.