public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: James Lamanna <jlamanna@gmail.com>
To: linux-kernel@vger.kernel.org,
	Joerg.Schilling@fokus.fraunhofer.de, ismail@pardus.org.tr
Subject: [PATCH] Support ISO-9660 RockRidge v. 1.12 V2
Date: Wed, 18 Oct 2006 09:36:53 -0700 (PDT)	[thread overview]
Message-ID: <45365825.05759a90.7d7c.ffffe441@mx.google.com> (raw)


Joerg Schilling pointed out that RockRidge v. 1.12 extends the PX entry.
This patch stores the inode number that is now included.
He has also mentioned 'implementing support for new inode features' wrt to a
mkisofs fingerprint. Perhaps that will come at a later date.
Regardless, that can be built on this patch since now the inode number gets
stored.

This patch has been tested against mounting an ISO-9660 image in
loopback that supports RockRidge v. 1.12 (thank you to Joerg for a beta 
of mkisofs that does this).
This should apply against the latest git.

--- 
Add support of RockRidge v. 1.12.
RockRidge v. 1.12 adds an inode number field to the PX entry, so we might as
well store it too.

Signed-off-by: James Lamanna <jlamanna@gmail.com>
---
diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c
index f3a1db3..241d8b6 100644
--- a/fs/isofs/rock.c
+++ b/fs/isofs/rock.c
@@ -4,6 +4,9 @@
  *  (C) 1992, 1993  Eric Youngdale
  *
  *  Rock Ridge Extensions to iso9660
+ * 
+ *  James Lamanna              : Support v. 1.12 PX Entry
+ *  (jlamanna@gmail.com)       : 17th Oct 2006
  */
 
 #include <linux/slab.h>
@@ -148,8 +151,14 @@ static int rock_check_overflow(struct ro
 		len = sizeof(struct RR_RR_s);
 		break;
 	case SIG('P', 'X'):
-		len = sizeof(struct RR_PX_s);
+	{
+		struct rock_ridge *rr = (struct rock_ridge *)rs->chr;
+		if (rr->len == PX_112_LEN)
+			len = sizeof(struct RR_PX_112_s);
+		else
+			len = sizeof(struct RR_PX_s);
 		break;
+	}
 	case SIG('P', 'N'):
 		len = sizeof(struct RR_PN_s);
 		break;
@@ -349,6 +358,9 @@ #endif
 			inode->i_nlink = isonum_733(rr->u.PX.n_links);
 			inode->i_uid = isonum_733(rr->u.PX.uid);
 			inode->i_gid = isonum_733(rr->u.PX.gid);
+
+			if (rr->len == PX_112_LEN)
+				inode->i_ino = isonum_733(rr->u.PX_112.ino);
 			break;
 		case SIG('P', 'N'):
 			{
diff --git a/fs/isofs/rock.h b/fs/isofs/rock.h
index ed09e2b..4b5c721 100644
--- a/fs/isofs/rock.h
+++ b/fs/isofs/rock.h
@@ -35,6 +35,16 @@ struct RR_PX_s {
 	char gid[8];
 };
 
+/* RR 1.12 extends the PX entry with a POSIX File Serial Number */
+#define PX_112_LEN (sizeof(struct RR_PX_112_s) + offsetof(struct rock_ridge, u))
+struct RR_PX_112_s {
+	char mode[8];
+	char n_links[8];
+	char uid[8];
+	char gid[8];
+	char ino[8];
+};
+
 struct RR_PN_s {
 	char dev_high[8];
 	char dev_low[8];
@@ -102,6 +112,7 @@ struct rock_ridge {
 		struct SU_ER_s ER;
 		struct RR_RR_s RR;
 		struct RR_PX_s PX;
+		struct RR_PX_112_s PX_112;
 		struct RR_PN_s PN;
 		struct RR_SL_s SL;
 		struct RR_NM_s NM;

             reply	other threads:[~2006-10-18 16:37 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-18 16:36 James Lamanna [this message]
2006-10-18 17:11 ` [PATCH] Support ISO-9660 RockRidge v. 1.12 V2 Joerg Schilling
2006-10-19  9:48 ` Joerg Schilling
2006-10-19 11:25   ` Alan Cox
2006-10-19 15:39   ` James Lamanna

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=45365825.05759a90.7d7c.ffffe441@mx.google.com \
    --to=jlamanna@gmail.com \
    --cc=Joerg.Schilling@fokus.fraunhofer.de \
    --cc=ismail@pardus.org.tr \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox