summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorjoerg <joerg@FreeBSD.org>1997-04-29 15:52:53 +0000
committerjoerg <joerg@FreeBSD.org>1997-04-29 15:52:53 +0000
commit57e93106aa9f89b04e44d5b1042cfae84541c5d2 (patch)
tree804e7170f9ead9a95189d0ac289b76202260faea /sys/fs
parent55c9dac45043b0c4199aaca4735cfa1d01b209e5 (diff)
downloadFreeBSD-src-57e93106aa9f89b04e44d5b1042cfae84541c5d2.zip
FreeBSD-src-57e93106aa9f89b04e44d5b1042cfae84541c5d2.tar.gz
Add support for ISO9660 multi-session CD-ROMs. This is just nothing
but searching the directory on something else than the default location. NB: this comprises an interface change to the mount_cd9660(8) utility (commit will follow). You need to rebuild both. I've got similar patches for RELENG_2_2, should i commit them too?
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/cd9660/cd9660_mount.h1
-rw-r--r--sys/fs/cd9660/cd9660_vfsops.c6
2 files changed, 5 insertions, 2 deletions
diff --git a/sys/fs/cd9660/cd9660_mount.h b/sys/fs/cd9660/cd9660_mount.h
index ea6ecaa..9d3f78e 100644
--- a/sys/fs/cd9660/cd9660_mount.h
+++ b/sys/fs/cd9660/cd9660_mount.h
@@ -45,6 +45,7 @@ struct iso_args {
char *fspec; /* block special device to mount */
struct export_args export; /* network export info */
int flags; /* mounting flags, see below */
+ int ssector; /* starting sector, 0 for 1st session */
};
#define ISOFSMNT_NORRIP 0x00000001 /* disable Rock Ridge Ext.*/
#define ISOFSMNT_GENS 0x00000002 /* enable generation numbers */
diff --git a/sys/fs/cd9660/cd9660_vfsops.c b/sys/fs/cd9660/cd9660_vfsops.c
index e8712dc..764ce6b 100644
--- a/sys/fs/cd9660/cd9660_vfsops.c
+++ b/sys/fs/cd9660/cd9660_vfsops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)cd9660_vfsops.c 8.18 (Berkeley) 5/22/95
- * $Id: cd9660_vfsops.c,v 1.21 1997/03/24 11:24:32 bde Exp $
+ * $Id: cd9660_vfsops.c,v 1.22 1997/04/14 18:15:46 phk Exp $
*/
#include <sys/param.h>
@@ -255,7 +255,9 @@ iso_mountfs(devvp, mp, p, argp)
*/
iso_bsize = ISO_DEFAULT_BLOCK_SIZE;
- for (iso_blknum = 16; iso_blknum < 100; iso_blknum++) {
+ for (iso_blknum = 16 + argp->ssector;
+ iso_blknum < 100 + argp->ssector;
+ iso_blknum++) {
if (error = bread(devvp, iso_blknum * btodb(iso_bsize),
iso_bsize, NOCRED, &bp))
goto out;
OpenPOWER on IntegriCloud