summaryrefslogtreecommitdiffstats
path: root/fuse/dircache.h
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2009-10-30 16:13:13 +0000
committerRichard Jones <rjones@redhat.com>2009-11-03 15:57:26 +0000
commit429de2254176e470035eef05e0f3e9910d46863c (patch)
treecf278abb7fba6de900b049e289c06df424ea88cc /fuse/dircache.h
parent08c9bf5e22ecf06e36cf128416a62214704da411 (diff)
downloadlibguestfs-429de2254176e470035eef05e0f3e9910d46863c.tar.gz
libguestfs-429de2254176e470035eef05e0f3e9910d46863c.tar.xz
libguestfs-429de2254176e470035eef05e0f3e9910d46863c.zip
FUSE filesystem support.
This implements FUSE filesystem support so that any libguestfs- accessible disk image can be mounted as a local filesystem. Note: file writes (ie. write(2) system call) is not yet implemented. The API needs more test coverage, particularly lesser-used system calls. The big unresolved issue is UID/GID mapping between guest filesystem IDs and the host. It's not easy to automate this because you need extra details about the guest itself in order to get to its UID->username map (eg. /etc/passwd from the guest).
Diffstat (limited to 'fuse/dircache.h')
-rw-r--r--fuse/dircache.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/fuse/dircache.h b/fuse/dircache.h
new file mode 100644
index 00000000..adc117ec
--- /dev/null
+++ b/fuse/dircache.h
@@ -0,0 +1,44 @@
+/* guestmount - mount guests using libguestfs and FUSE
+ * Copyright (C) 2009 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Derived from the example program 'fusexmp.c':
+ * Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
+ *
+ * This program can be distributed under the terms of the GNU GPL.
+ * See the file COPYING.
+ */
+
+#ifndef GUESTMOUNT_DIRCACHE_H
+#define GUESTMOUNT_DIRCACHE_H 1
+
+#include <time.h>
+#include <sys/stat.h>
+#include <guestfs.h>
+
+extern void init_dir_caches (void);
+extern void free_dir_caches (void);
+extern void dir_cache_remove_all_expired (time_t now);
+extern void dir_cache_invalidate (const char *path);
+
+extern int lsc_insert (const char *path, const char *name, time_t now, struct stat const *statbuf);
+extern int xac_insert (const char *path, const char *name, time_t now, struct guestfs_xattr_list *xattrs);
+extern int rlc_insert (const char *path, const char *name, time_t now, char *link);
+extern const struct stat *lsc_lookup (const char *pathname);
+extern const struct guestfs_xattr_list *xac_lookup (const char *pathname);
+extern const char *rlc_lookup (const char *pathname);
+
+#endif /* GUESTMOUNT_DIRCACHE_H */