mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-01 02:21:16 +00:00
bad6663f24
This is a wrap-up of three patches pending upstream approval. I'm bundling them because they are interdependent, and it'll be easier to drop it on rebase later. 1. dm: allow a dm-fs-style device to be shared via dm-ioctl Integrates feedback from Alisdair, Mike, and Kiyoshi. Two main changes occur here: - One function is added which allows for a programmatically created mapped device to be inserted into the dm-ioctl hash table. This binds the device to a name and, optional, uuid which is needed by udev and allows for userspace management of the mapped device. - dm_table_complete() was extended to handle all of the final functional changes required for the table to be operational once called. 2. init: boot to device-mapper targets without an initr* Add a dm= kernel parameter modeled after the md= parameter from do_mounts_md. It allows for device-mapper targets to be configured at boot time for use early in the boot process (as the root device or otherwise). It also replaces /dev/XXX calls with major:minor opportunistically. The format is dm="name uuid ro,table line 1,table line 2,...". The parser expects the comma to be safe to use as a newline substitute but, otherwise, uses the normal separator of space. Some attempt has been made to make it forgiving of additional spaces (using skip_spaces()). A mapped device created during boot will be assigned a minor of 0 and may be access via /dev/dm-0. An example dm-linear root with no uuid may look like: root=/dev/dm-0 dm="lroot none ro, 0 4096 linear /dev/ubdb 0, 4096 4096 linear /dv/ubdc 0" Once udev is started, /dev/dm-0 will become /dev/mapper/lroot. Older upstream threads: http://marc.info/?l=dm-devel&m=127429492521964&w=2 http://marc.info/?l=dm-devel&m=127429499422096&w=2 http://marc.info/?l=dm-devel&m=127429493922000&w=2 Latest upstream threads: https://patchwork.kernel.org/patch/104859/ https://patchwork.kernel.org/patch/104860/ https://patchwork.kernel.org/patch/104861/ BUG: 27175947 Signed-off-by: Will Drewry <wad@chromium.org> Review URL: http://codereview.chromium.org/2020011 Change-Id: I92bd53432a11241228d2e5ac89a3b20d19b05a31
86 lines
1.5 KiB
C
86 lines
1.5 KiB
C
#include <linux/kernel.h>
|
|
#include <linux/blkdev.h>
|
|
#include <linux/init.h>
|
|
#include <linux/syscalls.h>
|
|
#include <linux/unistd.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/mount.h>
|
|
#include <linux/major.h>
|
|
#include <linux/root_dev.h>
|
|
|
|
void change_floppy(char *fmt, ...);
|
|
void mount_block_root(char *name, int flags);
|
|
void mount_root(void);
|
|
extern int root_mountflags;
|
|
|
|
static inline int create_dev(char *name, dev_t dev)
|
|
{
|
|
sys_unlink(name);
|
|
return sys_mknod(name, S_IFBLK|0600, new_encode_dev(dev));
|
|
}
|
|
|
|
#if BITS_PER_LONG == 32
|
|
static inline u32 bstat(char *name)
|
|
{
|
|
struct stat64 stat;
|
|
if (sys_stat64(name, &stat) != 0)
|
|
return 0;
|
|
if (!S_ISBLK(stat.st_mode))
|
|
return 0;
|
|
if (stat.st_rdev != (u32)stat.st_rdev)
|
|
return 0;
|
|
return stat.st_rdev;
|
|
}
|
|
#else
|
|
static inline u32 bstat(char *name)
|
|
{
|
|
struct stat stat;
|
|
if (sys_newstat(name, &stat) != 0)
|
|
return 0;
|
|
if (!S_ISBLK(stat.st_mode))
|
|
return 0;
|
|
return stat.st_rdev;
|
|
}
|
|
#endif
|
|
|
|
#ifdef CONFIG_BLK_DEV_RAM
|
|
|
|
int __init rd_load_disk(int n);
|
|
int __init rd_load_image(char *from);
|
|
|
|
#else
|
|
|
|
static inline int rd_load_disk(int n) { return 0; }
|
|
static inline int rd_load_image(char *from) { return 0; }
|
|
|
|
#endif
|
|
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
|
|
int __init initrd_load(void);
|
|
|
|
#else
|
|
|
|
static inline int initrd_load(void) { return 0; }
|
|
|
|
#endif
|
|
|
|
#ifdef CONFIG_BLK_DEV_MD
|
|
|
|
void md_run_setup(void);
|
|
|
|
#else
|
|
|
|
static inline void md_run_setup(void) {}
|
|
|
|
#endif
|
|
|
|
#ifdef CONFIG_BLK_DEV_DM
|
|
|
|
void dm_run_setup(void);
|
|
|
|
#else
|
|
|
|
static inline void dm_run_setup(void) {}
|
|
|
|
#endif
|