aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libfsimage
diff options
context:
space:
mode:
authorjohn.levon@sun.com <john.levon@sun.com>2007-02-19 20:44:42 -0800
committerjohn.levon@sun.com <john.levon@sun.com>2007-02-19 20:44:42 -0800
commitec08a094b2b6437406adab0f19cb89bf26c4f3ad (patch)
tree3a0a944eb764d758615842526e1b5c28bf29b56a /tools/libfsimage
parent5f855af62745d6def7f9a47a75fe3b83bf1aa2cb (diff)
downloadxen-ec08a094b2b6437406adab0f19cb89bf26c4f3ad.tar.gz
xen-ec08a094b2b6437406adab0f19cb89bf26c4f3ad.tar.bz2
xen-ec08a094b2b6437406adab0f19cb89bf26c4f3ad.zip
Filesystem implementations may need optional arguments in terms of
what to mount. Add an options string to the libfsimage API. Signed-off-by: John Levon <john.levon@sun.com>
Diffstat (limited to 'tools/libfsimage')
-rw-r--r--tools/libfsimage/common/fsimage.c4
-rw-r--r--tools/libfsimage/common/fsimage.h2
-rw-r--r--tools/libfsimage/common/fsimage_grub.c4
-rw-r--r--tools/libfsimage/common/fsimage_grub.h2
-rw-r--r--tools/libfsimage/common/fsimage_plugin.c4
-rw-r--r--tools/libfsimage/common/fsimage_plugin.h2
-rw-r--r--tools/libfsimage/common/fsimage_priv.h2
-rw-r--r--tools/libfsimage/ext2fs-lib/ext2fs-lib.c2
-rw-r--r--tools/libfsimage/ext2fs/fsys_ext2fs.c2
-rw-r--r--tools/libfsimage/reiserfs/fsys_reiserfs.c2
-rw-r--r--tools/libfsimage/ufs/fsys_ufs.c2
11 files changed, 14 insertions, 14 deletions
diff --git a/tools/libfsimage/common/fsimage.c b/tools/libfsimage/common/fsimage.c
index 08262f81ce..4a1431751d 100644
--- a/tools/libfsimage/common/fsimage.c
+++ b/tools/libfsimage/common/fsimage.c
@@ -36,7 +36,7 @@
static pthread_mutex_t fsi_lock = PTHREAD_MUTEX_INITIALIZER;
-fsi_t *fsi_open_fsimage(const char *path, uint64_t off)
+fsi_t *fsi_open_fsimage(const char *path, uint64_t off, const char *options)
{
fsi_t *fsi = NULL;
int fd;
@@ -53,7 +53,7 @@ fsi_t *fsi_open_fsimage(const char *path, uint64_t off)
fsi->f_data = NULL;
pthread_mutex_lock(&fsi_lock);
- err = find_plugin(fsi, path);
+ err = find_plugin(fsi, path, options);
pthread_mutex_unlock(&fsi_lock);
if (err != 0)
goto fail;
diff --git a/tools/libfsimage/common/fsimage.h b/tools/libfsimage/common/fsimage.h
index 28165ef29d..ad305b5dae 100644
--- a/tools/libfsimage/common/fsimage.h
+++ b/tools/libfsimage/common/fsimage.h
@@ -35,7 +35,7 @@ extern C {
typedef struct fsi fsi_t;
typedef struct fsi_file fsi_file_t;
-fsi_t *fsi_open_fsimage(const char *, uint64_t);
+fsi_t *fsi_open_fsimage(const char *, uint64_t, const char *);
void fsi_close_fsimage(fsi_t *);
int fsi_file_exists(fsi_t *, const char *);
diff --git a/tools/libfsimage/common/fsimage_grub.c b/tools/libfsimage/common/fsimage_grub.c
index 99481064a9..27a1481eb7 100644
--- a/tools/libfsimage/common/fsimage_grub.c
+++ b/tools/libfsimage/common/fsimage_grub.c
@@ -161,7 +161,7 @@ fsig_substring(const char *s1, const char *s2)
}
static int
-fsig_mount(fsi_t *fsi, const char *path)
+fsig_mount(fsi_t *fsi, const char *path, const char *options)
{
fsig_plugin_ops_t *ops = fsi->f_plugin->fp_data;
fsi_file_t *ffi;
@@ -178,7 +178,7 @@ fsig_mount(fsi_t *fsi, const char *path)
bzero(fsi->f_data, sizeof (fsig_data_t));
- if (!ops->fpo_mount(ffi)) {
+ if (!ops->fpo_mount(ffi, options)) {
fsip_file_free(ffi);
free(fsi->f_data);
fsi->f_data = NULL;
diff --git a/tools/libfsimage/common/fsimage_grub.h b/tools/libfsimage/common/fsimage_grub.h
index 38db2a219c..9fc8c467b2 100644
--- a/tools/libfsimage/common/fsimage_grub.h
+++ b/tools/libfsimage/common/fsimage_grub.h
@@ -38,7 +38,7 @@ extern C {
typedef struct fsig_plugin_ops {
int fpo_version;
- int (*fpo_mount)(fsi_file_t *);
+ int (*fpo_mount)(fsi_file_t *, const char *);
int (*fpo_dir)(fsi_file_t *, char *);
int (*fpo_read)(fsi_file_t *, char *, int);
} fsig_plugin_ops_t;
diff --git a/tools/libfsimage/common/fsimage_plugin.c b/tools/libfsimage/common/fsimage_plugin.c
index f961648164..ab35fb7d8f 100644
--- a/tools/libfsimage/common/fsimage_plugin.c
+++ b/tools/libfsimage/common/fsimage_plugin.c
@@ -185,7 +185,7 @@ fail:
return (ret);
}
-int find_plugin(fsi_t *fsi, const char *path)
+int find_plugin(fsi_t *fsi, const char *path, const char *options)
{
fsi_plugin_t *fp;
int ret = 0;
@@ -195,7 +195,7 @@ int find_plugin(fsi_t *fsi, const char *path)
for (fp = plugins; fp != NULL; fp = fp->fp_next) {
fsi->f_plugin = fp;
- if (fp->fp_ops->fpo_mount(fsi, path) == 0)
+ if (fp->fp_ops->fpo_mount(fsi, path, options) == 0)
goto out;
}
diff --git a/tools/libfsimage/common/fsimage_plugin.h b/tools/libfsimage/common/fsimage_plugin.h
index f1c83fab95..a682719a63 100644
--- a/tools/libfsimage/common/fsimage_plugin.h
+++ b/tools/libfsimage/common/fsimage_plugin.h
@@ -38,7 +38,7 @@ typedef struct fsi_plugin fsi_plugin_t;
typedef struct fsi_plugin_ops {
int fpo_version;
- int (*fpo_mount)(fsi_t *, const char *);
+ int (*fpo_mount)(fsi_t *, const char *, const char *);
int (*fpo_umount)(fsi_t *);
fsi_file_t *(*fpo_open)(fsi_t *, const char *);
ssize_t (*fpo_read)(fsi_file_t *, void *, size_t);
diff --git a/tools/libfsimage/common/fsimage_priv.h b/tools/libfsimage/common/fsimage_priv.h
index cf0dfe6612..441b71930a 100644
--- a/tools/libfsimage/common/fsimage_priv.h
+++ b/tools/libfsimage/common/fsimage_priv.h
@@ -53,7 +53,7 @@ struct fsi_file {
void *ff_data;
};
-int find_plugin(fsi_t *, const char *);
+int find_plugin(fsi_t *, const char *, const char *);
#ifdef __cplusplus
};
diff --git a/tools/libfsimage/ext2fs-lib/ext2fs-lib.c b/tools/libfsimage/ext2fs-lib/ext2fs-lib.c
index aa8e7a63f4..36a27dc028 100644
--- a/tools/libfsimage/ext2fs-lib/ext2fs-lib.c
+++ b/tools/libfsimage/ext2fs-lib/ext2fs-lib.c
@@ -27,7 +27,7 @@
#include <inttypes.h>
static int
-ext2lib_mount(fsi_t *fsi, const char *name)
+ext2lib_mount(fsi_t *fsi, const char *name, const char *options)
{
int err;
char opts[30] = "";
diff --git a/tools/libfsimage/ext2fs/fsys_ext2fs.c b/tools/libfsimage/ext2fs/fsys_ext2fs.c
index c3749df222..4a8f595f43 100644
--- a/tools/libfsimage/ext2fs/fsys_ext2fs.c
+++ b/tools/libfsimage/ext2fs/fsys_ext2fs.c
@@ -321,7 +321,7 @@ ffz (unsigned long word)
/* check filesystem types and read superblock into memory buffer */
int
-ext2fs_mount (fsi_file_t *ffi)
+ext2fs_mount (fsi_file_t *ffi, const char *options)
{
int retval = 1;
diff --git a/tools/libfsimage/reiserfs/fsys_reiserfs.c b/tools/libfsimage/reiserfs/fsys_reiserfs.c
index 4b99149735..d1fd3efa1f 100644
--- a/tools/libfsimage/reiserfs/fsys_reiserfs.c
+++ b/tools/libfsimage/reiserfs/fsys_reiserfs.c
@@ -633,7 +633,7 @@ journal_init (fsi_file_t *ffi)
/* check filesystem types and read superblock into memory buffer */
int
-reiserfs_mount (fsi_file_t *ffi)
+reiserfs_mount (fsi_file_t *ffi, const char *options)
{
struct reiserfs_super_block super;
int superblock = REISERFS_DISK_OFFSET_IN_BYTES >> SECTOR_BITS;
diff --git a/tools/libfsimage/ufs/fsys_ufs.c b/tools/libfsimage/ufs/fsys_ufs.c
index f1cb917c8c..d187dbf414 100644
--- a/tools/libfsimage/ufs/fsys_ufs.c
+++ b/tools/libfsimage/ufs/fsys_ufs.c
@@ -44,7 +44,7 @@ static grub_daddr32_t sbmap(fsi_file_t *, grub_daddr32_t);
/* read superblock and check fs magic */
int
-ufs_mount(fsi_file_t *ffi)
+ufs_mount(fsi_file_t *ffi, const char *options)
{
if (/*! IS_PC_SLICE_TYPE_SOLARIS(current_slice) || */
!devread(ffi, UFS_SBLOCK, 0, UFS_SBSIZE, (char *)SUPERBLOCK) ||