|
@@ -33,12 +33,17 @@
|
|
|
#include <config.h>
|
|
|
#include <command.h>
|
|
|
|
|
|
+#include "../fs/ubifs/ubifs.h"
|
|
|
+
|
|
|
static int ubifs_initialized;
|
|
|
static int ubifs_mounted;
|
|
|
|
|
|
+extern struct super_block *ubifs_sb;
|
|
|
+
|
|
|
/* Prototypes */
|
|
|
int ubifs_init(void);
|
|
|
int ubifs_mount(char *vol_name);
|
|
|
+void ubifs_umount(struct ubifs_info *c);
|
|
|
int ubifs_ls(char *dir_name);
|
|
|
int ubifs_load(char *filename, u32 addr, u32 size);
|
|
|
|
|
@@ -67,6 +72,26 @@ int do_ubifs_mount(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+int do_ubifs_umount(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
|
+{
|
|
|
+ if (argc != 1)
|
|
|
+ return cmd_usage(cmdtp);
|
|
|
+
|
|
|
+ if (ubifs_initialized == 0) {
|
|
|
+ printf("No UBIFS volume mounted!\n");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ubifs_sb)
|
|
|
+ ubifs_umount(ubifs_sb->s_fs_info);
|
|
|
+
|
|
|
+ ubifs_sb = NULL;
|
|
|
+ ubifs_mounted = 0;
|
|
|
+ ubifs_initialized = 0;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
int do_ubifs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
|
{
|
|
|
char *filename = "/";
|
|
@@ -131,6 +156,12 @@ U_BOOT_CMD(
|
|
|
" - mount 'volume-name' volume"
|
|
|
);
|
|
|
|
|
|
+U_BOOT_CMD(
|
|
|
+ ubifsumount, 1, 0, do_ubifs_umount,
|
|
|
+ "unmount UBIFS volume",
|
|
|
+ " - unmount current volume"
|
|
|
+);
|
|
|
+
|
|
|
U_BOOT_CMD(
|
|
|
ubifsls, 2, 0, do_ubifs_ls,
|
|
|
"list files in a directory",
|